You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用Antlr4.7的JavaLexer和JavaParser提示未定义如何解决

解决方法

1. 安装匹配版本的ANTLR4 Python运行时

你使用4.7.1版本的ANTLR jar包生成Python代码,必须安装对应版本的运行时,否则会出现兼容错误:

pip install antlr4-python3-runtime==4.7.1

2. 补全导入语句

你生成的JavaLexer.py、JavaParser.py默认和语法文件在同一目录,先将这两个文件放到你的运行脚本同目录,或者将文件所在路径加入Python模块搜索路径,之后在代码开头导入对应的类即可。

3. 修正后的完整可运行代码

from antlr4 import InputStream, CommonTokenStream
from JavaLexer import JavaLexer
from JavaParser import JavaParser

# 读取Java源文件
with open("sample.java", "r", encoding="utf-8") as f:
    input_stream = InputStream(f.read())

# 词法分析、语法分析生成AST
lexer = JavaLexer(input_stream)
token_stream = CommonTokenStream(lexer)
parser = JavaParser(token_stream)
tree = parser.compilationUnit()

# 打印AST结构
print(tree.toStringTree(recog=parser))

额外注意事项

  • 如果生成的Lexer、Parser文件不在脚本当前工作目录,在导入前先添加路径:
    import sys
    # 替换为你的生成文件存放目录路径
    sys.path.append("/path/to/your/generated/files")
    
  • 不要混用不同版本的ANTLR jar包和Python运行时,否则会出现未知的类缺失、方法调用错误。

内容的提问来源于stack exchange,提问作者Jimmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:57:03