用于在 Python 中编程抽象语法树的库

发布于 2024-08-16 01:39:47 字数 160 浏览 6 评论 0原文

我正在创建一棵树来表示一种简单的语言。我非常熟悉抽象语法树,并致力于在 C++ 中构建和使用它们的框架。是否有用于指定或操作任意 AST 的标准 python 库?如果做不到这一点,是否有一个可用于相同目的的树库?

请注意,我没有操作 Python AST,因此我认为 AST 模块不合适。

I'm creating a tree to represent a simple language. I'm very familiar with Abstract Syntax Trees, and have worked on frameworks for building and using them in C++. Is there a standard python library for specifying or manipulating arbitrary ASTs? Failing that, is there a tree library which is useful for the same purpose?

Note, I am not manipulating Python ASTs, so I think the AST module isn't suitable.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

面如桃花 2024-08-23 01:39:47

在 Python 中实现 AST 非常简单。例如,对于我的 pycparser 项目(Python 中的完整 C 解析器),我已经根据想法实现了 AST借用Python的模块。各种 AST 节点在 YAML 配置文件中指定,我在 Python 本身中为这些节点生成 Python 代码。

ASTs are very simple to implement in Python. For example, for my pycparser project (a complete C parser in Python) I've implemented ASTs based on ideas borrowed from Python's modules. The various AST nodes are specified in a YAML configuration file, and I generate Python code for these nodes in Python itself.

平定天下 2024-08-23 01:39:47

pyast 是一个用于构建声明性抽象语法树的包。

pyast is a package for building declarative abstract syntax trees.

生生不灭 2024-08-23 01:39:47

如果在 pyparsing 中将语法元素表示为表达式,则可以将解析操作附加到每个表达式,该表达式返回一个类实例,其中包含特定于解析器的类型中的已解析标记。 pyparsing wiki 上有几个示例说明了这种技术(invRegex.py、simpleBool.pyevalArith.py)。 (这些语法都使用了内置的operatorPrecedence,这会掩盖一些语法结构,但是

If you represent your grammar elements as expressions in pyparsing, you can attach a parse action to each expression which returns a class instance containing the parsed tokens in a parser-specific type. There are a couple of examples on the pyparsing wiki that illustrate this technique (invRegex.py, simpleBool.py and evalArith.py). (These grammars all use the operatorPrecedence built-in, which can obscure some of the grammar structure, but

野生奥特曼 2024-08-23 01:39:47

这篇博客文章虽然缺乏实现细节,但描述了 Python AST 可以实现的一个很好的接口。

http://chris-lamb.co.uk /2006/12/08/visitor-pattern-in-python/

This blog entry, though short on implementation detail, describes a nice interface that Python ASTs could implement.

http://chris-lamb.co.uk/2006/12/08/visitor-pattern-in-python/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文