을 사용했습니다. 구문 분석하려는 C 코드의 pycparser에 포함 된 헤더에 문제가 발생했습니다. 일부 신비한 이유 때문에 일부 가짜 헤더가 제대로 작동하고 다른 헤더도 제대로 작동하지 않습니다. 예를 들어, stdint.h를 포함하면 pycparser는 문제없이 코드를 파싱 할 수 있습니다. 그러나 stdio.h로 시도하면 오류가 발생합니다. 따라서 예제 코드에서 pycparser (using_gcc_E_libc.py)와 함께 제공된 예제 코드가 작동하지 않습니다!#include pycparser를 사용하여
이 인용 된 예제 코드에 사용되는 것입니다 :
ast = parse_file(filename, use_cpp=True,
cpp_path='gcc',
cpp_args=['-E', r'-I../utils/fake_libc_include'])
이것이 내가 오류입니다 :
누군가가이 일이 왜 나를 이해하는 데 도움이 그리고 내가 어떻게 해결할 수
Traceback (most recent call last):
File "/home/patatarte/pycparser/examples/using_gcc_E_libc.py", line 29, in <module>
cpp_args=['-E', r'-I../utils/fake_libc_include'])
File "/usr/lib/python3.4/site-packages/pycparser/__init__.py", line 93, in parse_file
return parser.parse(text, filename)
File "/usr/lib/python3.4/site-packages/pycparser/c_parser.py", line 138, in parse
debug=debuglevel)
File "/usr/lib/python3.4/site-packages/pycparser/ply/yacc.py", line 265, in parse
return self.parseopt_notrack(input,lexer,debug,tracking,tokenfunc)
File "/usr/lib/python3.4/site-packages/pycparser/ply/yacc.py", line 1047, in parseopt_notrack
tok = self.errorfunc(errtoken)
File "/usr/lib/python3.4/site-packages/pycparser/c_parser.py", line 1631, in p_error
column=self.clex.find_tok_column(p)))
File "/usr/lib/python3.4/site-packages/pycparser/plyparser.py", line 54, in _parse_error
raise ParseError("%s: %s" % (coord, msg))
pycparser.plyparser.ParseError: /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/include/stdarg.h:40:27: before: __gnuc_va_list
그거야?
미리 감사드립니다.
안녕하세요, 나는'gcc -E' 만 사용하고 가짜 헤더를 C 코드에 직접 포함 시키려고했습니다! 이제'-I 옵션이 실패한 이유를 이해할 수 없습니다 ... 또한, pycparser가 "실제"시스템 헤더를 구문 분석 할 수있는 방법을 알려주시겠습니까? 감사 ! – patatarte