初学ANTLR4(一)

发布时间 2023-04-09 22:36:35作者: TianyiLi-Tone

初次接触ANTLR,我是根据 《antlr4权威指南》这本书进行了解,并将自己所学,所感总结与此。

0.相关资料

  • 关于官网:ANTLR官网
  • 关于书籍:《ANTLR4权威指南》

1.关于ANTLR4

ANTLR是一款强大的语法分析器生成工具,用于读取,处理,执行和翻译结构化的文本或二进制文件。对于初学者的我,目前还不清楚ANTLR能干什么,但随着学习和了解的加深,我相信我们会慢慢地感受到它的强大。

2.安装ANTLR4

因为ANTLR4是以Java编写的,因此若想使用它,则需要安装Java的运行环境,对于使用Java编程的读者们来说,一般情况下会使用IDE来编程。书中很多例子都是以命令行的形式,但对于我来说,我通常会使用IDEA,本文中,我会以IDEA来举例。

以IEDA中插件的方式

吹一波IntelliJ IDEA,对于Java编程的读者们来说(包括我),是真的好用。

文件->设置->插件 中搜索ANTLR4,安装后重启IDEA即可。至于利用命令行的形式,书中讲得很详细,这里不多赘述。

3.HelloWorld程序

编写一个HelloWorld程序,是一个程序员接触新技术的开始,当然我也是初学者,信仰不可跳过。书中是以命令行的方式,在这里,我想通过IDEA的方式实现。本节的内容,便是构建一个简单的Hello.g4语法文件并进行测试。

在IDEA中,创建一个文件名为Hello.g4的文件。并将书中关于Hello的例子写到这个新建的文件中。


书中的例子如下:

// Define a grammar called Hello
grammar Hello;
r  : 'Hello' ID ;         // 定义一个名为Hello的语法
ID : [a-z]+ ;             // 匹配一个关键字Hello和一个紧随其后的标识符
WS : [ \t\r\n]+ -> skip ; // 忽略空格,Tab,换行符以及 \r(Windows)

完成后的效果如下:

接下来,对着新建的文件点击右键,可以看到下方有两个选项。

Generate ANTLR Recognizer :这个选项的功能就是用过ANTLR工具,运行Hello.g4文件。在书中与输入antlr4 Hello等价。

Configure ANTLR... :这个选项的功能就是对ANTLR工具进行一些相关设置。

我们点击Generate ANTLR Recognizer选项,可以发现生成了一个Gen文件夹,里面多出了许多文件。

对Hello.g4文件运行ANTLR工具命令(就是点击了Generate ANTLR Recognizer选项),我们得到了许多看起来很厉害的文件,目前不知道它们有什么作用,我们会在以后逐渐了解它们。目前我们的程序暂时还跑不起来,不用着急,在构建一个真正的实际的程序之前,我们还需要了解如何调试我们所写的语法:Hello.g4文件。书中有介绍,ANTLR在运行库中提供了一种名为TestRig的调试工具。可以无需构建main程序来测试语法(语法,可以理解为我们所写的.g4文件),但这是基于命令行的方式,很详细,这里不赘述。在IDEA中,我们可以通过以下方式测试:

在Hello.g4中,将鼠标点击到r : 'Hello' ID ; // 定义一个名为Hello的语法这一行,然后按下鼠标右键,在选项中,会出现一个叫做Test Rule r的选项。

完成后的效果如下:

关于测试界面的使用随着以后的深入会渐渐的了解,现在大体上是知道了语法文件(Hello.g4文件)的创建,使用ANTLR工具命令生成文件,以及测试语法的界面,可以开启下一阶段的学习啦。