如何用Python 3.x的ast模块解析Python 2.x?
1 个回答
8
不行,ast
模块只能处理与它一起发布的Python版本的代码。这是因为在后台,它使用的是同一个解析器来把你的Python代码编译成字节码;ast
模块只是给你提供了一个中间的抽象语法树(AST)。这个解析器没有“向后兼容”的模式。
如果你想解析不同版本的Python源代码,你需要自己实现一个解析器。看起来Jedi(一个Python自动补全库)就是走的这条路。
在查看SublimeCodeIntel的CodeIntel2打包时,我发现这个包的Python和Python 3解析器是基于SilverCity的,它有Python绑定。也许这个项目可以作为你自己项目的一个合适起点。