ANTLR

ANTLR v4

早期Antlr的LL(*)文法仍不支持“左递归”（left-recursion），这是所有LL剖析器的局限，在左递归过程没有消耗掉任何token, LL剖析器很容易造成stack overflow。至于如何消除左递归问题，在ANTLR 3中会将parsing策略退化为LL(1) + 回溯的形式。ANTLRWorks则提供一些自动消除左递归的功能，但不实用。接下来的ANTLR v4大力支持Kleene Closure表示法，透过kleene star(*)和kleene cross(+)的语法糖（syntax sugar），直接以while语句取代递归，总算可以顺利解决LL分析法所不允许的左递归（但仍不能应付间接左递归，比如两条分支拥有共同的递归规则作为前缀），因此可兼容Yacc的文法。再者，ANTLR对于LL(*)不能正确分析的情况，还支持语义断言（Semantic Predicate）来辅助判断, Semantic Predicate可以是任何逻辑，只需返回bool值。
目前Hibernate与WebLogic都是使用ANTLR做为来解析HQL。在NetBeans IDE中更以ANTLR解析C++。Twitter搜索使用ANTLR解析，一天超过200亿次查询。
虽然ANTLR本身是免费的，但《The Definitive ANTLR Reference》这本参考书则属于使用者付费。目前免费文件极少。