Pycparser对注释失败

2024-04-20 09:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图使用pycparser来分析带有注释的文件时,我得到了ParseError

import pycparser
parser = pycparser.CParser()
parser.parse("int main(void){return 0;}")
parser.parse("/* comment */ int main(void){return 0;}")


Traceback (most recent call last):
File "test_pycparser.py", line 18, in <module> parser.parse("/* comment */ int main(void){return 0;}")
File "build\bdist.win32\egg\pycparser\c_parser.py", line 124, in parse
File "build\bdist.win32\egg\pycparser\ply\yacc.py", line 265, in parse
File "build\bdist.win32\egg\pycparser\ply\yacc.py", line 1047, in parseopt_notrack
File "build\bdist.win32\egg\pycparser\c_parser.py", line 1423, in p_error
File "build\bdist.win32\egg\pycparser\plyparser.py", line 54, in _parse_error
pycparser.plyparser.ParseError: :1:1: before: /

解决方案当前版本中的pycparser不支持源代码中的注释,但this fork允许这样做,或者您可以使用问题Python snippet to remove C and C++ comments中的配方从源代码中删除注释。在

^{pr2}$

Tags: inpybuildparserreturnparseeggmain
1条回答
网友
1楼 · 发布于 2024-04-20 09:27:59

实际上,pycparser不解析注释或与C预处理器相关的任何内容(在常规的C编译器中,预处理器在编译器看到注释之前先剥离注释)。在

要防止注释扰乱解析,请首先通过预处理器运行代码,如pycparser README中所建议的那样。不幸的是,要真正有意义地解析注释(并获取其内容),pycparser并不是正确的工具。在

相关问题 更多 >