我需要使用pycparser解析一个开源项目Postgresql。你知道吗
在分析其源代码时,出现以下错误:
Traceback (most recent call last):
File "examples\using_cpp_libc.py", line 48, in <module>
getAllFiles(projectName)
File "examples\using_cpp_libc.py", line 29, in getAllFiles
ast = parse_file(dirName+'\\'+fname, use_cpp = True, cpp_path = 'cpp',
cpp_args = [r'-nostdinc',r'-Iutils/fake_libc_include',r'-
Iprojects/postgresql/src/include'])
File "G:\python\pycparser-master\pycparser\__init__.py", line 92, in
parse_file
return parser.parse(text, filename)
File "G:\python\pycparser-master\pycparser\c_parser.py", line 152, in parse
debug=debuglevel)
File "G:\python\pycparser-master\pycparser\ply\yacc.py", line 334, in parse
return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)
File "G:\python\pycparser-master\pycparser\ply\yacc.py", line 1204, in
parseopt_notrack
tok = call_errorfunc(self.errorfunc, errtoken, self)
File "G:\python\pycparser-master\pycparser\ply\yacc.py", line 193, in
call_errorfunc
r = errorfunc(token)
File "G:\python\pycparser-master\pycparser\c_parser.py", line 1838, in
p_error
column=self.clex.find_tok_column(p)))
File "G:\python\pycparser-master\pycparser\plyparser.py", line 67, in
_parse_error
raise ParseError("%s: %s" % (coord, msg))
pycparser.plyparser.ParseError:
projects/postgresql/src/include/pg_config_os.h:366:15: before:
pgwin32_signal_event
我使用的是postgresql-9.6.9,在windows 10(64位)上使用visual studio express 2017构建
你在评论中引用的博客文章是规范的资源。解析大型C项目并不容易-它们有自己的怪癖-因此需要工作。我怀疑它在堆栈溢出问题的范围内是可以解决的。你知道吗
您需要一个接一个地开始解决问题—例如,看看
pgwin32_signal_event
中的pg_config_os.h
标记—为什么不能解析它?也许它的类型是无法比拟的?它被定义了吗?它可以被添加到一个“假”标题等不幸的是,没有简单的方法可以做到这一点,除了通过工作一个接一个的问题。你知道吗一定要先对要解析的文件进行预处理,将完整的预处理版本转储到一个
.c
文件中—这会将所有类型放入一个您可以使用的文件中。你知道吗相关问题 更多 >
编程相关推荐