Hive源码阅读–词法、语法解析–HiveLexerX/HiveParser

org\apache\hadoop\hive\ql\parse下有五个*.g文件,分别是:

  • HiveLexer.g :定义Hive关键字,及组成词组的合法字符
  • HiveParser.g:定义语法规则文件,引入了其他语法规则文件
  • SelectClauseParser.g :定义select语句的语法规则
  • FromClauseParser.g :定义from语句的语法规则
  • IdentifiersParser.g :定义函数、group等的语法规则

我们主要看前两个文件。

在进行阅读前,我们要安装一个工具-- ANTLR,下载地址为:https://www.antlr3.org/download.html

ANTLR 的使用

下载jar包后,直接双击就可以运行。
在这里插入图片描述
然后File–>New
在这里插入图片描述
新建一个.g文件。
在这里插入图片描述
起个名字叫ts,type为Combined Grammar
在这里插入图片描述
测试代码:

grammar ts;

-- 声明输出的是什么,这里相当于声明输出一个 AST Tree
options {
    output=AST;
    ASTLabelType=CommonTree;
}

-- expr声明的是词法  例如我要声明一个句子 我爱中国,这个句子的语法是主谓宾。
-- 主谓宾语法由三个词构成,相对于的词法为主语,谓语,宾语
-- ^相当于树的根点
expr	:	INT PLUS^ INT;

-- PLUS和INT是词对应的值 
-- 一个词法为INT,对应 0-9构成的字符串 后面的+号表示可以字符可以重复
-- 另一个词法是PLUS,对应 “+”这个字符串
PLUS 	:	'+';
INT	:	('0'..'9')+;

在这里插入图片描述

点击小甲虫运行,保存文件。

在这里插入图片描述

输入字符串
在这里插入图片描述
结果:
在这里插入图片描述

解析流程

在这里插入图片描述
在HIVE中,对SQL语句进行编译的是ANTLR。我们输入SQL语句,输出相应代码。

词法解析

词法解析就是将SQL语句中的关键字,特殊符号之类的有特殊含义的符号解释为一个token。

HiveLexerX.g中每一个关键字都有对应的声明,相当于对词的声明。
在这里插入图片描述

语法解析

语法解析就是分析字符串的语法构成与逻辑,比如这个句子是主谓宾结构呢还是主谓补结构呢。

HiveParser.g中有各种预先设置好的语法。
在这里插入图片描述

注意:不管是词法还是语法,都是可以自定义的。

例子

在这里插入图片描述

树图:
在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值