python转成c语⾔_从Python到CIL(C中间语⾔)的翻译我最近在Python源代码上进⾏了静态分析.
我们⼩组中已经有⽤Ocaml编写的CIL(C中间语⾔)静态分析器.我们要重⽤此分析器,因此我们的理想⽅法是将Python转换为CIL.
当前,我使⽤Python内置的ast模块将Python解析为Python AST.然后,我将ast.打印的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的转换中是否选择了错误的⽅法?
是否有其他任何可以满⾜我要求的⼯具或⽅法?
如果我有什么想念的,请指出对我有很⼤帮助.
谢谢.python代码转换
解决⽅法:
我认为这不会很好地⼯作. CIL本质上只是C语⾔.为了使您的技巧起作⽤,您已经将Python完全转换为C …,但是语⾔的概念⾮常不同.您将如何为Python对象建模?继续吗?动态负载?运⾏时输⼊?⽆限精度的算术?我认为您的问题不是AST.⽽是它们是概念性的.
如果您可以翻译成CIL,那么现在您将遇到⼀个新问题.当容易到需要查的结构时,分析器更易于构建.⼀旦将延续翻译为C,就很难对与延续的交互进⾏推理,因为它们不容易识别.
我想我会花精⼒尝试构建易于检测Python概念的Python静态分析器.
标签:abstract-syntax-tree,cil,ocamlyacc,ocamllex,python
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论