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

时间:2009-12-23 03:40:23

标签: python abstract-syntax-tree

我正在创建一棵树来代表一种简单的语言。我非常熟悉抽象语法树,并且已经开发了用于在C ++中构建和使用它们的框架。是否有用于指定或操纵任意AST的标准python库?如果失败了,是否有一个树库可用于同一目的?

注意,我不是在操纵 Python ASTs ,所以我认为AST模块不合适。

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

此博客条目虽然缺乏实现细节,但它描​​述了一个Python AST可以实现的漂亮界面。

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