ANTLR 是一个强大的解析器,你可以使用它来读取,处理,执行或翻译结构化文本或二进制文件。它广泛应用于学术界和工业界,构建各种语言,工具和框架。 Twitter 搜索使用 ANTLR 进行查询解析,每天有超过20亿次查询。 Hive 和 Pig 的语言,Hadoop 的数据仓库和分析系统都使用 ANTLR。 Lex Machina 使用 ANTLR 从法律文本中提取信息。 Oracle在 SQL Developer IDE 中使用 ANTLR 及其迁移工具。 NetBeans IDE 用 ANTLR 解析 C ++。Hibernate 对象关系映射框架中的 HQL 语言是用ANTLR 构建的。
除了这些有名、高调的项目,你可以构建各种有用的工具,如配置文件读取器,遗留代码转换器,wiki 标记渲染器和 JSON 解析器。我已经构建了一些工具用于对象关系数据库映射,描述 3D 可视化,将分析代码注入Java 源代码,甚至为演讲做了一个简单的 DNA 模式匹配示例。
从被称为语法的形式语言描述,ANTLR 为该语言生成可以自动构建解析树的解析器,解析树是表示语法如何匹配输入的数据结构。 ANTLR 还自动生成树遍历器,您可以使用它们访问这些树的节点以执行特定于应用程序的代码。
ANTLR 每月被下载数千次,它包含在所有 Linux 和 OS X 发行版中。 ANTLR 被广泛使用,因为它易于理解,强大,灵活,生成人类可读输出,具有 BSD 许可下的完整源代码,并得到积极支持。
ANTLR 对解析的理论和实践做出了贡献,包括:
- 线性近似前瞻
- 语义和句法谓词
- ANTLRWorks
- 树解析
- LL(*)
- 自适应LL(*)在ANTLR v4(即将推出)
Terence Parr 是 ANTLR 背后的奉献者,自1989年以来一直在为 ANTLR 做贡献。他是 旧金山大学 计算机科学教授。