pycparser ParseError

时间:2018-03-06 10:31:15

标签: python c parsing pycparser

我正在尝试创建AST usinfg pyCparser, 打印出以下错误:

Traceback (most recent call last):
File "C:\Work\RE\Tools\VarsExporter\BuildExportedDb.py", line 1076, in 
main()
File "C:\Work\RE\Tools\VarsExporter\BuildExportedDb.py", line 1032, in main
ast = parse_file(i_file)
File "C:\Python27\lib\site-packages\pycparser_init_.py", line 93, in 
parse_file
return parser.parse(text, filename)
File "C:\Python27\lib\site-packages\pycparser\c_parser.py", line 152, in 
parse
debug=debuglevel)
File "C:\Python27\lib\site-packages\pycparser\ply\yacc.py", line 331, in 
parse
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
File "C:\Python27\lib\site-packages\pycparser\ply\yacc.py", line 1199, in 
parseopt_notrack
tok = call_errorfunc(self.errorfunc, errtoken, self)
File "C:\Python27\lib\site-packages\pycparser\ply\yacc.py", line 193, in 
call_errorfunc
r = errorfunc(token)
File "C:\Python27\lib\site-packages\pycparser\c_parser.py", line 1761, in 
p_error
column=self.clex.find_tok_column(p)))
File "C:\Python27\lib\site-packages\pycparser\plyparser.py", line 67, in _ 
parse_error
raise ParseError("%s: %s" % (coord, msg))
ParseError: Objectffly\SerDb.i:43:18: before: __loff_t

导致上述问题的原因是什么?我该如何处理? 任何建议我如何调试它,并找出正在发生的事情?

1 个答案:

答案 0 :(得分:0)

来自pyCparser git FAQ:

  

C代码几乎总是#includes来自标准C库的各种头文件,比如stdio.h。虽然(通过一些努力)pycparser可以解析任何C编译器的标准头文件,但使用提供的"假的"更简单。标准包含在utils / fake_libc_include中。这些是标准的C头文件,它们只包含允许有效解析使用它们的文件的必要条件。

要解决此问题,我已成功使用了here所述的方法。