[发明专利]一种软件项目自然语言编程接口NLI的构造方法及代码生成方法有效

专利信息
申请号: 201910804907.6 申请日: 2019-08-29
公开(公告)号: CN110554860B 公开(公告)日: 2021-03-12
发明(设计)人: 邹艳珍;伍仕骏;沈琦;谢冰 申请(专利权)人: 北京大学
主分类号: G06F8/30 分类号: G06F8/30;G06F8/41
代理公司: 北京君尚知识产权代理有限公司 11200 代理人: 司立彬
地址: 100871 北*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 软件 项目 自然语言 编程 接口 nli 构造 方法 代码 生成
【权利要求书】:

1.一种软件项目自然语言编程接口NLI构造方法,其步骤包括:

将选取的每一对<功能特征—API调用模式>封装为面向复用的软件项目自然语言编程接口中的一条原语;其中每条原语包括:原语的功能特征描述、原语的API调用模式、原语的宾语参数和原语的其他参数;

原语的功能特征描述是指以自然语言动宾短语形式描述软件项目能够支持实现的一项软件功能,用于当开发者输入当前开发任务的自然语言描述后根据输入字符串推荐匹配的原语;

原语的API调用模式为<功能特征—API调用模式>中的API调用模式,以文本形式存储;

原语的宾语参数是指从原语的功能特征描述中的动宾短语中获取的宾语参数,

原语的其他参数是指宾语参数外需要填写的若干参数,每一参数占用一行,包含需要填写的参数及参数的用途说明。

2.如权利要求1所述的方法,其特征在于,基于自然语言编程接口NLI对所述原语中需要填写的若干参数进行补全,其方法为:首先获取原语所在的<功能特征—API调用模式>对应的API使用示例代码,将API使用示例代码解析成抽象语法树,并对其进行符号解析;然后提取API使用出示例代码中的参数组合,并追溯每一个参数的创建路径;然后统计参数组合在API使用示例代码中的出现频数,推荐出现最为频繁的参数组合给开发者。

3.一种基于软件项目自然语言编程接口NLI的代码生成方法,其步骤包括:

1)将软件项目的每一<功能特征—API调用模式>封装为自然语言编程接口NLI中的一条原语;其中所述原语包括:原语的功能特征描述、原语的API调用模式、原语的宾语参数和原语的其他参数;

2)确定原语对应的抽象语法树节点类型;其中每个节点类型中都规定了该类型节点拥有的子节点以及属性;将节点的各子节点、属性与该节点对应的Java代码文本区域绑定后,在开发者进行NLI原语参数补全过程中,投影编辑器可自动调整生成代码的抽象语法树;

3)从抽象语法树的根节点开始,递归式地对抽象语法树各节点进行转换,将抽象语法树节点中的属性与子节点安插至其API调用模式中空缺的部分。

4.如权利要求3所述的方法,其特征在于,利用MPS的投影编辑器作为编辑环境,投影编辑器内部维护了程序代码的抽象语法树。

5.如权利要求3所述的方法,其特征在于,对所述原语中需要填写的若干参数进行补全,然后进行步骤2);其中补全方法为:首先搜集原语所在的<功能特征—API调用模式>对应的使用示例代码,将API使用示例代码解析成抽象语法树,并对其进行符号解析;然后提取API使用出示例代码中的参数组合,并追溯每一个参数的创建路径;然后统计参数组合在API使用示例代码中的出现频数,推荐出现最为频繁的参数组合给开发者。

6.如权利要求3所述的方法,其特征在于,维护一个不可用名字表,用于记录已用的中间变量;步骤3)的转换过程中在每次需要生成一个中间变量时通过查询该不可用名字表确保待生成中间变量未被使用过。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910804907.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top