如何用Python解析*.py文件?
我想解析Python的源代码,试着做一个简单的代码转换器,把Python代码转换成Go语言的代码。
- 我应该用哪个模块呢?
- 我该不该继续这个项目?
- 如果要继续,我该怎么做呢?
4 个回答
3
关于“我该继续做还是不做”的问题:你为什么想要做这个呢?
如果只是为了学习,那你根本不需要问我们这件事值不值得。你想学习,那就去做吧。
如果你是想做一个实用的工具,那我建议你不要去做。虽然一个工业级的工具来进行这种转换可能会有用,但我猜你可能不会做到那种程度。考虑到这一点,手动把Python代码改写成Go可能会更有意义。
这还假设编译成Go真的有好处;目前的测试表明,使用Stackless Python可以获得更好的性能和类似的代码结构。
3
Boo 方案
你想要做一个像 Python 的语言,然后把它编译成 Go 吗?这听起来很合理,因为你肯定想利用 Go 的一些特性。
可以看看 pyparsing。里面有一个 完整的 Python 解析器 的例子,但你可能不想直接用这个。
你应该逐步构建你的转换器/翻译器,所以也要逐步构建解析器。否则,你可能会在处理抽象语法树(AST)时遇到麻烦。好吧,你 可以 解析所有内容,然后忽略那些你不理解的部分,但这样做并不是一个好的编译器行为。
你可以先从解析 基本的算术运算 开始。
Pyrex 方案
这个方案和 Boo 方案类似,但要难得多。先把 Boo 方案搞定,然后学习如何生成包装代码,这样你的 Go 和 Python 部分就可以一起工作了。
PyPy 方案
想要一个完整的 Python-Go 编译器?祝你好运,你会需要它的。