Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python解析C代码_Python_Parsing - Fatal编程技术网

用python解析C代码

用python解析C代码,python,parsing,Python,Parsing,我有一个巨大的C文件(~100k行),我需要能够解析它。我主要需要能够从每个结构的定义中获得关于每个结构的各个字段的详细信息(比如结构中每个字段的字段名和类型)。有没有一种好的(开源的,我可以在我的代码中使用的)方法可以做到这一点?或者我应该为此编写自己的解析器。如果我必须写我自己的,有人能建议一个好的开始的地方吗?我以前从未使用过python 感谢查看Python可用的大量解析工具列表。具体地说,对于解析c代码,请尝试正确的方法几乎肯定是与现有编译器(如gcc)的前端接口,然后使用中间表示,而

我有一个巨大的C文件(~100k行),我需要能够解析它。我主要需要能够从每个结构的定义中获得关于每个结构的各个字段的详细信息(比如结构中每个字段的字段名和类型)。有没有一种好的(开源的,我可以在我的代码中使用的)方法可以做到这一点?或者我应该为此编写自己的解析器。如果我必须写我自己的,有人能建议一个好的开始的地方吗?我以前从未使用过python


感谢

查看Python可用的大量解析工具列表。具体地说,对于解析c代码,请尝试

正确的方法几乎肯定是与现有编译器(如gcc)的前端接口,然后使用中间表示,而不是尝试用任何语言创建自己的解析器


然而,正如Dhara所建议的那样,它很可能是一个很好的替代品,而且肯定比你自己的任何尝试都要好。

你能发布一个样本吗?您需要测试C编译器吗(并且支持联合、结构中的结构、typedef、预处理器等,或者只是从简单的结构中获取数据?有些东西告诉我,这个C文件应该是JSON、CSV、数据库或其他数据格式,而不是100k LOC C文件……而且你可能以前也没有编写过C解析器。你自己不想这样做;C非常复杂。)e比你想象的复杂:宏、预处理器条件、包含、歧义语法、供应商特定语法、符号表构造……找到一个已经过广泛验证的现有C解析器并使用它,即使C解析器不是用Python实现的。如果你想用Python处理结果,可以,但不要混淆Python的解决方案[“我以前从来没有用Python工作过”不是一个很好的方式,它会导致成功。]我建议你考虑GCXML,它包含一个C解析器并输出你想要的XML数据类型。