[發(fā)明專利]代碼生成方法及裝置、電子設(shè)備和存儲(chǔ)介質(zhì)有效
| 申請(qǐng)?zhí)枺?/td> | 201911376502.3 | 申請(qǐng)日: | 2019-12-27 |
| 公開(kāi)(公告)號(hào): | CN111158665B | 公開(kāi)(公告)日: | 2023-07-18 |
| 發(fā)明(設(shè)計(jì))人: | 陳澤欣 | 申請(qǐng)(專利權(quán))人: | 網(wǎng)易(杭州)網(wǎng)絡(luò)有限公司 |
| 主分類號(hào): | G06F8/30 | 分類號(hào): | G06F8/30;G06F8/41 |
| 代理公司: | 北京同立鈞成知識(shí)產(chǎn)權(quán)代理有限公司 11205 | 代理人: | 楊俊輝;劉芳 |
| 地址: | 310052 浙江省*** | 國(guó)省代碼: | 浙江;33 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 代碼 生成 方法 裝置 電子設(shè)備 存儲(chǔ) 介質(zhì) | ||
本發(fā)明實(shí)施例提供一種代碼生成方法及裝置、電子設(shè)備和存儲(chǔ)介質(zhì),該方法通過(guò)分析第一源代碼的語(yǔ)法結(jié)構(gòu),獲得該源代碼的抽象語(yǔ)法樹(shù),進(jìn)一步提取出抽象語(yǔ)法樹(shù)中關(guān)鍵信息,并將第一源代碼中關(guān)鍵信息寫(xiě)入代碼模板中,最終生成綁定代碼,相較于開(kāi)發(fā)人員人工編寫(xiě)綁定代碼,本方法實(shí)現(xiàn)自動(dòng)化生成綁定代碼,對(duì)開(kāi)發(fā)人員的要求降低,且代碼生成效率高。
技術(shù)領(lǐng)域
本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù),尤其涉及一種代碼生成方法及裝置、電子設(shè)備和存儲(chǔ)介質(zhì)。
背景技術(shù)
大部分的游戲引擎、游戲框架都使用C++語(yǔ)言編寫(xiě),再配合腳本語(yǔ)言,有些則使用python腳本語(yǔ)言,當(dāng)需要編寫(xiě)性能較敏感的模塊時(shí),則需要C++語(yǔ)言配合完成功能實(shí)現(xiàn)。為了連接C++語(yǔ)言和腳本語(yǔ)言,通常會(huì)編寫(xiě)綁定代碼來(lái)使腳本語(yǔ)言調(diào)用C++語(yǔ)言模塊。
現(xiàn)有的綁定代碼是由開(kāi)發(fā)人員使用Python提供的C接口或者封裝有C接口的擴(kuò)展庫(kù)人工編寫(xiě)的。其中,直接使用C接口編寫(xiě)綁定代碼,代碼運(yùn)行效率最快,但開(kāi)發(fā)人員需要編寫(xiě)大量重復(fù)又累贅的代碼,容易出錯(cuò),編碼效率低。而使用封裝有C接口的擴(kuò)展庫(kù)編寫(xiě)綁定代碼,可減少開(kāi)發(fā)人員編寫(xiě)代碼的工作量,但開(kāi)發(fā)人員需要學(xué)習(xí)擴(kuò)展庫(kù)的使用規(guī)范,對(duì)開(kāi)發(fā)人員要求比較高。
由于現(xiàn)有綁定代碼由開(kāi)發(fā)人員人工編寫(xiě)的,不僅對(duì)開(kāi)發(fā)人員要求高,且生成代碼的效率低。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種代碼生成方法及裝置、電子設(shè)備和存儲(chǔ)介質(zhì),以解決現(xiàn)有代碼生成方法對(duì)開(kāi)發(fā)人員要求高,且生成代碼的效率低的技術(shù)問(wèn)題。
第一方面,本發(fā)明提供一種代碼生成方法,方法包括:
獲取第一源代碼的抽象語(yǔ)法樹(shù);其中,第一源代碼是由第一語(yǔ)言編寫(xiě)的;
從抽象語(yǔ)法樹(shù)中提取用于使第一源代碼和第二源代碼交互的關(guān)鍵信息;其中,第二源代碼是由第二語(yǔ)言編寫(xiě)的;
將關(guān)鍵信息寫(xiě)入預(yù)設(shè)的代碼模板,生成用于使第一源代碼和第二源代碼交互的綁定代碼。
可選地,將關(guān)鍵信息寫(xiě)入預(yù)設(shè)的代碼模板,生成用于使第一源代碼和第二源代碼交互的綁定代碼,之前還包括:
使用用于使第一語(yǔ)言和第二語(yǔ)言交互的擴(kuò)展庫(kù)編寫(xiě)代碼模板。
可選地,在將關(guān)鍵信息寫(xiě)入預(yù)設(shè)的代碼模板,生成用于使第一源代碼和第二源代碼交互的綁定代碼,之后還包括:
將綁定代碼、擴(kuò)展庫(kù)、及第一源代碼進(jìn)行編譯,生成鏈接庫(kù)。
可選地,獲取第一源代碼的抽象語(yǔ)法樹(shù),具體包括:
使用語(yǔ)法分析工具對(duì)第一源代碼進(jìn)行分析,生成抽象語(yǔ)法樹(shù)。
可選地,第一語(yǔ)言為C++語(yǔ)言;第二語(yǔ)言為python語(yǔ)言。
可選地,所述語(yǔ)法分析工具包括libclang工具。
可選地,關(guān)鍵信息包括以下至少任意一項(xiàng):
變量名、函數(shù)名、函數(shù)參數(shù)、類名、常量名、及常量值。
可選地,擴(kuò)展庫(kù)為:pybind11擴(kuò)展庫(kù)、或者boost.python擴(kuò)展庫(kù)。
第二方面,本發(fā)明提供一種代碼生成裝置,裝置包括:
獲取模塊,用于獲取第一源代碼的抽象語(yǔ)法樹(shù);其中,第一源代碼是由第一語(yǔ)言編寫(xiě)的;
提取模塊,用于從抽象語(yǔ)法樹(shù)中提取用于使第一源代碼和第二源代碼交互的關(guān)鍵信息;其中,第二源代碼是由第二語(yǔ)言編寫(xiě)的;
生成模塊,用于將關(guān)鍵信息寫(xiě)入預(yù)設(shè)的代碼模板,生成用于使第一源代碼和第二源代碼交互的綁定代碼。
可選地,裝置還包括:編寫(xiě)模塊;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于網(wǎng)易(杭州)網(wǎng)絡(luò)有限公司,未經(jīng)網(wǎng)易(杭州)網(wǎng)絡(luò)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911376502.3/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 遙控器代碼格式結(jié)構(gòu)及其收發(fā)信方法及裝置
- 在虛擬機(jī)中驗(yàn)證代碼模塊的方法及裝置
- 一種用于代碼的管理方法及裝置
- 虛擬代碼提供系統(tǒng)、生成裝置、驗(yàn)證裝置、提供方法
- 一種自動(dòng)化代碼質(zhì)量檢查方法及系統(tǒng)
- 代碼掃描方法、裝置、計(jì)算設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)
- 用于更新代碼的方法和裝置
- 前端代碼打包方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 一種代碼審查服務(wù)同步方法、裝置及計(jì)算機(jī)設(shè)備
- 一種高效智能源代碼安全管理平臺(tái)
- 一種數(shù)據(jù)庫(kù)讀寫(xiě)分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





