安装Java版的Antlr4
安装并不复杂,只需要前往官网下载完整的Jar包即可;这里我将其下载放置到了D:\Program Files\antlr
目录下面;目前的版本是4.13.1
,Download ANTLR。
编写启动脚本
接下来为了能够方便的调用antlr4,需要写一些启动脚本,这些脚本也放入到D:\Program Files\antlr
,注意需要将这个目录加入Path。
antlr.bat
此脚本用于调用antlr4
的命令行工具,代码如下:
java -cp "D:\Program Files\antlr\antlr-4.13.1-complete.jar;%CLASSPATH%" org.antlr.v4.Tool %*
cpantlr.bat
此脚本用于编译生成或自己编辑的Java代码,如下:
javac -cp "D:\Program Files\antlr\antlr-4.13.1-complete.jar;%CLASSPATH%" %*
grun.bat
此脚本用于自动测试写的语法文件,如下:
java -cp "D:\Program Files\antlr\antlr-4.13.1-complete.jar;%CLASSPATH%" org.antlr.v4.gui.TestRig %*
runantlr.bat
此脚本用于运行自己的Java字节码,如下:
java -cp "D:\Program Files\antlr\antlr-4.13.1-complete.jar;%CLASSPATH%" %*
运行Antlr4并测试识别程序
首先实现一个简单的识别程序,对于hello world
或者hello jack
这种句子,打印出world
或jack
出来。
语法文件
语法文件如下:
grammar Hello; // 定义一个名为Hello的语法
r : 'hello' ID ; // 匹配一个hello关键字以及一个 ID
ID : [a-z]+ ; // ID实际为匹配小写字母组成的标识符
WS : [ \t\r\n]+ -> skip ; // 忽略空格、Tab、换行以及\r
将其放到文件夹中,执行antlr Hello.g4
,会生成大量的Java源码。
测试语法
上面的规则名为r
,于是测试执行:
echo "hello world" | grun Hello r -tokens
可以得到:
[@0,0:4='hello',<'hello'>,1:0]
[@1,6:10='world',<ID>,1:6]
[@2,13:12='<EOF>',<EOF>,2:0]
如果希望查看图形化的解析结果,则可以将-tokens
替换为-gui
;当能正常输出上述结果时,说明Antlr4已经安装完成。