antlr是什么?
antlr, ANother Tool for Language Recognition, 是一个可以接受含有语法描述的语言描述符并且生成程序能够识别这些语言所产生的句子。作为一个翻译程序的 一部分,你可以给你的语法附上简单的操作符和行为并且告诉ANTLR如何构造AST并且如何输出它们。ANTLR知道如何使用Java,C++,C#或者Python来生成它们。
ANTLR知道如何构造识别程序并且将语法结构应用到三种不同的输入上:(i) 字符流, (ii) 标记(token)流,(iii) 二维树结构。本质上这些对应了词法分析器(Lexer),解析器(Parser)和Tree Walker。用于制定这些语法(Grammar)的句法(Syntax),被称 为meta-language,在所有情况下是独立的。
antlr-x.x.x.jar在项目中的作用
一句话:项目中如果没有添加,那么相关的hibernate映射不会执行hql语句,并且会报NoClassDefFoundError:antlr/ANTLRException错误。
(现实环境中较少直接写JAVA调用antlr,都是作为hibernate解析hql的作用。一般配合antlr-runtime使用,antlr-x.x.x.jar是文法库,antlr-runtime是编译框架)
参考: https://www.ibm.com/developerworks/cn/java/j-lo-antlr/
http://blog.csdn.net/aliensoft2007/article/details/6428977 (比较详细)