编程语言
首页 > 编程语言> > 从Python到CIL(C中间语言)的翻译

从Python到CIL(C中间语言)的翻译

作者:互联网

我最近在Python源代码上进行了静态分析.
我们小组中已经有用Ocaml编写的CIL(C中间语言)静态分析器.我们要重用此分析器,因此我们的理想方法是将Python转换为CIL.

当前,我使用Python内置的ast模块将Python解析为Python AST.然后,我将ast.dump打印的Python AST转换为C AST.考虑到C AST to CIL API和静态分析器均以Ocaml编写.我选择Ocamllex& Ocamlyacc将Python AST解析为C AST.但是,存在一些大问题.

ast.dump打印的AST表示形式很难识别.这使我的解析器不容易实现.另一方面,我无法使用Ocaml来访问Python ast内部结构.即使我可以,数据结构也不同于Ocaml.

我想知道我在一开始从Python代码到C AST的转换中是否选择了错误的方法?
是否有其他任何可以满足我要求的工具或方法?

如果我有什么想念的,请指出对我有很大帮助.
谢谢.

解决方法:

我认为这不会很好地工作. CIL本质上只是C语言.为了使您的技巧起作用,您已经将Python完全转换为C …,但是语言的概念非常不同.您将如何为Python对象建模?继续吗?动态负载?运行时输入?无限精度的算术?我认为您的问题不是AST.而是它们是概念性的.

如果您可以翻译成CIL,那么现在您将遇到一个新问题.当容易找到需要查找的结构时,分析器更易于构建.一旦将延续翻译为C,就很难对与延续的交互进行推理,因为它们不容易识别.

我想我会花精力尝试构建易于检测Python概念的Python静态分析器.

标签:abstract-syntax-tree,cil,ocamlyacc,ocamllex,python
来源: https://codeday.me/bug/20191208/2091811.html