如何解析C头文件?

waf*_*man 18 c python

有没有人知道在Python中使用C头文件的漂亮方式?例如,我有一个包含全局变量的C程序:

typedef struct ImageInfo
{
    uint8_t revisionMajor;
    uint8_t revisionMinor;
    uint16_t checksum;    

} ImageInfo;

ImageInfo gImageInfo;   /* Placed at a specific address by the linker */
Run Code Online (Sandbox Code Playgroud)

我希望能够获取C编译器/链接器生成的二进制文件,并使用Python脚本解析此结构(并可能修改它).

Mat*_*son 23

这是昨天提到的; 我还没有机会更彻底地检查它,但我的意思是.这pycparser是一个"用Python编写的C语法分析器和AST生成器".

https://github.com/eliben/pycparser


Vij*_*hew 12

看看用Python编写的这个C++头解析器.您也可以使用以下任何工具编写自己的解析器:


jkp*_*jkp 8

看看pygccxml.我用它来构建我的C/C++源代码的内存图,我可以将其用作许多代码生成任务的基础.

PS:当我第一次开始使用基于Python的代码生成时,我实际上尝试自己编写一个解析器:省去自己的痛苦,甚至不去那里!(看起来你已经知道了......)pygccxml是你想要的一切,更多:)


小智 5

出于相同的目的,我正在考虑pyclibrary,它不是一个完整的C解析器,但其目的是解析C头文件,因此它比pycparser或某些基于gccxml的解析器更容易使用:尽管文档薄弱,但是请尝试CParser.py testHeader.h并您将了解其运作方式。

取决于pyparsing,据我了解,它是纯python。