python语言翻译-从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
python语言翻译-从Python到CIL(C中间语言)的翻译相关推荐
- python语言程序设计教程-Python语言程序设计(视频教程)
-- 为什么要学习计算机编程? -- 因为编程是件很有趣的事儿,能启迪思维,还有诗和远方... Python语言,由Guido van Rossum大牛在1990年发明,它是当今世界最受欢迎的计算机编 ...
- Python语言学习:python语言代码调试—异常处理之详细攻略
Python语言学习:python语言代码调试-异常处理之详细攻略 目录 python语言代码调试-异常处理 异常捕捉可以使用 try/except 语句 相关文章 Python3 错误和异常 | 菜 ...
- Python语言学习:python编程之pip命令集合、python调式、头部代码、代码运行等常见概念详细攻略(解决问题为导向)
Python语言学习:python编程之pip命令集合.python调式.头部代码.代码运行等常见概念详细攻略(解决问题为导向) 目录 一.pip命令集合 1.pip常规命令 1.1 pip下载se ...
- python语言学习:python语言学习中的定义类、定义函数、封装api等详细攻略
python语言学习:python语言学习中的定义类.定义函数.封装api等详细攻略 目录 python语言学习中的定义类 python语言学习中的定义函数 python语言学习中封装api pyth ...
- Python语言学习:Python常用自带库(imageio、pickle)简介、使用方法之详细攻略
Python语言学习:Python常用自带库(imageio.pickle)简介.使用方法之详细攻略 目录 imageio简介及其常见使用方法 pickle简介及其常见使用方法 简介 使用方法 简介及 ...
- Python语言学习:python语言的特点、入门、基础用法之详细攻略
Python语言学习:python语言的特点.入门.基础用法之详细攻略 相关内容 Python 基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python ...
- python语言的读法-Python语言的特点及自学建议
Python语言的特点 Python语言是一种被广泛使用的高级通用脚本编程语言,具有很多区别于其他语言的特点,这里仅列出如下一些重要特点. (1)语法简洁:实现相同功能,Python语言的代码行数仅相 ...
- Python语言学习:Python语言学习之硬件交互应用(arduino、树莓派等)相关的简介、案例应用之详细攻略
Python语言学习:Python语言学习之硬件交互应用(arduino.树莓派等)相关的简介.案例应用之详细攻略 目录 Python与硬件交互应用 1.适合运行python的嵌入式硬件系统 1.1. ...
- python程序设计作业_CS602留学生作业代做、代写Programming课程作业、代做Python语言作业、Python编程设计作业调试...
CS602留学生作业代做.代写Programming课程作业.代做Python语言作业.Python编程设计作业调试 日期:2019-12-06 10:50 CS602 - Data-Driven D ...
- 【期末课设】python爬虫基础与可视化,使用python语言以及支持python语言的第三方技术实现爬虫功能,定向爬取网页的图片数据,并且实现批量自动命名分类下载。
1.大作业的内容 本要求使用python语言以及支持python语言的第三方技术实现爬虫功能,定向爬取网页的图片数据,并且实现批量自动命名分类下载. 2.案例需求 要求采用虚拟浏览器等动态爬虫技术,完 ...
最新文章
- python 调用函数 开销_参数中带有函数的Python日志记录开销
- SMOTE 过采样的API使用
- ET.parse 中文
- ACDSee Photo Studio Ultimate 2020中文版
- liunx系统内核安装图形化界面
- 使用WildFly 9和Jolokia监视DevOps样式
- 21.判断栈弹出顺序是否正确
- Mysql 查询本周的数据
- php微信支付回调验证
- 企业风险管理的基本流程
- w ndows10家庭版和企业版谁好用,Windows10系统哪个版本好?Win10家庭版和专业版的区别介绍...
- 漫画:头条面试官谈自我介绍
- Alkyne-PEG-COOH 炔烃PEG羧基
- css 文字第二行省略号,第二行的css省略号
- 模式识别基本概念小结(学习笔记)
- 如何禁止福昕阅读器改变PDF页面缩放比例?
- 爬取网站某网站所有通知
- 交换机的基本原理(特别是动态ARP、静态ARP、代理ARP)
- STM32逆变器电源设计方案,基于STM32F103控制器
- R语言Sys.Date函数获取当前日期、将独立的年、月、日、时间、分钟、秒信息转化为对应的时间信息
热门文章
- C# Task的使用
- Angular2 富文本编辑器 ng2-ckeditor 的使用
- Hibernate criteria 增加排序项
- HDU 4121 Xiangqi --模拟
- Hadoop Streaming框架使用(三)
- python网络爬虫开发从入门到精通pdf-Python 3网络爬虫开发实战PDF高清完整版下载...
- 在开课吧学python的经历-“你毕业2年,为什么写3年的工作经验?”“加班啊”...
- 自学python什么时候能够兼职-总结下我是如何利用python在闲余时间月赚5千外快...
- python的第三方库-Python第三方库安装和卸载
- python官网安装步骤-Python解释器的安装步骤