ANTLRANTLR入门


备注

ANTLR(另一种语言识别工具)是一个功能强大的解析器生成器,用于读取,处理,执行或转换结构化文本或二进制文件。它广泛用于构建语言,工具和框架。从语法上,ANTLR生成一个可以构建和遍历解析树的解析器。

Antlr版本
Antlr分为两大部分:语法(语法文件)和生成的代码文件,它们源自基于目标语言的语法。 antlr版本的格式为V1.V2.V3:

  • V1:V1中的更改​​意味着在语法文件中引入了新的功能语法
  • V2:V2中的更改意味着在生成的文件中引入了新功能或主要修复(例如添加新功能)
  • V3:代表错误修复或小改进

运行时库和代码生成目标
Antlr工具是用Java编写的,但它能够生成各种语言的解析器和词法分析器。要运行解析器和词法分析器,您还需要将antlr的运行时库与解析器和词法分析器代码一起使用。支持的目标语言(和运行时库)如下:

  • Java的

  • C#

  • Python(2和3)

  • JavaScript的

版本

发布日期
2.0 1997-05-01
3.0 2011-01-19
4 2013年1月21日
4.1 2013-07-01
4.2 2014-02-05
4.2.1 2014年3月25日
4.2.2 2014年4月7日
4.3 2014-06-19
4.4 2014年7月16日
4.5 2015年1月23日
4.5.1 2016年7月16日
4.5.2 2016年1月30日
4.5.3 2016年3月31日
4.6 二〇一六年十二月十五日
4.7 2017年3月30日

你好,世界

这里可以找到一个简单的hello world语法:

// define a grammar called Hello
grammar Hello;
r   : 'hello' ID;
ID  : [a-z]+ ;
WS  : [ \t\r\n]+ -> skip ;
 

要构建此.g4示例,您可以从操作系统终端/命令行运行以下命令:

Java -jar antlr-4.5.3-complete.jar Hello.g4

//OR if you have setup an alias or use the recommended batch file

antlr4 Hello.g4
 

构建此示例应在Hello.g4文件目录中生成以下输出:

  1. Hello.tokens
  2. HelloBaseListener.java
  3. HelloLexer.java
  4. HelloLexer.tokens
  5. HelloListener.java
  6. HelloParser.java

在您自己的项目中使用这些文件时,请确保包含ANTLR jar文件。要使用Java,在同一个操作目录或路径中编译所有这些文件,请运行以下命令:

javac *.java