Я пытаюсь использовать pycparser
разобрать этот код C:pycparser.plyparser.ParseError на сложной структуры
РЕПО- с минимальным примером и Makefile здесь:
https://github.com/nbeaver/pycparser-problem
Использование pycparser
v2.14 (from pip) и gcc 4.9.2 на Debian Jessie.
вещи я попытался:
- Пропустите
-nostdinc
флагgcc
и включая папкуfake_libc_include
. - Использовать
-D'__attribute__(x)='
, чтобы вытащить расширения GCC - Используйте поддельные заголовки, например.
<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: .
The TraceBack точек этой линии:
в свою очередь, указывает на этот #define
макрос:
Я думаю, что вы должны отлаживать программное обеспечение питона в первую очередь. Здесь нет никакой конкретной проблемы с gcc. Вы должны добавить тэг python и позволить сообществу python помочь вам. –
Спасибо, я сделал это сейчас. – bariumbitmap
ваш код c компилируется и работает без python? почему вы не используете cffi? вы сообщили об этой проблеме в трекерах ply/pycparser? https://github.com/eliben/pycparser/issues/new https://github.com/dabeaz/ply/issues/new – denfromufa