我想解析 Python 源代码,以便尝试制作一个从 Python 到 Go 的基本源代码转换器。
- 我应该使用什么模块?
- 我应该继续还是不继续?
- 如果我应该继续,怎么做?
我想解析 Python 源代码,以便尝试制作一个从 Python 到 Go 的基本源代码转换器。
至于“我应该继续还是最好不要”的问题:你为什么要首先这样做?
如果是纯粹的学习练习,那你就不用问我们值不值得了。你想学,那就继续吧。
如果它是一个实用的工具,那么我的建议是不要这样做。执行此类转换的工业级工具可能很有用,但我猜你不会走那么远。考虑到这一点,在 Go 中手动重写 Python 代码可能更有成效。
假设编译到 Go 有任何真正的好处;当前的测试表明,使用 Stackless Python 可以获得更好的性能和类似的代码结构。
嘘解决方案
您是否正在尝试制作一种可以编译成 Go的类似 python 的语言?这似乎是最明智的,因为您将想做特定于 Go 的事情(以利用 Go 功能)。
看看pyparsing。它包含一个完整的 python 解析器示例,但您可能不想这样做。
您想逐步构建转换器/翻译器,因此您希望逐步构建解析器,否则您可能会在 AST 上窒息。好的,您可以解析所有内容并忽略您不理解的内容,但这不是编译器的好行为。
您可以从解析基本算术开始。
Pyrex 解决方案
这类似于 Boo 解决方案,但要困难得多。首先让 Boo 解决方案发挥作用。然后学习生成包装器代码,以便您的 Go 和 python 部分可以一起工作。
PyPy 解决方案
一个完整的 Python-Go 编译器?祝你好运。你会需要它。
Ned Batchelder整理了一份很好的解析器列表,可能会有所帮助。