有没有人知道我可以用来从AST生成Python代码的工具?在
我已经成功地编写了一个标记器和一个解析器,但我正在寻找一种更具Python风格的方法来从中生成Python代码。
我以前使用过LLVMPY
,我想知道是否有类似的东西可以用来生成Python代码,而不是{
非常感谢您的建议:-)
编辑
这是Python-AST。它来自我自己的语言,所以我知道没有一个工具可以神奇地理解它。我只是在寻找一种能在生成Source Code
方面半途而废的东西。在
例如:
不是连接字符串来生成a = 1 + 2
,而是使用类似于a = builder.add(1,2)
的内容。基本上,任何可以让我省去手动生成字符串和处理缩进的痛苦的东西。有这样的吗?在
我已经有一个类在消耗AST,但我发现自己必须在任何地方都做这样的事情:
...
elif node.type == "Assign":
_buffer = self.descend(node.args[0])
_buffer += self.descend(node.args[1])
_buffer += self.descend(node.args[2])
return _buffer
elif node.type == "BinOp":
_buffer = self.descend(node.args[1])
_buffer += node.args[0]
_buffer += self.descend(node.args[2])
return _buffer
...
当我必须实现更大的对象,如Functions
和Classes
时,这会变得更加整洁。我只是想知道有没有更好的方法来做这件事。在
有一个python模块ast来实现这一点。如果您正在做自己的tokaniser,您可能只需要ast的evaluator和评估ast的compile()。还有一个unparser从ast生成python代码,可以在python源代码库中找到。unparse.py
相关问题 更多 >
编程相关推荐