准备Java环境,以下是我的Java版本,运行环境是win10
当然,你更要有Python3环境…
C:\Users\aaa>java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)
下载ANTLR tool
下载地址:https://www.antlr.org/download.html
执行下边的命令验证ANTLR安装是否正确
(假定下载的jar包在D:\tools下)
D:\tools>java -jar antlr-4.9.3-complete.jar
ANTLR Parser Generator Version 4.9.3
-o ___ specify output directory where all output is generated
-lib ___ specify location of grammars, tokens files
...
写一个简单的Antlr4文法
/tmp/test/Hello.g4
grammar Hello ;
r: 'hello' ID ;
ID: [a-z]+ ;
WD: [ \t\r\n]+ -> skip ;
使用antlr生成SQL.g4对应的词法分析器和语法分析器
Python3语言格式的, 目录下会生成HelloParser.py和HelloLexer.py
D:\tools>java -jar antlr-4.9.3-complete.jar -Dlanguage=Python3 Hello.g4
为方便使用,可将如下内容写入到批处理文件,并保存的批处理文件与jar包放在同一个目录
主要是上边的命令太长啦。。。
SET CLASSPATH=%~dp0antlr-4.9.3-complete.jar;.
doskey antlr4=java org.antlr.v4.Tool $*
doskey antlr4py3=java org.antlr.v4.Tool -Dlanguage=Python3 $*
doskey antlr4vpy3=java org.antlr.v4.Tool -Dlanguage=Python3 -no-listener -visitor $*
doskey grun=java org.antlr.v4.gui.TestRig $*
这样在执行批处理后,执行如下命令即可运行antlr生成HelloParser.py和HelloLexer.py
antlr4py3 Hello.g4 --同时生成监听器
antlr4vpy3 Hello.g4 --同时生成访问器
TestRig是非常好用的调试工具,批处理文件中我们将其命名为grun
grun的其他参数:
(venv) D:\PythonProjects\learnAntlr\001>grun
java org.antlr.v4.gui.TestRig GrammarName startRuleName
[-tokens] [-tree] [-gui] [-ps file.ps] [-encoding encodingname]
[-trace] [-diagnostics] [-SLL]
[input-filename(s)]
Use startRuleName='tokens' if GrammarName is a lexer grammar.
Omitting input-filename makes rig read from stdin.
-tokens 打印出词法符号流
-tree 以LISP格式打印出语法分析树
-gui 以可视化方式显示语法分析树
-ps files.ps 以PostScript格式生成可视化语法分析树
-trace 打印规则的名字以及进入和离开该规则时的词法符号
python环境中安装antlr4的运行时包antlr4-python3-runtime
注意这个python包的版本要与上边jar包的版本一致
pip install antlr4-python3-runtime
至此,Python中使用Antrl4的环境准备完毕