有没有人知道在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脚本解析此结构(并可能修改它)。
答案 0 :(得分:23)
昨天在SO上提到过;我还没有机会更彻底地检查它,但我的意思是。 pycparser
,一个用Python编写的“C语法分析器和AST生成器”。
答案 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。