ANTLR v4
ANTLR(ANother Tool for Language Recognition,另一种语言识别工具)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。它被广泛用于构建语言、工具和框架。ANTLR 根据语法生成一个可以构建解析树的解析器,并且还生成一个监听器接口(或访问者),使得响应感兴趣的短语识别变得容易。
开发分支构建状态
版本控制
ANTLR 4 支持 10 种目标语言(Cpp、CSharp、Dart、Java、JavaScript、PHP、Python3、Swift、TypeScript、Go),确保这些目标之间的一致性是一个独特且极其有价值的特性。为了确保正确支持此功能,ANTLR 的每个版本都是工具和 10 个运行时的完整版本,所有版本号都相同。因此,ANTLR 的版本控制并不严格遵循语义化版本规则:
- 即使自上一个版本以来某个组件没有任何变化,该组件也可能以最新的版本号发布
- 仅当 ANTLR 被重写为全新的"代"时,才会增加主版本号,例如 ANTLR3 -> ANTLR4(LL(*) -> ALL(*) 解析)
- 次版本更新可能包含小的破坏性更改,政策是每次发布都要重新生成解析器(4.11 -> 4.12)
- 仅在修订版本号增加时才保证向后兼容(4.11.1 -> 4.11.2)
如果你在 CI 中使用语义化版本验证器,你可能需要为 ANTLR 应用特殊规则,比如将次要变更视为主要变更。
仓库分支结构
此仓库的默认分支是 master
,它是最新的稳定版本,并带有各种版本的标签;例如,请参阅发布标签 4.9.3。dev
分支是在版本之间进行开发的地方,所有拉取请求都应该从该分支派生。dev
分支会合并回 master
以发布新版本,并为发布状态添加标签(例如 4.10-rc1
或 4.10
)。我们的流程大致如下图所示:
Go 目标现在有了自己专门的仓库:
$ go get github.com/antlr4-go/antlr
注意
专门的 Go 仓库仅用于 go get
和 import
。Go 运行时的开发仍在主 antlr/antlr4
仓库中进行。
作者和主要贡献者
- Terence Parr,parrt@cs.usfca.edu ANTLR 项目负责人和终身最高统治者 旧金山大学
- Sam Harwell(工具共同作者,Java 和原始 C# 目标)
- Eric Vergnaud(Javascript、TypeScript、Python2、Python3 目标和 C# 目标的维护)
- Peter Boyer(Go 目标)
- Mike Lischke(C++ 完成目标)
- Dan McLaughlin(C++ 初始目标)
- David Sisson(C++ 初始目标和测试)
- Janyou(Swift 目标)
- Ewan Mellor,Hanzhou Shi(Swift 目标合并)
- Ben Hamilton(序列化 ATN 和所有语言运行时对 U+FFFF 以上代码点的完全 Unicode 支持)
- Marcos Passos(PHP 目标)
- Lingyu Li(Dart 目标)
- Ivan Kochurkin 对整体质量、错误处理和目标性能做出了重大贡献。
- Justin King 在多个目标上做了大量工作,尤其是 C++。
- Ken Domino 擅长发现 bug/问题和分析;也是 grammars-v4 仓库 的主要贡献者。
- Jim Idle 为 ANTLR 的前几个版本做出了贡献,最近重新加入并解决了 Go 目标的一个重大问题。
有用信息
- 发布说明
- v4 入门指南
- 官方网站
- 文档
- 常见问题
- ANTLR 代码生成目标
(目前包括:Java、C#、Python3、JavaScript、TypeScript、Go、C++、Swift、Dart、PHP) - 注意:从 4.14 版本开始,我们将停止支持 Python 2。我们热爱 Python 社区,但 Python 2 的官方支持已于 2020 年 1 月停止。最近,GitHub 也停止了对 Python 2 的支持,这使我们无法在各个目标之间保持一致的质量水平(我们使用 GitHub 进行 CI)。Python 3 万岁!
- Java API
- ANTLR v3
- v3 到 v4 的迁移和差异
如果你想研究各种目标语言,以下页面可能也会对你有用:
ANTLR 4 权威指南
程序员经常遇到解析问题。无论是 JSON 这样的数据格式,SMTP 这样的网络协议,Apache 的服务器配置文件,PostScript/PDF 文件,还是简单的电子表格宏语言—— ANTLR v4 和这本书都将为你揭开这个过程的神秘面纱。ANTLR v4 已经从头重写,使得构建解析器和基于解析器的语言应用程序比以往任何时候都更容易。这本畅销书《ANTLR 权威指南》的全新重写版本将向你展示如何利用这些新功能。
你可以在亚马逊购买 ANTLR 4 权威指南 或在出版商网站购买电子版。
你会发现书籍源代码很有用。
附加语法
这个仓库是一个不带动作的语法集合,其中根目录名称是该语法所解析语言的全小写名称。例如,java、cpp、csharp、c 等...