《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引擎
StringTemplate是一个Java编写的模板引擎,用于生成源代码、网页、电子邮件或者其他任何格式化的输出文本(已经支持C#、Python、Ruby和Scala)。StringTemplate在生成多目标的代码、多站点皮肤和国际化/本地化方面表现尤其出色。它是在jGuru.com的多年开发过程中逐渐成形的。StringTemplate也用于生成网站,以及为ANTLR 3和ANTLR 4的代码生成器提供有力的支持。关于StringTemplate的更多信息详见其帮助页面(http://www.stringtemplate.org/about.html)。
你可以通过浏览器从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之旅了!

相关文章
|
6月前
|
人工智能 Java 程序员
JManus - 面向 Java 开发者的开源通用智能体
JManus 是一个以 Java 为核心、完全开源的 OpenManus 实现,隶属于 Spring AI Alibaba 项目。它旨在让 Java 程序员更便捷地使用 AI 技术,支持多 Agent 框架、网页配置 Agent、MCP 协议和 PLAN-ACT 模式。项目在 GitHub 上已获近 3k star,可集成多个大模型如 Claude 3.5 和 Qwen3。开发者可通过 IDE 或 Maven 快速运行项目,体验智能问答与工具调用功能。欢迎参与开源共建,推动通用 AI Agent 框架发展。
10177 65
|
4月前
|
SQL 前端开发 Java
Spring的三层架构
Spring MVC 三层架构(表现层、业务层、数据访问层)通过职责分离提升代码可维护性与扩展性。表现层(Controller)接收请求并返回响应;业务层(Service)处理核心逻辑与事务;数据访问层(Mapper)负责数据库操作与数据映射,共同实现高效、清晰的系统开发。
393 0
|
SQL 算法 关系型数据库
面试:什么是死锁,如何避免或解决死锁;MySQL中的死锁现象,MySQL死锁如何解决
面试:什么是死锁,死锁产生的四个必要条件,如何避免或解决死锁;数据库锁,锁分类,控制事务;MySQL中的死锁现象,MySQL死锁如何解决
|
Web App开发 API 图形学
QtWebEngine性能问题
QtWebEngine性能问题
661 1
|
消息中间件 SQL 监控
RocketMQ 5.3.0 版本中 Broker IP 配置为 IPv6 的情况
【8月更文第28天】RocketMQ 是一款分布式消息中间件,支持多种消息发布和订阅模式。在 RocketMQ 5.3.0 版本中,Broker 的配置文件 `broker.conf` 允许配置 IPv6 地址。当 Broker 的 `brokerIP1` 配置为 IPv6 地址时,会对 Broker 的启动、消息推送和状态监控等方面产生影响。本文将探讨如何在 RocketMQ 中配置 IPv6 地址,并检查 Broker 的状态。
955 0
|
存储 测试技术 持续交付
|
机器学习/深度学习 算法 数据挖掘
【机器学习】包裹式特征选择之递归特征添加法
【机器学习】包裹式特征选择之递归特征添加法
460 5
|
Unix Linux Shell
《Linux/UNIX OpenLDAP实战指南》——2.7 OpenLDAP用户以及与用户组相关的配置
添加用户和用户组的方式有两种。一种是将系统用户通过migrationtools工具生成LDIF文件并结合ldapadd命令导入OpenLDAP目录树中,生成OpenLDAP用户。另一种通过自定义LDIF文件并通过OpenLDAP命令进行添加或者修改操作。
4171 0
|
域名解析 安全 Dubbo
一文读懂 JNDI
前段时间发生的 Log4j2 漏洞事件着实让人有点蛋疼,可以说是值得广大中国企业技术人员纪念的日子。在修复漏洞的过程中,让人看到的是:在风险面前,我们的系统就像一个裸奔的男人站在海边,被海风肆意地虐打着,毫无反抗力……
703 0
|
缓存 NoSQL 应用服务中间件
nginx安装配置Lua模块的支持
nginx安装配置Lua模块的支持