ANTLR v4
ANTLR (ANother Tool for Language Recognition) 是一个强大的解析器生成器,用于读取、处理、执行或转换结构化文本或二进制文件。它被广泛用于构建语言、工具和框架。从语法中,ANTLR生成一个解析器,可以构建解析树,并生成一个监听器接口(或访问者),这使得对感兴趣短语的反应变得容易。
开发分支构建状态
版本控制
ANTLR 4支持10种目标语言(C++,C#,Dart,Java,JavaScript,PHP,Python3,Swift,TypeScript),并确保这些目标之间的关系一致是一个独特且非常有价值的功能。为了确保这项功能得到适当的支持,ANTLR的每个版本都是针对工具和10种运行时的完整版本,所有版本都与相同的版本号。因此,ANTLR版本控制并不严格遵循semver语义
- 一个组件可能以最新版本号发布,即使在之前的版本中没有对其实际内容进行任何更改
- 只有当ANTLR为全新的“一代”重写时,才会提高主版本号,例如ANTLR3 -> ANTLR4(从LL(*) 解析到ALL(*) 解析)
- 次版本号更新可能包括一些小的破坏性变化,政策是在每次发布时(4.11 -> 4.12)重复生成解析器
- 向后兼容性仅保证对于补丁版本号的提高(4.11.1 -> 4.11.2)
如果您在CI中使用semver验证器,您可能需要为ANTLR应用特殊规则,例如将小的更改视为重大的更改。
仓分支结构
本仓库的默认分支为 master
,它包含最新稳定版本的发布和各个版本的分标签;例如,请参考发布标签 4.9.3。分支 dev
用于发布之间的开发,所有的拉取请求都应从这个分支派生。当合并到 master
分支进行发布时,发布的版本将被打上标签(例如,使用 4.10-rc1
或 4.10
。)从视觉上看,我们的流程基本上是这样的
Go 目标现在有自己的专用仓库
$ go get github.com/antlr4-go/antlr
注意 专用 Go 仓库仅用于 go get
和 import
。Go 运行时开发仍在主 antlr/antlr4
仓库中进行。
作者和主要贡献者
- Terence Parr,[email protected] ANTLR 项目负责人和终身最高领袖 旧金山大学
- Sam Harwell(工具合著者,Java 和原始 C# 目标)
- Eric Vergnaud(JavaScript、Python2、Python3 目标和 C# 目标的维护)
- Peter Boyer(Go 目标)
- Mike Lischke(C++ 实现 target)
- Dan McLaughlin(C++ 初始 target)
- David Sisson(C++ 初始 target 和测试)
- Janyou(Swift 目标)
- Ewan Mellor,Hanzhou Shi(Swift 目标合并)
- Ben Hamilton(序列化 ATN 的完整 Unicode 支持以及所有语言的运行时对于大于 U+FFFF 的代码点)
- Marcos Passos(PHP 目标)
- Lingyu Li(Dart 目标)
- Ivan Kochurkin 对整体质量、错误处理和目标性能做出了重大贡献。
- Justin King 在多个目标上做了大量的工作,尤其是 C++。
- Ken Domino 有发现错误/问题的天赋和分析和 grammars-v4 仓库 上的主要贡献者。
- Jim Idle 为 ANTLR 的早期版本做出了贡献,最近又回来解决 Go 目标的一个主要问题。
有用信息
- 发行说明
- 使用 v4 版本入门
- 官方站点
- 文档
- 常见问题解答
- ANTLR 代码生成目标
(当前:Java,C#,Python 3,JavaScript,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,等等...