如何通过命令行使用ANTLR生成Python语法树?
ANTLR4 命令行生成Python语法树的正确操作
你仿写命令失败的核心原因是Python语法的根规则名和Java不同,另外需要提前编译好Python3的词法、语法文件生成对应类,完整操作流程如下:
前置编译步骤(仅需执行一次,g4文件有更新时重新执行)
- 先用ANTLR工具根据g4文件生成Java代码
java -jar "D:\lib\antlr\antlr-4.9.2-complete.jar" Python3Lexer.g4 Python3Parser.g4
- 编译生成的Java代码为class文件
javac -cp ".;D:\lib\antlr\antlr-4.9.2-complete.jar" Python3*.java
生成语法树命令
和你之前用的Java命令逻辑一致,仅需要修改两个参数:TestRig后第一个参数为语法名Python3,第二个参数为Python语法的根规则file_input,完整命令如下:
java -cp ".;D:\lib\antlr\antlr-4.9.2-complete.jar" org.antlr.v4.gui.TestRig Python3 file_input 你的测试文件.py -tree
注意事项
- 执行上述命令的工作目录需要包含编译生成的Python3相关class文件,否则需要把class所在目录添加到
-cp的类路径中 - 如果需要可视化展示语法树,把命令末尾的
-tree替换为-gui即可 - 如果你使用的是Linux/macOS系统,类路径的分隔符需要从分号
;替换为冒号:
内容的提问来源于stack exchange,提问作者Jin Hc
相关产品推荐
相关产品推荐

