从我的研究看来,Python中Python代码的主要CFG生成器似乎是PyPy流模型(http://doc.pypy.org/en/latest/objspace.html#the-flow-model),但似乎有使用RPython的限制。大多数限制并不妨碍CFG的生成,但也有一些限制,例如限制内置类型的循环和生成器限制。
CPython似乎在compile.c中生成一个“完整的”CFG,然后从中发出它的字节码。但是这一切都是用C完成的,而到目前为止我的工作都是用Python完成的。从CPython中提取CFG似乎也需要一些黑客攻击。
用Python实现的Python代码没有'完整'的CFG生成器吗?
我并不完全反对自己构建一个与ast模块联系的想法,但我想确保在深入了解之前了解所有选项。