2017年9月16日
本节主要是对ANTLR进行了简要说明,介绍了环境要求与如何下载运行,最后给出了一个Hello World的例子。
参考链接附在文末,主要参考《The Definitive ANTLR 4 Reference》,如有任何问题欢迎斧正。2017年9月22日
对本节的页面进行了一些调整。
一、 简介
1.1 ANTLR是什么
ANTLR(全名:ANother Tool for Language Recognition)是基于LL(*)算法实现的语法解析器生成器(parser generator),用Java语言编写,使用自上而下(top-down)的递归下降LL剖析器方法。
1.2 ANTLR历史
ANTLR最初叫做PCCTS(Purdue Compiler Construction Tool Set),是Terence Parr在普渡大学攻读硕士学位时的创作,在Hank Dietz教授的指导下,开始研究构造自动化的分析器。1993年,Parr取得博士学位,并于同年发布ANTLR 1.10版。最早的ANTLR只支持Java, 直到ANTLR 3以后开始支持Ada95、C、C#、JavaScript、Objective-C、Perl、Python、Ruby、C++和Standard ML。
1.3 ANTLR可以用来做什么
编程语言处理
识别和处理编程语言是 Antlr 的首要任务,编程语言的处理是一项繁重复杂的任务,为了简化处理,一般的编译技术都将语言处理工作分为前端和后端两个部分。其中前端包括词法分析、语法分析、语义分析、中间代码生成等若干步骤,后端包括目标代码生成和代码优化等步骤。
Antlr 致力于解决编译前端的所有工作。使用 Anltr 的语法可以定义目标语言的词法记号和语法规则,Antlr 自动生成目标语言的词法分析器和语法分析器;此外,如果在语法规则中指定抽象语法树的规则,在生成语法分析器的同时,Antlr 还能够生成抽象语法树;最终使用树分析器遍历抽象语法树,完成语义分析和中间代码生成。整个工作在 Anltr 强大的支持下,将变得非常轻松和愉快。
文本处理
当需要文本处理时,首先想到的是正则表达式,使用 Anltr 的词法分析器生成器,可以很容易的完成正则表达式能够完成的所有工作;除此之外使用 Anltr 还可以完成一些正则表达式难以完成的工作,比如识别左括号和右括号的成对匹配等。
二、 环境要求
由于ANTLR是由Java写成,所以在安装ANTLR前必须配置好Java环境。要求Java 1.6或以上的环境。
注:笔者采用的是macOS 10.12.6,JDK1.8。
三、 下载运行
3.1 下载
$ cd /usr/local/lib
$ curl -