天天看点

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

本节书摘来自华章社区《antlr 4权威指南》一书中的第1章,第1.1节安装antlr,作者[美] 特恩斯·帕尔(terence parr),更多章节内容可以访问云栖社区“华章社区”公众号查看

1.1 安装antlr

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

为什么本书使用命令行

在整本书中,我们都会使用命令行(shell)来运行antlr和构建我们的程序。因为开发者使用的开发环境和操作系统五花八门,因此只有操作系统的shell才是我们公用的“界面”。使用shell也使得开发语言程序的每一个步骤更加清晰和明确。在本书中我将会一直使用mac os x作为示例,不过这些示例命令理论上应该能够在任何类unix系统的shell中正常工作,同时,在稍作修改后,它们应该能够适用于windows。

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

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

stringtemplate引擎

你可以通过浏览器从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之旅了!