代码之家  ›  专栏  ›  技术社区  ›  David

pycparser分析错误

  •  0
  • David  · 技术社区  · 8 年前

    我正在尝试创建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 回复  |  直到 8 年前
        1
  •  0
  •   David    8 年前

    来自pyCparser git常见问题解答:

    C代码几乎总是包含来自标准C库的各种头文件,如stdio。h、 虽然(通过一些努力)pycparser可以解析任何C编译器的标准头,但在UTIL/fake\u libc\u include中使用提供的“fake”标准include要简单得多。这些是标准的C头文件,只包含允许对使用它们的文件进行有效解析的基本必要条件。

    为了解决这个问题,我成功地使用了所描述的方法 here