我使用pycparser来解析c代码,对于我的测试文件,它工作得很好。我在cpp和头文件方面遇到了一些问题,所以我使用了一个外部cpp,并将预处理器的输出提供给pycparser。对于我的测试文件,它可以正常工作,但是对于来自真实软件项目的文件,我会得到一个错误。
ast = parse_file("layer2.c.o", use_cpp=False)错误消息:
File "/usr/local/lib/python2.7/dist-packages/pycparser/c_parser.py", line 1613, in p_error
column=self.clex.find_tok_column(p)))
File "/usr/local/lib/python2.7/dist-packages/pycparser/plyparser.py", line 54, in _parse_error
raise ParseError("%s: %s" % (coord, msg)) raise ParseError("%s: %s" % (coord, msg))
pycparser.plyparser.ParseError: /usr/include/stdint.h:58:1: before: __extension__有人知道这个问题吗?
发布于 2013-11-17 07:02:22
请参阅关于__extension__的FAQ。一般来说,我看到您正在尝试解析包含的标准标头。如果您使用pycparser附带的“假”C头,您的工作将会轻松得多。Details here。
https://stackoverflow.com/questions/18851104
复制相似问题