ANTLR4详细介绍(一)windows环境下的安装配置
Antlr 是一款强大的语法生成器工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件,也是目前Java领域最流行的语法解析工具,Hibernate、Hive、ShardingSphere等众多框架都能看到它的影子。Antlr支持多种语言:Java、C、C++、Python、Javascript,同一套语法规则可以通过多种语言来实现。本系列将以Java作为描述语言来介绍antlr的安装和环境
Antlr 是一款强大的语法生成器工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件,也是目前Java领域最流行的语法解析工具,Hibernate、Hive、ShardingSphere等众多框架都能看到它的影子。
Antlr支持多种语言:Java、C、C++、Python、Javascript,同一套语法规则可以通过多种语言来实现。本系列将以Java作为描述语言来介绍antlr的安装和环境配置。
资源
Antlr官方网址: https://www.antlr.org/
Antlr在线编辑解析工具: http://lab.antlr.org/
各类语言、协议、标准语法模板: https://github.com/antlr/grammars-v4/
官方文档(中、英文): https://download.csdn.net/download/coffen2046/90035178
Jar包方式安装
Antlr4从 4.10 版本起需要JDK11环境支持,如须在JDK8环境使用则最高只能选择 4.9.3 版本。官方提供antlr-4.x-complete的jar包(https://www.antlr.org/download.html)下载,该jar既包含编译工具、也包含运行时环境,此外还附带StringTemplate(官方自家的模板引擎)等,可以直接编译语法文件并进行语法解析。
下载antlr-4.x-complete包到指定目录(文中示例配置路径为D:\Antlr),官方提供了两个工具类用于编译和测试规则文件,通过两个脚本文件分别封装命令如下:
antlr4.bat(用于编译词法规则、语法规则,即将语法规则转换为Java源文件)
@ECHO OFF
SET TEST_CURRENT_DIR=%CLASSPATH:.;=%
if "%TEST_CURRENT_DIR%" == "%CLASSPATH%" ( SET CLASSPATH=.;%CLASSPATH% )
@ECHO ON
java org.antlr.v4.Tool %*
grun.bat(用于测试解析规则,运行前需完成语法编译及生成Java源文件的编译)
@ECHO OFF
SET TEST_CURRENT_DIR=%CLASSPATH:.;=%
if "%TEST_CURRENT_DIR%" == "%CLASSPATH%" ( SET CLASSPATH=.;%CLASSPATH% )
@ECHO ON
java org.antlr.v4.gui.TestRig %*
注: 上述脚本需要添加antlr-4.x-complete包至系统环境变量classpath中,如果生成java源文件目录和complete包所在路径不是同一目录,也需添加到classpath中。也可以采用java -cp的方式修改上述脚本内容。
安装完成,最终的文件目录如下图所示,src目录即生成java文件的目录,两个g4文件分别是词法规则和语法规则文件,两个bat文件为脚本运行文件,test.txt为测试文件
环境部署完成,则可以通过下面的命令完成编译和测试
D:\Antlr>.\antlr4.bat .\TestLexer.g4 -o ./src
D:\Antlr>.\antlr4.bat .\TestParser.g4 -o ./src
D:\Antlr>javac .\src\*.java
D:\Antlr>.\grun.bat Test root test.txt -gui
结果展示如下图
Maven插件配置
通过jar包的方式调试太不方便,只适合试手。实际开发工作中还是要通过IDE插件或Maven插件完成自动化编译部署,下面就介绍maven插件的配置方式。
首先引入antlr的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
...
<properties>
<java-version>1.8</java-version>
<antlr4-version>4.9.3</antlr4-version>
</properties>
<dependencies>
...
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
<version>${antlr4-version}</version>
</dependency>
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4</artifactId>
<version>${antlr4-version}</version>
</dependency>
</dependencies>
...
</project>
配置antlr4-maven-plugin插件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
...
<build>
...
<plugins>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>${antlr4-version}</version>
<executions>
<execution>
<id>antlr</id>
<goals>
<goal>antlr4</goal>
</goals>
<phase>none</phase>
</execution>
</executions>
<configuration>
<arguments>
<!-- 命令行参数 -package ${package} 定义生成java代码的包名-->
<argument>-package</argument>
<argument>net.coffen.router.antlr4</argument>
<!-- 输出生成的Java源码文件位置, 这里的输出文件夹定义一定要与上面 -package 定义的包名匹配 -->
<argument>-o</argument>
<argument>src/main/java/net/coffen/router/antlr4</argument>
</arguments>
<!-- 语法文件存放目录 --><sourceDirectory>${basedir}/src/main/resources/antlr4</sourceDirectory>
<!-- 是否生成Listener -->
<listener>true</listener>
<!-- 是否生成Visitor -->
<visitor>false</visitor>
<!-- 告警即视作错误, 生成失败 -->
<treatWarningsAsErrors>false</treatWarningsAsErrors>
</configuration>
</plugin>
</plugins>
</build>
配置完成,即可通过IDE的maven操作菜单完成编译,也可通过下面的命令行方式运行生成:
> cd test-project
> mvn org.antlr:antlr4-maven-plugin:antlr4
IDE集成Antlr插件
IDEA
1. 插件安装及右键菜单
2. 插件配置
3. 测试界面
Eclipse
插件安装时可能会因为网络原因出现报错,这里介绍安装步骤和报错解决的方法
注: 安装antlr插件时可能遇到网络报错的情况,需要在C:\Windows\System32\drivers\etc\hosts文件末尾添加一行配置。其中 xxx.xxx.xxx.xxx 代表 raw.githubusercontent.com 对应的ip地址(可通过一些IP查询网站获得)
xxx.xxx.xxx.xxx raw.githubusercontent.com
Eclipse插件功能使用和IDEA插件相似,本文不再详述

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)