《ANTLR 4权威指南》——第1章 初识ANTLR 1.1 安装ANTLR

第1章

初识ANTLR

在本书的第一部分中,我们的目标是大体上知道ANTLR能做什么。除此之外,我们还希望探究语言类应用程序的架构。在概览之后的第2章中,我们将会通过许多真实的例子来循序渐进地、系统性地学习ANTLR。在开始之前,我们需要首先安装ANTLR,然后尝试用它编写一份简单的“hello world”语法。

1.1 安装ANTLR

ANTLR是用Java编写的,因此你需要首先安装Java,哪怕你的目标是使用ANTLR来生成其他语言(如C#和C++)的解析器。(我希望在不远的未来ANTLR可以支持更多语言。)ANTLR运行所需的Java版本为1.6或更高。

安装ANTLR本身仅仅需要下载最新的jar包(例如antlr-4.0-complete.jar),然后把它放在合适的位置。该jar包包含了运行ANTLR的工具和编译、执行ANTLR产生的识别程序所依赖的全部运行库。它们有何区别呢?简而言之,ANTLR工具将语法文件转换成可以识别该语法文件所描述的语言的程序。例如,给定一个识别JSON的语法,ANTLR工具将会根据该语法生成一个程序,此程序可以通过ANTLR运行库来识别输入的JSON。

上述jar包还包含两个用于提供相关支持的库:一个复杂的树形结构生成库和StringTemplate,这一个用于生成代码和其他结构化文本的优秀的模板引擎。在ANTLR 4.0中,语法本身是通过ANTLR 3来识别的,所以上述完整版的jar包还包含ANTLR的早期版本。

你可以通过浏览器从ANTLR的网站下载ANTLR,或者使用命令行工具curl:

在UNIX上,/usr/local/lib非常适于存放jar包。在Windows上,似乎没有标准的存放jar包的目录,因此你可以简单地将它放在项目文件夹下。大多数开发环境要求你将jar包放在你的语言类应用程序的依赖列表中。不需要修改配置脚本或者配置文件之类的东西——你只需要保证Java能够找到这个jar包即可。

因为本书使用的是命令行,你需要担负设置CLASSPATH环境变量的重任。通过设置好的CLASSPATH环境变量,Java就能够找到ANTLR工具和运行库。在UNIX系统上,你可以手动执行以下命令或者将其添加到启动脚本中(对于bash命令行,就是.bash_profile):

注意,CLASSPATH中的点非常关键,它代表当前目录。没有它,Java编译器和Java虚拟机就无法加载当前目录的class文件。在本书中,所有的编译和测试都是在当前目录中进行的。

有两种方式可以检查ANTLR的安装是否正确,第一种是通过不带参数的ANTLR命令行工具,第二种是通过java -jar来直接运行ANTLR的jar包或者直接调用org.antlr.v4.Tool类。

每次都手动输入这些java命令是一件令人痛苦的事情,所以最好通过别名(alias)或者shell脚本的方式。本书接下来将会使用名为antlr4的别名,在类UNIX系统上的定义如下:

此外,也可以将上述命令写入/usr/local/bin。

在Windows上,可以通过如下批处理命令(假设ANTLR的jar包已经被放置在C:\libraries)实现:

不管用哪种方法,现在我们可以直接使用antlr4命令了。

如果你看到了和上面一样的帮助信息,证明一切就绪,可以开始接下来的ANTLR之旅了!

时间: 2025-01-10 23:34:31

《ANTLR 4权威指南》——第1章 初识ANTLR 1.1 安装ANTLR的相关文章

《ANTLR 4权威指南 》一导读

前 言 ANTLR是一款强大的语法分析器生成工具,可用于读取.处理.执行和翻译结构化的文本或二进制文件.它被广泛应用于学术领域和工业生产实践,是众多语言.工具和框架的基石.Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询:Hadoop生态系统中的Hive.Pig.数据仓库和分析系统所使用的语言都用到了ANTLR:Lex Machina将ANTLR用于分析法律文本:Oracle公司在SQL开发者IDE和迁移工具中使用了ANTLR:NetBeans公司的IDE使用ANTLR来解

《ANTLR 4权威指南 》一第一部分 Part 1

第一部分 Part 1 ANTLR 1ANTLR 2 3ANTLR 4 在第一部分中,我们会安装ANTLR,尝试通过它来识别一个简单的"hello world"语法,并概览语言类应用程序的开发过程.在此基础上,我们会构造一个语法来识别和翻译形如{1,2,3}的花括号中的一列整数.最后,我们将通过一系列的简单语法和程序来快速了解ANTLR的特性. 第1章 初识ANTLR 在本书的第一部分中,我们的目标是大体上知道ANTLR能做什么.除此之外,我们还希望探究语言类应用程序的架构.在概览之后

《ANTLR 4权威指南》——第1章初识ANTLR

第1章 初识ANTLR 在本书的第一部分中,我们的目标是大体上知道ANTLR能做什么.除此之外,我们还希望探究语言类应用程序的架构.在概览之后的第2章中,我们将会通过许多真实的例子来循序渐进地.系统性地学习ANTLR.在开始之前,我们需要首先安装ANTLR,然后尝试用它编写一份简单的"hello world"语法.

《ANTLR 4权威指南》——导读

前 言 ANTLR是一款强大的语法分析器生成工具,可用于读取.处理.执行和翻译结构化的文本或二进制文件.它被广泛应用于学术领域和工业生产实践,是众多语言.工具和框架的基石.Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询:Hadoop生态系统中的Hive.Pig.数据仓库和分析系统所使用的语言都用到了ANTLR:Lex Machina将ANTLR用于分析法律文本:Oracle公司在SQL开发者IDE和迁移工具中使用了ANTLR:NetBeans公司的IDE使用ANTLR来解

《Netty 权威指南》样章

声明:本文是<Netty 权威指南>的样章目录,感谢博文视点授权并发编程网站发布样章,禁止以任何形式转载此文. 第 2 章  NIO入门 在本章节,我们分别对JDK的BIO.NIO和JDK1.7最新提供的NIO2.0的使用进行详细说明,通过流程图和代码讲解,让大家体会到随着Java IO类库的不断发展和改进,基于Java的网络编程会变得越来越简单,随着异步IO功能的增强,基于Java NIO开发的网络服务器甚至不逊色于采用C++开发的网络程序. 本章主要内容包括:  传统的同步阻塞式IO编程

《ANTLR 4权威指南》——3.4 构建一个语言类应用程序

3.4 构建一个语言类应用程序 我们继续完成能够处理数组初始化语句的示例程序,下一个目标是能够翻译初始化语句,而不仅仅是能够识别它们.例如,我们想要将Java中,类似{ 99, 3, 451 }的short数组翻译成"\u0063\u0003\u01c3".注意,其中十进制数字99的十六进制表示是63. 为了完成这项工作,程序必须能够从语法分析树中提取数据.最简单的方案是使用ANTLR内置的语法分析树遍历器进行深度优先遍历,然后在它触发的一系列回调函数中进行适当的操作.正如我们之前看到

《ANTLR 4权威指南》——3.4节构建一个语言类应用程序

3.4 构建一个语言类应用程序 我们继续完成能够处理数组初始化语句的示例程序,下一个目标是能够翻译初始化语句,而不仅仅是能够识别它们.例如,我们想要将Java中,类似{ 99, 3, 451 }的short数组翻译成"\u0063\u0003\u01c3".注意,其中十进制数字99的十六进制表示是63. 为了完成这项工作,程序必须能够从语法分析树中提取数据.最简单的方案是使用ANTLR内置的语法分析树遍历器进行深度优先遍历,然后在它触发的一系列回调函数中进行适当的操作.正如我们之前看到

《ANTLR 4权威指南 》一3.4 构建一个语言类应用程序

3.4 构建一个语言类应用程序 我们继续完成能够处理数组初始化语句的示例程序,下一个目标是能够翻译初始化语句,而不仅仅是能够识别它们.例如,我们想要将Java中,类似{ 99, 3, 451 }的short数组翻译成"\u0063\u0003\u01c3".注意,其中十进制数字99的十六进制表示是63. 为了完成这项工作,程序必须能够从语法分析树中提取数据.最简单的方案是使用ANTLR内置的语法分析树遍历器进行深度优先遍历,然后在它触发的一系列回调函数中进行适当的操作.正如我们之前看到

《ANTLR 4权威指南》——1.1节安装ANTLR

1.1 安装ANTLR ANTLR是用Java编写的,因此你需要首先安装Java,哪怕你的目标是使用ANTLR来生成其他语言(如C#和C++)的解析器.(我希望在不远的未来ANTLR可以支持更多语言.)ANTLR运行所需的Java版本为1.6或更高. 为什么本书使用命令行 在整本书中,我们都会使用命令行(shell)来运行ANTLR和构建我们的程序.因为开发者使用的开发环境和操作系统五花八门,因此只有操作系统的shell才是我们公用的"界面".使用shell也使得开发语言程序的每一个步