用Python编写抽象语法树的库

用Python编写抽象语法树的库,python,abstract-syntax-tree,Python,Abstract Syntax Tree,我正在创建一棵树来表示一种简单的语言。我非常熟悉抽象语法树,并且已经在C++中构建和使用框架。是否有用于指定或操作任意AST的标准python库?如果做不到这一点,是否有一个树库可以用于相同的目的 注意,我没有操作Python AST,因此我认为AST模块不合适。AST在Python中实现起来非常简单。例如,对于我的项目(Python中完整的C解析器),我已经基于从Python模块中借用的思想实现了ASTs。各种AST节点在YAML配置文件中指定,我在Python中为这些节点生成Python代码

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


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

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

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

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


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

相当不错。我希望已经很好地抽象到库中的东西,以及文档等(没有冒犯)。我的语法只有6种类型,所以我自己写出来比较简单。我只是想可能有一个人们使用的标准库。@Paul,如果你想一想,使用AST的最好方法是为每个节点类型定义一个类。这是以后遍历树(使用NodeVisitor)的最多态、最简洁的方法考虑到Python中AST所需的代码太少,我怀疑是否需要库here@AndersonGreen:谢谢,刷新了主链接并删除了其他链接。本文提供了模式的良好实际实现:。