如何解析C头文件?

时间:2009-12-23 08:36:07

标签: python c

有没有人知道在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 */

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

4 个答案:

答案 0 :(得分:23)

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

https://github.com/eliben/pycparser

答案 1 :(得分:12)

Have a look at this C++ header parser written in Python。您也可以使用以下任何工具编写自己的解析器:

答案 2 :(得分:8)

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

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

答案 3 :(得分:4)

出于同样的目的,我正在考虑pyclibrary, 它不是一个完整的C解析器,但它的目的是解析C头文件,因此它比pycparser或一些基于gccxml的解析器更容易使用:虽然记录很少,但只需尝试CParser.py testHeader.h,你就会看到它有效。

取决于pyparsing,据我所知,它是纯粹的python。