gpt4 book ai didi

python - 复杂结构上的 pycparser.plyparser.ParseError

转载 作者:行者123 更新时间:2023-11-28 19:11:47 34 4
gpt4 key购买 nike

我正在尝试使用 pycparser解析此 C 代码:

https://github.com/nbeaver/mx-trunk/blob/0b80678773582babcd56fe959d5cfbb776cc0004/libMx/d_adsc_two_theta.c

这里有一个带有最小示例和 Makefile 的 repo:

https://github.com/nbeaver/pycparser-problem

使用 pycparser Debian Jessie 上的 v2.14(来自 pip)和 gcc 4.9.2。

我尝试过的事情:

  • 传递-nostdinc标记为 gcc并包括 fake_libc_include文件夹。
  • 使用-D'__attribute__(x)='取出 GCC 扩展
  • 使用假 header ,例如<sys/param.h>
  • 使用-std=c99以防代码与 C99 不兼容。
  • 重现 redis example以防我的机器出现异常。

这是回溯的样子:

Traceback (most recent call last):
File "just_parse.py", line 21, in <module>
parse(path)
File "just_parse.py", line 9, in parse
ast = pycparser.parse_file(filename)
File "/home/nathaniel/.local/lib/python2.7/site-packages/pycparser/__init__.py", line 93, in parse_file
return parser.parse(text, filename)
File "/home/nathaniel/.local/lib/python2.7/site-packages/pycparser/c_parser.py", line 146, in parse
debug=debuglevel)
File "/home/nathaniel/.local/lib/python2.7/site-packages/pycparser/ply/yacc.py", line 265, in parse
return self.parseopt_notrack(input,lexer,debug,tracking,tokenfunc)
File "/home/nathaniel/.local/lib/python2.7/site-packages/pycparser/ply/yacc.py", line 1047, in parseopt_notrack
tok = self.errorfunc(errtoken)
File "/home/nathaniel/.local/lib/python2.7/site-packages/pycparser/c_parser.py", line 1680, in p_error
column=self.clex.find_tok_column(p)))
File "/home/nathaniel/.local/lib/python2.7/site-packages/pycparser/plyparser.py", line 55, in _parse_error
raise ParseError("%s: %s" % (coord, msg))
pycparser.plyparser.ParseError: in/d_adsc_two_theta.c:63:82: before: .

回溯指向这一行:

https://github.com/nbeaver/mx-trunk/blob/0b80678773582babcd56fe959d5cfbb776cc0004/libMx/d_adsc_two_theta.c#L63

这又指向这个 #define宏观:

https://github.com/nbeaver/mx-trunk/blob/0b80678773582babcd56fe959d5cfbb776cc0004/libMx/mx_motor.h#L484

最佳答案

原因似乎是 offsetof() 函数。最小的工作示例由最近的提交修复,但是:

https://github.com/eliben/pycparser/issues/87

关于python - 复杂结构上的 pycparser.plyparser.ParseError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39029209/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com