[發明專利]代碼生成方法及裝置、電子設備和存儲介質有效
| 申請號: | 201911376502.3 | 申請日: | 2019-12-27 |
| 公開(公告)號: | CN111158665B | 公開(公告)日: | 2023-07-18 |
| 發明(設計)人: | 陳澤欣 | 申請(專利權)人: | 網易(杭州)網絡有限公司 |
| 主分類號: | G06F8/30 | 分類號: | G06F8/30;G06F8/41 |
| 代理公司: | 北京同立鈞成知識產權代理有限公司 11205 | 代理人: | 楊俊輝;劉芳 |
| 地址: | 310052 浙江省*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 代碼 生成 方法 裝置 電子設備 存儲 介質 | ||
1.一種代碼生成方法,其特征在于,所述方法包括:
獲取第一源代碼的抽象語法樹;其中,所述第一源代碼是由第一語言編寫的;
從所述抽象語法樹中提取用于使所述第一源代碼和第二源代碼交互的關鍵信息;其中,所述第二源代碼是由第二語言編寫的;
將所述關鍵信息寫入預設的代碼模板,生成用于使所述第一源代碼和所述第二源代碼交互的綁定代碼;
所述代碼模板是根據用于使所述第一語言和所述第二語言交互的擴展庫編寫的。
2.根據權利要求1所述的方法,其特征在于,在所述將所述關鍵信息寫入預設的代碼模板,生成用于使所述第一源代碼和所述第二源代碼交互的綁定代碼之前,還包括:
使用用于使所述第一語言和所述第二語言交互的擴展庫編寫所述代碼模板。
3.根據權利要求2所述的方法,其特征在于,在所述將所述關鍵信息寫入預設的代碼模板,生成用于使所述第一源代碼和所述第二源代碼交互的綁定代碼,之后還包括:
將所述綁定代碼、所述擴展庫、及所述第一源代碼進行編譯,生成鏈接庫。
4.根據權利要求1至3任一項所述的方法,其特征在于,所述獲取第一源代碼的抽象語法樹,具體包括:
使用語法分析工具對所述第一源代碼進行分析,生成所述抽象語法樹。
5.根據權利要求4所述的方法,其特征在于,所述第一語言為C++語言;所述第二語言為python語言。
6.根據權利要求4所述的方法,其特征在于,所述語法分析工具包括libclang工具。
7.根據權利要求1所述的方法,其特征在于,所述關鍵信息包括以下至少一項:
變量名、函數名、函數參數、類名、常量名、及常量值。
8.根據權利要求2所述的方法,其特征在于,所述擴展庫為pybind11擴展庫、或者boost.python擴展庫。
9.一種代碼生成裝置,其特征在于,所述裝置包括:
獲取模塊,用于獲取第一源代碼的抽象語法樹;其中,所述第一源代碼是由第一語言編寫的;
提取模塊,用于從所述抽象語法樹中提取用于使所述第一源代碼和第二源代碼交互的關鍵信息;其中,所述第二源代碼是由第二語言編寫的;
生成模塊,用于將所述關鍵信息寫入預設的代碼模板,生成用于使第一源代碼和所述第二源代碼交互的綁定代碼,所述代碼模板是根據用于使所述第一語言和所述第二語言交互的擴展庫編寫的。
10.一種電子設備,其特征在于,包括:
存儲器,用于存儲程序;
處理器,用于執行所述存儲器存儲的所述程序,當所述程序被執行時,所述處理器用于執行如權利要求1至8中任一所述的代碼生成方法。
11.一種存儲介質,其特征在于,所述存儲介質中存儲有計算機程序,其中,所述計算機程序被設置為運行時執行如權利要求1至8中任一所述的代碼生成方法。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于網易(杭州)網絡有限公司,未經網易(杭州)網絡有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911376502.3/1.html,轉載請聲明來源鉆瓜專利網。





