首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂结构上的pycparser.plyparser.ParseError

复杂结构上的pycparser.plyparser.ParseError
EN

Stack Overflow用户
提问于 2016-08-18 23:55:39
回答 1查看 831关注 0票数 3

我试图使用pycparser来解析这个C代码:

theta.c

下面是一个具有最小示例和Makefile的回购程序:

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

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

我尝试过的事情:

  • -nostdinc标志传递给gcc并包含fake_libc_include文件夹。
  • 使用-D'__attribute__(x)='取出GCC扩展
  • 在例如<sys/param.h>中使用假头
  • 如果代码与-std=c99不兼容,请使用C99。
  • 复制redis示例,以防我的机器有什么奇怪的地方。

这就是回溯的样子:

代码语言:javascript
复制
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: .

回溯指向这一行:

theta.c#L63

它反过来指向这个#define宏:

motor.h#L484

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-14 18:09:13

原因似乎是offsetof()函数。但是,通过最近的提交来确定最低限度的工作示例:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39029209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档