[发明专利]代码生成方法及装置、电子设备和存储介质有效

专利信息
申请号: 201911376502.3 申请日: 2019-12-27
公开(公告)号: CN111158665B 公开(公告)日: 2023-07-18
发明(设计)人: 陈泽欣 申请(专利权)人: 网易(杭州)网络有限公司
主分类号: G06F8/30 分类号: G06F8/30;G06F8/41
代理公司: 北京同立钧成知识产权代理有限公司 11205 代理人: 杨俊辉;刘芳
地址: 310052 浙江省*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 代码 生成 方法 装置 电子设备 存储 介质
【说明书】:

发明实施例提供一种代码生成方法及装置、电子设备和存储介质,该方法通过分析第一源代码的语法结构,获得该源代码的抽象语法树,进一步提取出抽象语法树中关键信息,并将第一源代码中关键信息写入代码模板中,最终生成绑定代码,相较于开发人员人工编写绑定代码,本方法实现自动化生成绑定代码,对开发人员的要求降低,且代码生成效率高。

技术领域

本发明实施例涉及计算机技术,尤其涉及一种代码生成方法及装置、电子设备和存储介质。

背景技术

大部分的游戏引擎、游戏框架都使用C++语言编写,再配合脚本语言,有些则使用python脚本语言,当需要编写性能较敏感的模块时,则需要C++语言配合完成功能实现。为了连接C++语言和脚本语言,通常会编写绑定代码来使脚本语言调用C++语言模块。

现有的绑定代码是由开发人员使用Python提供的C接口或者封装有C接口的扩展库人工编写的。其中,直接使用C接口编写绑定代码,代码运行效率最快,但开发人员需要编写大量重复又累赘的代码,容易出错,编码效率低。而使用封装有C接口的扩展库编写绑定代码,可减少开发人员编写代码的工作量,但开发人员需要学习扩展库的使用规范,对开发人员要求比较高。

由于现有绑定代码由开发人员人工编写的,不仅对开发人员要求高,且生成代码的效率低。

发明内容

本发明实施例提供一种代码生成方法及装置、电子设备和存储介质,以解决现有代码生成方法对开发人员要求高,且生成代码的效率低的技术问题。

第一方面,本发明提供一种代码生成方法,方法包括:

获取第一源代码的抽象语法树;其中,第一源代码是由第一语言编写的;

从抽象语法树中提取用于使第一源代码和第二源代码交互的关键信息;其中,第二源代码是由第二语言编写的;

将关键信息写入预设的代码模板,生成用于使第一源代码和第二源代码交互的绑定代码。

可选地,将关键信息写入预设的代码模板,生成用于使第一源代码和第二源代码交互的绑定代码,之前还包括:

使用用于使第一语言和第二语言交互的扩展库编写代码模板。

可选地,在将关键信息写入预设的代码模板,生成用于使第一源代码和第二源代码交互的绑定代码,之后还包括:

将绑定代码、扩展库、及第一源代码进行编译,生成链接库。

可选地,获取第一源代码的抽象语法树,具体包括:

使用语法分析工具对第一源代码进行分析,生成抽象语法树。

可选地,第一语言为C++语言;第二语言为python语言。

可选地,所述语法分析工具包括libclang工具。

可选地,关键信息包括以下至少任意一项:

变量名、函数名、函数参数、类名、常量名、及常量值。

可选地,扩展库为:pybind11扩展库、或者boost.python扩展库。

第二方面,本发明提供一种代码生成装置,装置包括:

获取模块,用于获取第一源代码的抽象语法树;其中,第一源代码是由第一语言编写的;

提取模块,用于从抽象语法树中提取用于使第一源代码和第二源代码交互的关键信息;其中,第二源代码是由第二语言编写的;

生成模块,用于将关键信息写入预设的代码模板,生成用于使第一源代码和第二源代码交互的绑定代码。

可选地,装置还包括:编写模块;

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

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网易(杭州)网络有限公司,未经网易(杭州)网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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