[知识总结] 记录贡献给 Antlr/grammer-v4 的一次PR
作者:CC下载站 日期:2022-07-10 02:03:00 浏览:61 分类:编程开发
up目前的主要工作是做SQL解析,提取元数据信息和血缘信息。对于市场上相对成熟的SQL解析工具,如 calcite、druid(内含解析),这些活跃度高、解析速度也快,但是有一个通病是方言支持度不高,虽然可以扩展,但是也有些难度。(calcite使用jj,而druid是手写的词法解析和语法解析)。
从易扩展的角度目前我先选择了使用antlr解析SQL,因为g4方便扩展,github社区也有很多现成的g4文件可以使用。
而我目前主要解析 hive ,antlr官方语法库 grammer-v4 里也有相应的g4文件,我便直接使用进行解析。
但是在使用中就发现了 expression 规则定义的问题:and/or 没有优先级。
举个例子
SELECT c1, c2 FROM t1 WHERE c1 > 1 AND c2 < 3;
我们看看修改前的解析树长什么样:
我们可以看到右下部门中,WHERE条件通过操作符构成的二叉树是不平衡的,也就是并没有区分 > AND < 这三个操作符的优先级。如果你的解析力度并不是很高,可以忽略此问题,但是很明显如果你要做还原的话这里就会出些问题,或者说会很繁琐。
那么,我们来看看修改后的解析树:
很显然,更改之后的解析树平衡了,而且可以根据 AND/OR 间断还原左右 expression,这对我自己接下来的开发工作带来了很大的帮助。
但是我毕竟修改也都修改过了,何不比直接提交给antlr官方,之后就不会有人遇到相应的问题了:
我不仅修改了 AND/OR 优先级的问题,同时对原有 expression 中相应语法规则名称进行了重定义,因为原先的定义有些冗余、乱,对解析带来了不小的麻烦。
提交给antlr之后,也是很快,审核人就给我修改的部分提出了一些 suggestion,我就根据他的 suggestion 又修改了部分代码,之后就是进入了漫长的自动化测试,一共二十多个,终于在晚饭结束之后,我到了 PR 被合并的通知。
我也是十分高兴,非常感谢 #Ivan Kochurkin 对我的建议和认可,我也跟高兴能为antlr仓库带来一些贡献!
我们公司的 #绝云大 对此与给予我了肯定和鼓励:
‒ 给 #皆非 点赞 antlr/grammars-v4/pull/2700 给顶级开源项目 antlr 贡献了很有价值的 PR 且得到项目核心成员的肯定。
我觉得开源也是我们与世界的一种相处模式:充满好奇,追求自由,坚持 DRY,平等包容,打磨技艺等等,这是这群人共同信奉的东西。
所以大家能跨越大洋国境的界限一同协作解决一个有趣的问题,让世界变得更好一点点。以开放待世界,世界也会回以拥抱,开源社区常说“保持正确的态度,有趣的事情自然会找到你”。
这是一个挺值得工程师去学习成长的地方,祝 #皆非 在社区走得更远。
这将是我在开源的道路上留下的又一个重要的脚印,继续加油,砥砺前行!
猜你还喜欢
- 03-29 [编程相关] Winform窗体圆角以及描边完美解决方案
- 03-29 [前端问题] has been blocked by CORS policy跨域问题解决
- 03-29 [编程相关] GitHub Actions 入门教程
- 03-29 [编程探讨] CSS Grid 网格布局教程
- 10-12 [编程相关] python实现文件夹所有文件编码从GBK转为UTF8
- 10-11 [编程算法] opencv之霍夫变换:圆
- 10-11 [编程算法] OpenCV Camshift算法+目标跟踪源码
- 10-11 [Python] python 创建 Telnet 客户端
- 10-11 [编程相关] Python 基于 Yolov8 + CPU 实现物体检测
- 03-15 [脚本工具] 使用go语言开发自动化脚本 - 一键定场、抢购、预约、捡漏
- 01-08 [编程技术] 秒杀面试官系列 - Redis zset底层是怎么实现的
- 01-05 [编程技术] 《Redis设计与实现》pdf
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[课程] 最用心全面的VIP硬笔书法课程(共250课完结) 手把手教 附可打印控笔素材
[MV] 韩国女团MV398首[打包]
[电影] 2023年美国喜剧片《问题专家》HD中英双字
[电影] 1999年美国经典传记片《十月的天空》蓝光中英双字
[影视] 破墓 WEB-DL版下载/Exhuma/The Unearthed Grave 2024 파묘 6.61G
[影视] 问题专家 WEB-DL版下载/大麻烦家(台) 2023 Problemista 18.2G
[短剧] 10部午夜小短剧 擦边剧
[电影] 2022年日本7.0分科幻片《疯狂星期一》BD日语中字
[电影] 2024年英国爱情片《血爱成河》BD中英双字
[课程] 爆款视频前三秒如何设计50招_短视频运营婧姐
[资料] [大学期末救急课] 猴博士+高斯课堂+斐多课堂,全集视频合集
[云资源] 价值2万元的老男孩Python教程
[书库] 史上最全摄影书推荐(附700本PDF版打包下载)
[云资源] 花了一千多元买的私人健身教程
[下载工具] Internet Download Manager 6.42.7 (IDM)
[影视] 灌篮高手 WEB-DL版下载/Slam Dunk/スラムダンク/灌篮高手:THE FIRST/灌篮高手电影版 2022 The First Slam Dunk 61.35G
[即时通讯] 腾讯QQ PC版9.7.22.29315去广告绿色纯净版
[开发环境] PhpStorm2023中文激活版v2023.3.3 正式版
[资料] 3000 套电影电视剧 LOGO 宣传片常用音效合集包
[安卓软件] 酷我音乐APP_v10.7.6.4 去广告破解豪华VIP版
[云资源] 价值2万元的老男孩Python教程
[影视] 灌篮高手 WEB-DL版下载/Slam Dunk/スラムダンク/灌篮高手:THE FIRST/灌篮高手电影版 2022 The First Slam Dunk 61.35G
[云资源] 花了一千多元买的私人健身教程
[书库] 史上最全摄影书推荐(附700本PDF版打包下载)
[动画] 北斗神拳(1984) [两季合集] [MKV]
[资料] 抗战阵亡将士资料+续编
[电视剧] 三体 (2024) 全8集 网飞版本 中文字幕 合集
[影视] 三大队 WEB-DL版下载/Endless Journey/请转告局长,三大队任务完成了 2023 三大队 6.7G
[纪录片] 河西走廊【10集 国语 中文字幕 1080P 10.8G MP4】
[安卓软件] OfficeSuite中文版APP v14.2.50872.0破解版
- 最新评论
-
我想看看mw2ddyy 评论于:04-26 好东西阿zfy123123 评论于:04-18 谢谢楼主xiaoqi 评论于:04-12 勿在线解压,勿手机解压,请在电脑上用最新款压缩软件解压!推荐360压缩或者好压CC下载站 评论于:04-10 无法解压啊,客服能不能给个解压教程ravengrey 评论于:04-10 谢谢支持!!CC下载站 评论于:03-26 很棒的资源,感谢分享云体风身 评论于:03-26 感谢分享,好东西云体风身 评论于:03-26 谢谢支持!CC下载站 评论于:03-14 央视精品,感谢付出提供。qwer9009 评论于:03-14
- 热门tag