bariumbitmap bariumbitmap - 1 year ago 128
C Question

pycparser.plyparser.ParseError on complex struct

I'm trying to use

to parse this C code:

A repo with a minimal example and Makefile is here:

v2.14 (from pip) and gcc 4.9.2 on Debian Jessie.

Things I have tried:

  • Pass the
    flag to
    and including the

  • Use
    to take out GCC extensions

  • Use fake headers for e.g.

  • Use the
    in case the code is not C99 compatible.

  • Reproduce the redis example in case there is something weird with my machine.

This is what the traceback looks like:

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

The traceback points to this line:

Which in turn points to this

Answer Source

The cause appears to be the offsetof() function. The minimal working examples are fixed by recent commits, however:

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download