ANTLR v4是一款功能强大的语法分析器生成器,可以用来读取、处理、执行和转换结构化文本或二进制文件。它被广泛应用于学术界和工业界构建各种语言、工具和框架。
从称为文法的一种形式化的语言描述中,ANTLR生成该语言的语法分析器。生成的语法分析器可以自动构建语法分析树——表示文法如何匹配输入的数据结构。ANTLR还可以自动生成树遍历器,你可以用它来访问那些树的节点,以执行特定的代码。
ANTLR v4的语法分析器使用一种新的称为Adaptive LL(*)
或ALL(*)
的语法分析技术,它可以在生成的语法分析器执行前在运行时动态地而不是静态地执行文法分析。
ANTLR v4极大地简化了匹配句法结构(如算术表达式)的文法规则。对于传统的自顶向下的语法分析器生成器来说,识别表达式的最自然的文法是无效的,ANTLR v4则不然,你可以使用像下面这样的规则来匹配表达式:
expr : expr '*' expr
| expr '+' expr
| INT
;
像expr这样的自引用规则是递归的且是左递归的,因为它的可选项中至少有一个立即引用它自身。
ANTLR v4会自动地将左递归规则(例如expr)重写为非左递归等价物,唯一的约束是左递归必须是直接的,即那些规则立即引用它们自身。