上篇文章:用
pycparser解析C语言踩坑记录
简单的使用参考GitHub库中给的example即可。如果想要进行深度使用,可以参考c_ast.py和_c_ast.cfg文件,在里面详细描述了不同类型节点的定义。接下来我会对此详细描述,并介绍这些节点的用法。
所有类型的节点都是由Node类继承而来,例如
1.Pycparser介绍
项目链接:https://github.com/eliben/pycparser
Pycparser是C语言的解析器,支持完整的C99标准,用纯Python编写。
非常方便对C语言源码的解析和处理,如生成AST、提取源码中函数调用关系等。
Pycparser非常容易上手,需重点阅读examples目录和c_ast.py文件
2.源码解读
c_ast.py文件解读
_c...
python使用pycparser库将c语言程序转变为抽象语法树(ast)
pycparser库github地址:
https://github.com/eliben/pycparser
from __future__ import print_function
from pycparser.c_ast import *
from util.remove_zs import rm_emptyline, rm_includeline, rmCommentsInCFile
sys.path.ex
这篇文章根据上一篇的内容做补充:
python环境做
C语言分析-
pycparser的使用方法(1)
这里介绍简单的
pycparser使用方法,提供一种 遍历 抽象
语法树AST 节点c_ast.py的方法,不用去对抽象
语法树每一种节点的属性做条件判断,就能遍历成序列的形式,可以说是:
c语言代码->
pycparser的AST节点类->AST遍历序列
c语言代码->AST节点
这里展示不使用gcc或llvm编译器处理#include或#define的方法,如果想处理这些语句可以看上一篇文章。
pycparser是python的一个用于解析C语言的第三方库,相比于LLVM、CDT等安装使用过程较为简洁,它的官方开源库为https://github.com/eliben/pycparser。以下步骤记录我的安装和初步使用过程
没什么好说的,直接
pip install pycparser
如果遇到下图错误,有可能是网络原因,可以尝试 -i 添加镜像再下载
pip install pycparser -i http://pypi.douban.com/simple/ .
用
Python编写的C
解析器和解释器。 还包括一个自动的ctypes接口生成器。
它比C
语法宽松,也就是说,它通常应该支持
C语言的超集。
由于目前我并没有严格遵守
语言规范,而是通过对真实源代码的迭代改进来改进
解析器,因此某些支持此时可能有点不完整或错了。
解析器/ ctypes接口生成器:
。 使用纯
Python完成C99
解析器。 它取决于 。 (我尚未对其进行测试。似乎是最完整,最专业的项目。如果您不想要C解释器,则可能是您应该使用的项目。)
( )。 速度很慢,对我来说效果不佳。
。 也使用Lex + Yacc。
。 使用GCC-XML。 关于这种方法的弊端,请参见下文。
。
Python。
。 不在
Python中。 可能是最著名的。
不在
Python中。 并不是真正的免费。
。 不在
Python中。
。 不在
Python中。 “一个很小的C解释器。”
。 不在
Python中。
为什么要这个项目?
更加灵活。 现在,使用手写
解析器在
解析管道的某些级别上执行操作要容易得多。
我想要一些独立的代码,这