【技术实现步骤摘要】
本专利技术信息,尤其涉及一种基于关键字回溯与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协议开发,可双向实时通信,用户侧发送信息到工具侧为输入,内容为用户在编辑器中输入的字符串,用户界面光标位置变化将触发提示操作,工具侧返回信息到用户侧为输出,输出内容为排序后的提示信息,且提示信息以
...【技术特征摘要】
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模块由当光标位置为非关键字时,则利用...
【专利技术属性】
技术研发人员:蒋凯,李韬,李鑫雄,陈金曈,郑钊彪,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。