安装Java版的Antlr4

安装并不复杂,只需要前往官网下载完整的Jar包即可;这里我将其下载放置到了D:\Program Files\antlr目录下面;目前的版本是4.13.1Download 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这种句子,打印出worldjack出来。

语法文件

语法文件如下:

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已经安装完成。