一种基于关键字回溯与Token排序的SQL代码提示方法技术

技术编号:41531064 阅读:25 留言:0更新日期:2024-06-03 23:07
本发明专利技术公开了一种基于关键字回溯与Token排序的SQL代码提示方法,包括。本发明专利技术通过解决了既有方案利用SQL解析器做代码提示在关键字提示场景下无法生成AST的不足,创造性地提出关键字回溯的方案,在不引入外部组件能力的情况下,以词法文件及语法文件为基础,利用链表实现的回溯函数对语法文件进行遍历获得所有可能的语法分支,提取其中的关键字信息进行代码提示,丰富了SQL解析器的适配场景。

【技术实现步骤摘要】

本专利技术信息,尤其涉及一种基于关键字回溯与token排序的sql代码提示方法。


技术介绍

1、随着云计算的发展和数据浪潮化的到来,编写sql在各种业务系统的开发和运维工作中占有越来越重要的地位,由于主流的关系型数据库语法并不相同,sql方言复杂多样,编写sql对相关从行业人员的sql熟练度有很高的要求,且容易出错,导致开发效率非常低下,因此在编辑器中实现sql代码提示的功能十分必要。

2、现有的技术方案是将用户编辑处的光标节点用特殊字符串替换,以便sql解析器能够生成比较完整的ast,然后在ast中找到光标节点位置,识别出节点类型,生成提示信息,为了进一步提高提示准确率,一些优化方案采用大模型技术训练网络上常见的sql数据集,再根据训练得到的特征数据集对提示结果进行过滤,期望返回对用户更有价值的信息,另一种优化方案是将用户输入的sql类型与用户历史输入语句进行比对,进而对提示结果进行权重排序,这些优化方案的提示结果往往以sql语句的形式进行输出。

3、然而,由于sql代码与具体业务通常具有很高的关联性,通用的特征数据集在私有化场景本文档来自技高网...

【技术保护点】

1.一种基于关键字回溯与Token排序的SQL代码提示方法,其特征在于:包括北向接口、关键字回溯模块、解析生成AST模块、Token排序模块、元数据模块和南向接口,提示方法如下:

2.根据权利要求1所述的一种基于关键字回溯与Token排序的SQL代码提示方法,其特征在于:所述|代表光标所在位置,所述北向接口用来实现用户侧与工具侧的信息交互,它基于websocket协议开发,可双向实时通信,用户侧发送信息到工具侧为输入,内容为用户在编辑器中输入的字符串,用户界面光标位置变化将触发提示操作,工具侧返回信息到用户侧为输出,输出内容为排序后的提示信息,且提示信息以LSP规定的格式进行...

【技术特征摘要】

1.一种基于关键字回溯与token排序的sql代码提示方法,其特征在于:包括北向接口、关键字回溯模块、解析生成ast模块、token排序模块、元数据模块和南向接口,提示方法如下:

2.根据权利要求1所述的一种基于关键字回溯与token排序的sql代码提示方法,其特征在于:所述|代表光标所在位置,所述北向接口用来实现用户侧与工具侧的信息交互,它基于websocket协议开发,可双向实时通信,用户侧发送信息到工具侧为输入,内容为用户在编辑器中输入的字符串,用户界面光标位置变化将触发提示操作,工具侧返回信息到用户侧为输出,输出内容为排序后的提示信息,且提示信息以lsp规定的格式进行输出,可以适配所有主流的编辑器。

3.根据权利要求2所述的一种基于关键字回溯与token排序的sql代码提示方法,其特征在于:所述关键字回溯模块中sql语句由关键字与非关键字组成,非关键字通常由普通字符串构成,关键字就像是sql语句的骨架,关键字位置若被替换为字符串,将无法解析出正确的ast,因此该模块将关键字进行特殊处理,在词法分析器lexer中已经包含了对关键字的定义,语法分析器parser中包含了所有的语法定义,当提示内容为关键字类型时,为了获取所有的可能语法分支,需要在某个节点匹配失败时,既能够对当前节点所在层级的其他节点进行平行尝试,也需要回溯到上一个层级的其他节点继续进行匹配,因此采用双向链表记录节点的匹配过程,其中match函数用来读取token和将token向下移动一位,如果token消耗光或者与比对不匹配,返回false且不消耗token,如果匹配,消耗一个token,并返回true,chain函数作为线索贯穿整个流程,它用来记录存盘点及匹配成功的链路信息,由于每个节点都包含多个子节点,所以任何时候执行失败,都给当前节点的子节点打标签,并判断当前节点是否还有子节点可以尝试,并遍历所有子节点都失败才返回false,当节点匹配成功时,为了防止后续链路失败(光标后可能存在内容),需要记录下当前位置作为存盘点,在每次执行结束时,都要判断是否还有存盘点,在每一个主分支中只要有一个子链路匹配成功,则记录下当前链路信息,在一般场景中,该方案首先获得光标位置前的内容信息,利用回溯函数获取所有的可能分支,进而得到所有可以等同替换光标的内容,如果待选的内容为关键字类型(包括符号),如“from”、“,”,“substr”,则直接生成提示信息,如果待选内容为字符串,则调用解析生成ast模块。

4.根据权利要求3所述的一种基于关键字回溯与token排序的sql代码提示方法,其特征在于:所述解析生成ast模块由当光标位置为非关键字时,则利用...

【专利技术属性】
技术研发人员:蒋凯李韬李鑫雄陈金曈郑钊彪
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1