ANTLR ANTLR全名ANother Tool for Language Recognition是基于LL算法实现的语法解析器生成器parser generator用Java语言编写使用自上而下topdown的递归下降LL剖析器方法由旧金山大学的Terence Parr博士等人於年開始發展 ANTLR最初叫做PCCTSPurdue Compiler Construction Tool Set是Terence Parr在普渡大学攻讀碩士學位時的創作在Hank Dietz教授的指导下开始研究构造自动化的分析器年Parr取得博士學位並於同年发布ANTLR 版最早的ANTLR只支持Java 直到ANTLR 以後開始支持AdaCCJavaScriptObjectiveCPerlPythonRubyC和Standard ML 如同一般的詞法分析器lexer和語法分析器parserANTLR可以用來產生樹狀分析器tree parsersANTLR 文法定义使用類似EBNFExtended BackusNaur Form的定义方式形象十分簡潔直观例如 ANTLR用A  a来表示规则舊式的方法則是以 Aa 表示所以ANTLR是以代替了ANTLR的规则要以分号结束又如其他ANTLR符號代表或的关系又如表示可以出现次或多次 ANTLR本身使用switchcase来匹配token形成记号序列记号流舊式的Yacc則利用符号表parser tableANTLR是完全exceptiondrivenLLk语法比目前流行的LR剖析器包含SLR LALR等强大更可以避免LR剖析器既有的位移歸約shiftreduce或歸約歸約reducereduce之类的语法冲突产生的代码清楚易懂便於程序员阅读和理解同時更支持Unicode