[发明专利]一种代码补全方法、装置、计算设备及存储介质有效
申请号: | 201910779909.4 | 申请日: | 2019-08-22 |
公开(公告)号: | CN110673836B | 公开(公告)日: | 2023-05-23 |
发明(设计)人: | 鲁志强 | 申请(专利权)人: | 创新先进技术有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30 |
代理公司: | 北京智信禾专利代理有限公司 11637 | 代理人: | 赵杰 |
地址: | 开曼群岛大开曼岛乔治镇医院*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 代码 方法 装置 计算 设备 存储 介质 | ||
1.一种代码补全方法,其特征在于,包括:
获取从代码库按照代码关键词计算出的n元语法序列,其中,所述n元语法序列包括大于一元的语法序列;
在用户光标所在的代码语句中,以所述用户光标位置为起始位置,向前取出所述大于一元的语法序列的阶数数量个的前缀词,所述n元语法序列的阶数为n-1;
使用所述大于一元的语法序列的阶数数量个的前缀词,从所述大于一元的语法序列中查找以所述前缀词为前缀的语法;
如果查找到以所述前缀词为前缀的语法,将所述语法中所述前缀的后续单词作为n元语法对应的代码补全候选项。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述语法在所述代码库中出现的次数确定所述语法中所述前缀的后续单词在所有代码补全候选项中的排序位置。
3.根据权利要求1所述的方法,其特征在于,所述n元语法序列包括一元语法序列以及大于一元的语法序列;所述方法还包括:
如果使用所述大于一元的语法序列的阶数数量个的前缀词,从所有大于一元的语法序列中未查找到以所述前缀词为前缀的语法,将所述一元语法序列中的单词作为n元语法对应的代码补全候选项。
4.根据权利要求3所述的方法,其特征在于,所述在用户光标所在的代码语句中,以所述用户光标位置为起始位置,向前取出所述大于一元的语法序列的阶数数量个的前缀词包括:
将所述大于一元的语法序列中的最高阶作为当前阶;
在用户光标所在的代码语句中,以所述用户光标位置为起始位置,向前取出所述当前阶的语法序列的阶数数量个的前缀词;
所述使用所述大于一元的语法序列的阶数数量个的前缀词,从所述大于一元的语法序列中查找以所述前缀词为前缀的语法包括:
使用所述当前阶的阶数数量个的前缀词,从所述当前阶的语法序列中查找以所述前缀词为前缀的语法;
所述如果查找到以所述前缀词为前缀的语法,将所述语法中所述前缀的后续单词作为n元语法对应的代码补全候选项包括:
如果从当前阶的语法序列中查找到以所述前缀词为前缀的语法,则将各个以所述前缀词为前缀的语法中所述前缀的后续单词作为n元语法对应的代码补全候选项;
如果从当前阶的语法序列中未查找到以所述前缀词为前缀的语法,且所述当前阶的下一阶不是一元语法序列,则将所述当前阶的阶数更新为所述n元语法序列中所述当前阶的下一阶,重新进入所述在用户光标所在的代码语句中,以所述用户光标位置为起始位置,向前取出所述当前阶的语法序列的阶数数量个的前缀词的步骤;
所述如果使用所述大于一元的语法序列的阶数数量个的前缀词,从所有大于一元的语法序列中未查找到以所述前缀词为前缀的语法,将所述一元语法序列中的单词作为n元语法对应的代码补全候选项包括:
如果使用所述当前阶的语法序列的阶数数量个的前缀词,从当前阶的语法序列中未查找到以所述前缀词为前缀的语法,且所述当前阶的下一阶是一元语法序列,则将所述一元语法序列中的单词集合作为n元语法对应的代码补全候选项。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
确定所述用户光标所在位置的上下文状态;
查找出与所述上下文状态对应的代码补全候选项;
将所述n元语法对应的代码补全候选项与所述上下文状态对应的代码补全候选项进行合并,得到代码补全候选项全集。
6.根据权利要求5所述的方法,其特征在于,所述代码补全候选项全集中,所述上下文状态对应的代码补全候选项的排序权重为零,所述n元语法对应的代码补全候选项中,从大于一元的语法序列中查找到的单词的排序权重为其所在语法在所述代码库中出现的次数,从一元语法序列中查找到的单词的排序权重为该单词在所述代码库中出现的次数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于创新先进技术有限公司,未经创新先进技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910779909.4/1.html,转载请声明来源钻瓜专利网。