[发明专利]代码生成方法及装置、电子设备和存储介质有效
申请号: | 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扩展库。
第二方面,本发明提供一种代码生成装置,装置包括:
获取模块,用于获取第一源代码的抽象语法树;其中,第一源代码是由第一语言编写的;
提取模块,用于从抽象语法树中提取用于使第一源代码和第二源代码交互的关键信息;其中,第二源代码是由第二语言编写的;
生成模块,用于将关键信息写入预设的代码模板,生成用于使第一源代码和第二源代码交互的绑定代码。
可选地,装置还包括:编写模块;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网易(杭州)网络有限公司,未经网易(杭州)网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911376502.3/2.html,转载请声明来源钻瓜专利网。