mysql sql语法解析器_Druid SQL 解析器概览

本文概述了Druid的SQL解析器,包括其组成部分:词法分析、语法分析和AST。Druid SQL解析器是手写实现,性能优于ANTLR。解析过程涉及词法分析为独立单词,语法分析确定语义,最后生成抽象语法树。通过Visitor模式遍历AST,收集并理解SQL语句的含义。提供了一个简单的代码示例,展示如何使用Druid解析和访问SQL语句。
摘要由CSDN通过智能技术生成

概览

Druid 的官方 wiki 对 SQL 解析器部分的讲解内容并不多,但虽然不多,也有利于完全没接触过 Druid 的人对 SQL 解析器有个初步的印象。

说到解析器,脑海里便很容易浮现 parser 这个单词,然后便很容易联想到计算机科学中理论性比较强的学科------编译原理。想必很多人都知道(即使不知道,应该也耳濡目染)能够手写编译器的人并不多,并且这类人呢,理论知识和工程能力都比较强。在缺乏人力的条件下,大多数时候实现一个编译器,往往是选择采用一些工具,比如说 ANTLR,只需要描述好语法规则,这个工具就能生成对应的编译器。

不过,Druid 的 SQL 解析器是手写的,官方宣称性能是 ANTLR 这类工具的10倍以上。

解析器组成部分

在 Druid 的 SQL 解析器中,有三个重要的组成部分,它们分别是:

Parser

词法分析

语法分析

AST(Abstract Syntax Tree,抽象语法树)

Visitor

这三者的关系如下图所示:

bVIeBg?w=344&h=412

Parser 由两部分组成,词法分析和语法分析。

当拿到一条形如 select id, name from user 的 SQL 语句后,首先需要解析出每个独立的单词,select,id,name,fro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值