我想解析Python源代码,以便尝试从Python到Go的基本源代码转换器。
答案 0 :(得分:13)
查看language services个软件包,尤其是ast。
我的猜测是,如果你还没有完全掌握解析和代码生成技术,那么这将是一个艰难的项目。
祝你好运!答案 1 :(得分:3)
Boo解决方案
您是否正在尝试使用类似python的语言,可以编译成Go?这似乎是最明智的,因为你会想要做Go特定的事情(利用Go功能)。
看看pyparsing。它包含a complete python parser的示例,但您可能不想这样做。
您希望逐步构建转换器/转换器,因此您希望逐步构建解析器,否则可能会阻塞AST。好的,你可以解析所有内容,只是忽略你不理解的东西,但这不是编译器的好行为。
您可以从解析basic arithmetic开始。
Pyrex解决方案
这类似于Boo解决方案,但更难。让Boo解决方案先行。然后学习生成包装器代码,这样你的Go和python部分可以一起工作。
PyPy解决方案
完整的Python-Go编译器?祝好运。你需要它。
答案 2 :(得分:3)
关于'我应该继续还是更好'的问题:你为什么要首先这样做?
如果这是纯粹的学习练习,那么你不需要问我们是否值得。你想学习,所以就这样吧。
如果它是一个实用的工具,那么我的建议是不要这样做。执行此类转换的工业级工具可能很有用,但我猜你不会走得那么远。考虑到这一点,手动重写Go代码中的Python代码可能会更有成效。
这假设编译为Go有任何实际好处; current testing suggests使用Stackless Python可以获得更好的性能和类似的代码结构。
答案 3 :(得分:2)
Ned Batchelder有一个很好的解析器列表,可能会有所帮助。