Antlr是一种语言识别的工具,可以用来构造领域语言。
使用antlr需要我们提前定义好识别字符流的词法规则和用于解释Token流的语法分析规则。然后,antlr会根据我们提供的语法文件自动生成相应的词法/语法分析器。hive借助Antlr定义SQL的词法规则和语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree。HiveSql后续的编译过程全都基于AST Tree,所以我们想要完整理解hive sql的编译过程,需要前置了解一下antlr是怎么工作的。通过ANTLRWorks可以更加直观的理解解析过程。
对ANTLR的支持——源代码图。编辑ANTLR语法文件时,“语法图”窗口显示当前规则的直观表示。此功能提供语法元素的自然表示,并且是提供自定义功能以增强特定语言的特征的示例。另外,双击源代码图中的元素将立即跳转到相关的源代码。antlrworks:专门用于开发antlr的ide,(不同版本的antlrworks)其内部集成了某个版本的antlr。 换句话说,你即使下载了antlr-x.x-complete.jar,将其添加到了CLASSPATH中,其也和an