[发明专利]代码补全方法、装置、计算机装置及存储介质在审
申请号: | 201910780750.8 | 申请日: | 2019-08-22 |
公开(公告)号: | CN110688121A | 公开(公告)日: | 2020-01-14 |
发明(设计)人: | 刘利 | 申请(专利权)人: | 深圳壹账通智能科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06K9/62 |
代理公司: | 44334 深圳市赛恩倍吉知识产权代理有限公司 | 代理人: | 陈敬华;刘丽华 |
地址: | 518052 广东省深圳市前海深港合作区前*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 源代码 抽象语法树 控制流图 预测模型 贝叶斯 子控制 计算机可读存储介质 计算机装置 软件代码 图构建 | ||
本发明提供一种代码补全方法,包括:获取多个训练源代码;生成多个训练源代码的抽象语法树,根据抽象语法树生成多个训练源代码的父抽象语法树和子抽象语法树;根据多个训练源代码的父抽象语法树生成多个训练源代码的父控制流图,根据多个训练源代码的子抽象语法树生成多个训练源代码的子控制流图;根据多个训练源代码的父控制流图以及子控制流图构建贝叶斯预测模型;获取待补全源代码;将待补全源代码输入贝叶斯预测模型进行代码补全,得到待补全源代码的后续代码。本发明还提供一种代码补全装置、计算机装置和计算机可读存储介质。本发明能够对较为复杂的代码进行代码补全,提高软件代码编写效率。
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种代码补全方法、装置、计算机装置及计算机可读存储介质。
背景技术
代码补全是指在编程过程中根据输入的代码提示后续的代码,从而提高软件开发的效率。目前常见的代码补全方法是基于简单的语法推断或常见词的词频统计,或者是基于浅层语义信息的n-gram方法。这些方法能够补全的内容有限,只能基于源代码中有限数量的元素进行代码补全,对于较为复杂的代码则不能进行代码补全。
发明内容
鉴于以上内容,有必要提供一种代码补全方法、装置、计算机装置及计算机可读存储介质,能够对较为复杂的代码进行代码补全,提高软件代码编写效率。
本申请的第一方面提供一种代码补全方法,所述方法包括:
获取多个训练源代码;
生成所述多个训练源代码的抽象语法树,根据所述抽象语法树生成所述多个训练源代码的父抽象语法树和子抽象语法树;
根据所述多个训练源代码的父抽象语法树生成所述多个训练源代码的父控制流图,根据所述多个训练源代码的子抽象语法树生成所述多个训练源代码的子控制流图;
根据所述多个训练源代码的父控制流图以及子控制流图构建贝叶斯预测模型;
获取待补全源代码;
将所述待补全源代码输入所述贝叶斯预测模型进行代码补全,得到所述待补全源代码的后续代码。
另一种可能的实现方式中,所述生成所述多个训练源代码的抽象语法树之前,所述方法还包括:
判断所述多个训练源代码中的每个训练源代码的语句是否有缺失;
若所述训练源代码的语句有缺失,则舍弃所述训练源代码。
另一种可能的实现方式中,所述生成所述多个训练源代码的抽象语法树包括:
对每个训练源代码进行词法分析,将所述训练源代码转换为由词法单元组成的数组;
根据所述由词法单元组成的数组对所述训练源代码进行语法分析,确定所述训练源代码的语法是否正确;
若所述训练源代码的语法正确,根据所述由词法单元组成的数组生成所述训练源代码的抽象语法树。
另一种可能的实现方式中,所述对每个训练源代码进行词法分析,将所述训练源代码转换为由词法单元组成的数组包括:
通过词法分析器对所述训练源代码的每条语句进行词法分析,将所述训练源代码的每条语句转换成由词法单元组成的数组。
另一种可能的实现方式中,所述根据所述抽象语法树生成父抽象语法树和子抽象语法树包括:
遍历所述抽象语法树的所有节点,
确定所述抽象语法树的父节点和子节点以及所述父节点和子节点在所述抽象语法树中的层级;
根据所述父节点和子节点在所述抽象语法树中的层级生成所述父抽象语法树和子抽象语法树。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳壹账通智能科技有限公司,未经深圳壹账通智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910780750.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种跳转到指定模块的方法及电子设备
- 下一篇:编译和执行智能合约的方法及装置