2to3
工具,将Python 2代码自动转换为Python 3代码。该工具首先将代码解析为树形结构,然后从树形结构中输出“已修复”的Python 3代码。ast
生成Python代码。自动生成代码通常有以下几种方式:
在我看来,更好的做法是:
很少有人这样做,因为大多数工具都没有。
Python的2to3工具提供了(我认为)目标AST和漂亮打印。
但一个你没有问到的问题是“从什么生成?”你必须以抽象的方式指定要生成的内容(否则就不是赢了)。你的工具必须以某种方式能够读取该规范。
许多代码生成方案由调用上述生成机制的过程化代码编写而成;过程化代码充当隐式规范。阅读规范很“容易”;它只是代码生成器使用的语言中的代码。
一些代码生成方案使用某种图形结构来提供框架,以便挂载规范的片段,从而驱动代码生成。UML类图是一个经典的例子。这些方案并不容易实现,你需要一个“规范阅读器”(例如UML图表阅读器,也称为XMI或类似工具,或者如果你不使用UML,则需要某种规范解析器),然后你需要按照某种有用的顺序遍历刚刚读取的规范(UML是图形,可以有许多不同的访问方式),从而在代码生成步骤中进行调用。
ast
模块)? - Some programmer dudeast
模块的Python AST。我注意到ANTLR已经稍微适应了Python,这似乎是一种可行的方法,但坚持使用Python内部似乎更明智。 - mvanveen