如何用Python解析*.py文件?

3 投票
4 回答
3648 浏览
提问于 2025-04-15 16:20

我想解析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 编译器?祝你好运,你会需要它的。

14

看看这个语言服务的包,特别是ast

我猜如果你对解析和代码生成的技术还不太了解,这个项目会比较难做。

祝你好运!

撰写回答