Antlr4入门(安装、配置、简单实例)
2020.5.28
仅本人初次使用Antlr4的经历分享
目前所知有3种使用Antlr4的方式:
- 通过命令行使用;
- 在Eclipse中安装Antlr4插件;(个人不推荐,原因:antlr4插件下载也有许多问题)
- 在Intellij IDEA中安装Antlr4插件。
本文仅分享第一种方式。
什么是Antlr4?
Antlr4 (ANother Tool for Language Recognition), 是一个强大的跨语言语法解析器,可以用来读取、处理、执行或翻译结构化文本或二进制文件。它被广泛用来构建语言,工具和框架。Antlr可以从语法上来生成一个可以构建和遍历解析树的解析器。Antlr4简易快速入门 - 知乎 (zhihu.com)
ANTLR 是用JAVA写的语言识别工具,它用来声明语言的语法,简称为“元语言”(meta-language)。Antlr4 入门 - 虾米&老黄牛 - 博客园 (cnblogs.com)
Antlr4是一款开源的语法分析器生成工具,能够根据语法规则文件生成对应的语法分析器。现在很多流行的应用和开源项目里都有使用,比如Hadoop、Hive以及Pig等都在使用ANTLR来做语法分析。Antlr4 —入门介绍_04stone37-CSDN博客_antlr4
Antlr4 是一款开源的框架,用来分析语法。使用者可以自己创建语法规则文件,然后使用 antlr4 生成类文件。这些类实现了将语句按照关键字分词,然后将分词构造成一棵树。使用者在这些类之上封装代码,就可以实现自己的功能。antlr4 使用原理 | 学习笔记 (zhmin.github.io)
**简介概括一下,Antlr4大致就是一个语法分析器生成器
**。
安装、配置Antlr4
-
确定已安装jdk、jre
配置方法在这里就不赘述了,网上有很多方法。
关于我的安装如下(截止2020.5.28都是最新版本):
C:\Program Files\Java\jdk-16.0.1
C:\Program Files (x86)\Java\jre1.8.0_291
-
配置jdk的环境变量(不赘述)
-
下载Antler4
下载网址:https://www.antlr.org/download/
选择 Tool and Java runtime lib 目录下的 antlr-4.9.2-complete.jar 下载。
我的安装路径选择是:
C:\Javalib\antlr-4.9.2-complete.jar
-
测试Antlr4是否能正常运行
在 antlr-4.9.2-complete.jar 所在路径下打开命令行窗口。
输入:
java -jar antlr-4.9.2-complete.jar
若结果如下:
则Antlr4成功安装。
-
配置批处理文件以便捷Antlr4的使用
在 antlr-4.9.2-complete.jar 所在目录下新建两个 批处理(Batch)文件 ,文件后缀为
.bat
。
在 antlr4.bat 中写入:
java -classpath C:\Javalib\antlr-4.9.2-complete.jar org.antlr.v4.Tool %*
在 grun.bat 中写入:
java -classpath .;C:\Javalib\antlr-4.9.2-complete.jar org.antlr.v4.gui.TestRig %*
(注意:-classpath
可以替换成 -cp
;在 grun.bat 中 路径前要包括 .;
。)
-
测试批处理文件是否能成功运行
在 antlr-4.9.2-complete.jar 所在路径下打开命令行窗口。
分别输入:
antlr4
grun
若结果如下:
则两个批处理文件配置成功。
-
为了使两个批处理命令可以在其他目录运行,我们需要配置环境变量
步骤:(win10)设置 -> 系统 -> 关于 -> (右上角)高级系统设置 -> 环境变量 ->系统变量。
在系统变量 CLASSPATH 中添加:
C:\Javalib\antlr-4.9.2-complete.jar;
如:
在系统变量PATH中添加:
C:\Javalib
简单实例运行
1.(随便在哪)新建一个文件夹 hello 用来存放接下来的示例
因为之后创建的词法、文法分析器都 import 了 antlr-4.9.2-complete.jar 中 **org **文件中的内容。
故我们需要把 antlr-4.9.2-complete.jar 解压,将其中 org 文件拷贝出来,放在 hello 文件夹下。
(小羊不才,暂时没有发现针对这个问题更好的解决方法)
2. 新建文档,命名为 Hello.g4 (这就是我们要写入文法规则的地方)
3. 在 Hello.g4 里写入一个简单的文法:
// Define a grammar called Hello
grammar Hello;
r : 'hello' ID ; // match keyword hello followed by an identifier
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
4. 然后在 Hello.g4 所在目录打开cmd,按如下顺序输入并运行:
-
antlr4 Hello.g4
如下:
然后该目录下出现了一系列文件:
接下来把
.java
文件编译成.class
文件。 -
javac *.java
生成的
.class
文件:
-
(last but not least)最后有一些易忽略的细节,先输入:
grun Hello r -gui
cmd显示:
光标在最下面闪,提示我们输入待分析的样例,
此处输入:
hello world
然后回车,再
Ctrl
+Z
,再回车,如下:
此时弹出语法分析树的图形窗口,实例结束。
感想
其实还有很多细节多不知道其确切意义,但总之算是一顿捣鼓让antlr4动起来了。
希望能和遇到一样问题的人有所交流,一同探讨最好的解决办法。
此外,若有错误,欢迎大家指出、批评。
若有其他问题,也欢迎在评论区留言。
参考:
安装ANTLR-ANTLR 4简明教程 (cntofu.com)