[发明专利]一种代码转换方法及装置在审
申请号: | 202110420845.6 | 申请日: | 2021-04-19 |
公开(公告)号: | CN113031967A | 公开(公告)日: | 2021-06-25 |
发明(设计)人: | 杨吉明;商楠 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F8/51 | 分类号: | G06F8/51;G06F8/41 |
代理公司: | 北京中知法苑知识产权代理有限公司 11226 | 代理人: | 李明 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 代码 转换 方法 装置 | ||
1.一种代码转换方法,其特征在于,包括:
获取由动态编程语言编写的待转换代码;所述待转换代码为待转换为静态编程语言的代码;
确定所述待转换代码中的目标动态变量;所述目标动态变量为在所述待转换代码中被多次赋值、且被赋值的赋值类型存在多个的动态变量;
在转换过程中,针对所述目标动态变量,创建静态编程语言下与各个所述赋值类型分别对应的静态变量,或者,创建静态编程语言下的容器变量,所述容器变量中定义了用于表征动态编程语言下的每个所述赋值类型的类型。
2.根据权利要求1所述的方法,其特征在于,所述确定所述待转换代码中的目标动态变量,包括:
基于所述动态编程语言的语法规则,确定所述待转换代码中包含的各个动态变量;
基于所述各个动态变量在被赋值时对应的赋值代码,确定所述各个动态变量在所述待转换代码中被赋值时对应的赋值类型;
将所述各个动态变量中,被多次赋值、且被赋值的赋值类型存在多个的动态变量作为所述目标动态变量。
3.根据权利要求1所述的方法,其特征在于,所述创建静态编程语言下与各个所述赋值类型分别对应的静态变量,包括:
在检测到当前转换的目标动态变量被赋值的赋值类型变化时,创建静态编程语言下与所述新的赋值类型对应的静态变量。
4.根据权利要求3所述的方法,其特征在于,所述创建静态编程语言下与所述新的赋值类型对应的静态变量,包括:
若所述静态编程语言的语法规则不允许类型不同的变量具有相同的名称,则基于预设的变量名称创建规则,创建静态编程语言下与所述新的赋值类型对应的静态变量,以使转换为静态编程语言的代码中不存在具有相同名称且类型不同的变量。
5.根据权利要求4所述的方法,其特征在于,所述创建静态编程语言下与所述新的赋值类型对应的静态变量,还包括:
若所述静态编程语言的语法规则允许类型不同的变量具有相同的名称,则创建静态编程语言下与所述新的赋值类型对应的静态变量,并在声明所述静态变量的代码中加入类型可变标识;所述静态变量的名称与所述目标动态变量的名称相同。
6.根据权利要求1所述的方法,其特征在于,在创建静态编程语言下的容器变量之后,所述方法还包括:
在转换过程中,将所述容器变量作为所述目标动态变量在转换后的静态变量,并将所述容器变量对应的运算代码转换为所述容器变量对应的运算函数;所述运算函数定义了所述容器变量中每个类型对应的运算代码。
7.根据权利要求6所述的方法,其特征在于,在所述待转换代码转换为静态编程语言之后,所述方法还包括:
对转换后得到的目标代码进行编译,得到所述目标代码的可执行产物;
在执行包含所述容器变量的可执行产物时,根据所述容器变量对应的赋值类型,从所述运算函数中选取并执行与所述容器变量的赋值类型对应的运算代码。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应针对转换后得到的目标代码的修改指令,对转换后得到的目标代码进行修改,得到修改后的目标代码;
对修改后的目标代码进行编译,得到所述目标代码的可执行产物。
9.一种代码转换装置,其特征在于,包括:
获取模块,用于获取由动态编程语言编写的待转换代码;所述待转换代码为待转换为静态编程语言的代码;
确定模块,用于确定所述待转换代码中的目标动态变量;所述目标动态变量为在所述待转换代码中被多次赋值、且被赋值的赋值类型存在多个的动态变量;
转换模块,用于在转换过程中,针对所述目标动态变量,创建静态编程语言下与各个所述赋值类型分别对应的静态变量,或者,创建静态编程语言下的容器变量,所述容器变量中定义了用于表征动态编程语言下的每个所述赋值类型的类型。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110420845.6/1.html,转载请声明来源钻瓜专利网。