ANTLR未生成ParserBase模块,Python3解析CPP14代码报错求助
解决ANTLR生成Python代码后
ModuleNotFoundError: No module named 'CPP14ParserBase'的问题 问题根源
你使用的CPP14语法定义中,CPP14Parser.g4依赖了CPP14ParserBase.g4这个基础语法文件,但你只生成了Lexer和Parser的代码,没有处理这个依赖文件,导致运行时找不到对应的模块。
解决步骤
- 生成基础模块代码:在你下载的cpp语法目录中找到
CPP14ParserBase.g4文件,执行以下命令生成对应的Python代码:
执行后会生成antlr4 -Dlanguage=Python3 CPP14ParserBase.g4CPP14ParserBase.py、CPP14ParserBaseListener.py等依赖文件。 - 统一文件目录:将所有生成的文件(
CPP14Lexer.py、CPP14Parser.py、CPP14ParserBase.py及相关Listener/Visitor文件)放在驱动代码所在的同一目录,或者将这些文件的路径添加到Python的sys.path中,确保解释器能找到它们。 - 检查导入语句:确认驱动代码中的导入逻辑正确,示例如下:
如果用到了Listener或Visitor,也要对应导入生成的相关文件。from CPP14Lexer import CPP14Lexer from CPP14Parser import CPP14Parser from CPP14ParserBase import CPP14ParserBase - 重新运行驱动代码:完成上述操作后,再次运行你的解析驱动代码即可解决模块找不到的问题。
内容的提问来源于stack exchange,提问作者Vedanta Mohapatra
相关产品推荐
相关产品推荐

