我最近在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

python语言翻译-从Python到CIL(C中间语言)的翻译相关推荐

  1. python语言程序设计教程-Python语言程序设计(视频教程)

    -- 为什么要学习计算机编程? -- 因为编程是件很有趣的事儿,能启迪思维,还有诗和远方... Python语言,由Guido van Rossum大牛在1990年发明,它是当今世界最受欢迎的计算机编 ...

  2. Python语言学习:python语言代码调试—异常处理之详细攻略

    Python语言学习:python语言代码调试-异常处理之详细攻略 目录 python语言代码调试-异常处理 异常捕捉可以使用 try/except 语句 相关文章 Python3 错误和异常 | 菜 ...

  3. Python语言学习:python编程之pip命令集合、python调式、头部代码、代码运行等常见概念详细攻略(解决问题为导向)

    Python语言学习:python编程之pip命令集合.python调式.头部代码.代码运行等常见概念详细攻略(解决问题为导向) 目录 一.pip命令集合 1.pip常规命令 1.1  pip下载se ...

  4. python语言学习:python语言学习中的定义类、定义函数、封装api等详细攻略

    python语言学习:python语言学习中的定义类.定义函数.封装api等详细攻略 目录 python语言学习中的定义类 python语言学习中的定义函数 python语言学习中封装api pyth ...

  5. Python语言学习:Python常用自带库(imageio、pickle)简介、使用方法之详细攻略

    Python语言学习:Python常用自带库(imageio.pickle)简介.使用方法之详细攻略 目录 imageio简介及其常见使用方法 pickle简介及其常见使用方法 简介 使用方法 简介及 ...

  6. Python语言学习:python语言的特点、入门、基础用法之详细攻略

    Python语言学习:python语言的特点.入门.基础用法之详细攻略 相关内容 Python 基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python ...

  7. python语言的读法-Python语言的特点及自学建议

    Python语言的特点 Python语言是一种被广泛使用的高级通用脚本编程语言,具有很多区别于其他语言的特点,这里仅列出如下一些重要特点. (1)语法简洁:实现相同功能,Python语言的代码行数仅相 ...

  8. Python语言学习:Python语言学习之硬件交互应用(arduino、树莓派等)相关的简介、案例应用之详细攻略

    Python语言学习:Python语言学习之硬件交互应用(arduino.树莓派等)相关的简介.案例应用之详细攻略 目录 Python与硬件交互应用 1.适合运行python的嵌入式硬件系统 1.1. ...

  9. python程序设计作业_CS602留学生作业代做、代写Programming课程作业、代做Python语言作业、Python编程设计作业调试...

    CS602留学生作业代做.代写Programming课程作业.代做Python语言作业.Python编程设计作业调试 日期:2019-12-06 10:50 CS602 - Data-Driven D ...

  10. 【期末课设】python爬虫基础与可视化,使用python语言以及支持python语言的第三方技术实现爬虫功能,定向爬取网页的图片数据,并且实现批量自动命名分类下载。

    1.大作业的内容 本要求使用python语言以及支持python语言的第三方技术实现爬虫功能,定向爬取网页的图片数据,并且实现批量自动命名分类下载. 2.案例需求 要求采用虚拟浏览器等动态爬虫技术,完 ...

最新文章

  1. python 调用函数 开销_参数中带有函数的Python日志记录开销
  2. SMOTE 过采样的API使用
  3. ET.parse 中文
  4. ACDSee Photo Studio Ultimate 2020中文版
  5. liunx系统内核安装图形化界面
  6. 使用WildFly 9和Jolokia监视DevOps样式
  7. 21.判断栈弹出顺序是否正确
  8. Mysql 查询本周的数据
  9. php微信支付回调验证
  10. 企业风险管理的基本流程
  11. w ndows10家庭版和企业版谁好用,Windows10系统哪个版本好?Win10家庭版和专业版的区别介绍...
  12. 漫画:头条面试官谈自我介绍
  13. Alkyne-PEG-COOH 炔烃PEG羧基
  14. css 文字第二行省略号,第二行的css省略号
  15. 模式识别基本概念小结(学习笔记)
  16. 如何禁止福昕阅读器改变PDF页面缩放比例?
  17. 爬取网站某网站所有通知
  18. 交换机的基本原理(特别是动态ARP、静态ARP、代理ARP)
  19. STM32逆变器电源设计方案,基于STM32F103控制器
  20. R语言Sys.Date函数获取当前日期、将独立的年、月、日、时间、分钟、秒信息转化为对应的时间信息

热门文章

  1. C# Task的使用
  2. Angular2 富文本编辑器 ng2-ckeditor 的使用
  3. Hibernate criteria 增加排序项
  4. HDU 4121 Xiangqi --模拟
  5. Hadoop Streaming框架使用(三)
  6. python网络爬虫开发从入门到精通pdf-Python 3网络爬虫开发实战PDF高清完整版下载...
  7. 在开课吧学python的经历-“你毕业2年,为什么写3年的工作经验?”“加班啊”...
  8. 自学python什么时候能够兼职-总结下我是如何利用python在闲余时间月赚5千外快...
  9. python的第三方库-Python第三方库安装和卸载
  10. python官网安装步骤-Python解释器的安装步骤