我正在创建一棵树来代表一种简单的语言。我非常熟悉抽象语法树,并且已经开发了用于在C ++中构建和使用它们的框架。是否有用于指定或操纵任意AST的标准python库?如果失败了,是否有一个树库可用于同一目的?
注意,我不是在操纵 Python ASTs ,所以我认为AST模块不合适。
答案 0 :(得分:7)
在Python中实现AST非常简单。例如,对于我的pycparser项目(Python中的完整C解析器),我已经基于从Python模块借用的想法实现了AST。各种AST节点在YAML配置文件中指定,我在Python本身为这些节点生成Python代码。
答案 1 :(得分:1)
pyast
是用于构建声明性抽象语法树的包。
答案 2 :(得分:0)
如果将语法元素表示为pyparsing中的表达式,则可以将解析操作附加到每个表达式,该表达式返回包含解析器特定类型中的已解析标记的类实例。在pyparsing wiki上有几个例子说明了这种技术(invRegex.py,simpleBool.py和evalArith.py)。 (这些语法都使用内置的operatorPrecedence,这可能会掩盖一些语法结构,但
答案 3 :(得分:0)
此博客条目虽然缺乏实现细节,但它描述了一个Python AST可以实现的漂亮界面。
http://chris-lamb.co.uk/2006/12/08/visitor-pattern-in-python/