从定制的抽象语法T生成Python代码

2024-07-05 14:52:05 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有人知道我可以用来从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
...

当我必须实现更大的对象,如FunctionsClasses时,这会变得更加整洁。我只是想知道有没有更好的方法来做这件事。在


Tags: 工具方法字符串代码标记selfnode解析器
1条回答
网友
1楼 · 发布于 2024-07-05 14:52:05

有一个python模块ast来实现这一点。如果您正在做自己的tokaniser,您可能只需要ast的evaluator和评估ast的compile()。还有一个unparser从ast生成python代码,可以在python源代码库中找到。unparse.py

相关问题 更多 >