一种编程语言转换方法和装置制造方法及图纸

技术编号:30371328 阅读:21 留言:0更新日期:2021-10-16 17:51
本公开提供了一种编程语言转换方法和装置,包括:获取待转换语言文件;将待转换语言文件转换为生成待转换语言语法树;遍历待转换语言语法树,将待转换语言语法树转换为目标语言语法树,其中,包括将各个节点的数据类型转换为目标数据类型;将目标语言语法树转换成目标语言输出。本公开的编程语言转换方法提高一般类型编程语言相互转换的准确率,还可以将弱类型语言转换为强类型语言。型语言转换为强类型语言。型语言转换为强类型语言。

【技术实现步骤摘要】
一种编程语言转换方法和装置


[0001]本公开涉及金融科技领域,具体涉及到一种计算机编程领域,更具体地涉及一种编程语言转换的方法、装置、电子设备和介质。

技术介绍

[0002]随着计算机语言的发展,许多软件系统都面临这更新换代的问题。为了提升软件的灵活性更好,需要对软件系统的编程语言进行转换。
[0003]对于软件系统需要转换编程语言的情况,目前常规做法主要有两种:手工重构和基于语法树的简单转换工具。其中,手工重构成本较高,对于大型业务系统需要投入大量人力才能够完成;而基于语法树的简单转换工具还有很多不成熟地方,例如无法将弱类型语言向强类型语言进行转换。由于弱类型语言对相关变量的处理存在较多的容错或适配处理,导致转换后的强类型语言程序虽然程序逻辑语法正确,但由于强类型语言在表达式中存在强一致性要求,导致表达式前后的变量无法匹配,出现大量语法错误,需要人工手动处理,成本非常高。
[0004]故现需要一种编程语言转换方法和装置,可以将弱类型语言转换为强类型语言,在转换过程中,不仅对语法语义进行转换,还针对变量进行相应的转换处理。
[0005]公开内容
[0006]有鉴于此,本公开提出了一种编程语言转换方法,包括:获取待转换语言文件;将所述待转换语言文件转换为生成待转换语言语法树;遍历所述待转换语言语法树,将所述待转换语言语法树转换为目标语言语法树,其中,包括将各个所述节点的数据类型转换为目标数据类型;将目标语言语法树转换成目标语言输出。
[0007]可选地,将各个所述节点的数据类型转换为目标数据类型,包括:确定所述待转换语言语法树各个节点的类型,其中,所述节点的类型包括表达式根结点以及表达式根节点两侧的左子节点和右子节点;基于所述目标语言的数据类型,将各个节点的数据类型预转换;将所述表达式根节点两侧的左子节点的数据类型和右子节点的数据类型转为一致。
[0008]可选地,将各个表达式根节点两侧的左子节点的数据类型和右子节点的数据类型转为一致,包括:判断各个所述表达式根节点两侧的所述左子节点的数据类型和所述右子节点的数据类型是否一致;若不一致,则判断所述表达式根节点的是否为赋值节点;若是赋值节点,则基于所述左子节点的数据类型,转换所述右子节点的数据类型;若不是赋值节点,则基于数据类型优先级,将所述左子节点的数据类型和所述右子节点的数据类型转为一致。
[0009]可选地,基于数据类型优先级,将所述左子节点的数据类型和所述右子节点的数据类型转为一致,包括:比较所述左子节点数据类型的优先级和所述右子节点的数据类型的优先级;若所述左子节点的数据类型优先级更高,则强制转换所述右子节点的数据类型,使得所述右子节点数据类型与所述左子节点的数据类型一致;若所述右子节点的数据类型优先级更高,则强制转换所述左子节点的数据类型,使得所述左子节点数据类型与所述右
子节点的数据类型一致。
[0010]可选地,将所述待转换语言语法树转换为目标语言语法树,还包括:
[0011]获取待所述转换语言运行环境,并以HashMap形式存储;获取所述待转换语言与所述目标语言之间的语法转换规则,并以HashMap形式存储。
[0012]可选地,获取所述待转换语言与所述目标语言之间的语法转换规则,并以HashMap形式存储后,还包括:遍历所述待转换语言语法树的各个节点,根据所述语法转换规则,将所述各个节点进行语法语义转换。
[0013]可选地,将所述待转换语言文件转换为生成待转换语言语法树,包括:获取所述待转换语言运行环境,以及所述待转换语言的语法解析规则;将所述待转换语言文件转换为待转换语言文本;采用编译器将所述待转换语言文本,结合所述待转换语言运行环境以及所述待转换语言的语法解析规则,生成所述待转换语言语法树。
[0014]可选地,将目标语言语法树转换成目标语言输出,包括:遍历所述目标语言语法树的各个节点,生成目标语言文本;将所述目标语言文本转换为目标语言文件,并输出。
[0015]本公开另一方面还提供了一种编程语言转换装置,包括:获取模块,用于获取待转换语言文件;语法树生成模块,用于将所述待转换语言文件转换为生成待转换语言语法树;转换模块,用于遍历所述待转换语言语法树,将所述待转换语言语法树转换为目标语言语法树,其中,包括将各个所述节点的数据类型转换为目标数据类型;输出模块,将目标语言语法树转换成目标语言输出。
[0016]可选地,转换模块包括:预处理单元,用于确定所述待转换语言语法树各个节点的类型,其中,所述节点的类型包括表达式根结点以及表达式根节点两侧的左子节点和右子节点;数据类型预处理单元,用于基于所述目标语言的数据类型,将各个节点的数据类型预转换;数据类型转换单元,用于将所述表达式根节点两侧的左子节点和右子节点的数据类型转为一致。
[0017]可选地,转换模块还包括:语法转换单元,用于获取待转换语言运行环境,并以HashMap形式存储,获取所述待转换语言与所述目标语言之间的语法转换规则,并以HashMap形式存储,遍历所述待转换语言语法树的各个节点,根据所述语法转换规则,将所述各个节点进行语法语义转换。
[0018]本公开还提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至8中任一项所述的方法。
[0019]本公开提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1至8中任一项所述的方法。
[0020]从上述技术方案可以看出,本公开编程语言转换方法和装置至少具有以下有益效果:本公开在遍历待转换语言语法树的时候,不仅对语法做出来转换,还针对数据类型做出了转换,提高了编程语言转换的准确性,还解决了弱类型语言转换为强类型语言时,因强类型语言对数据类型的高要求,而出现的报错问题。
附图说明
[0021]图1示意性示出了根据本公开实施例的一种编程语言转换装置示例性系统架构;
[0022]图2示意性示出了示意性示出了根据本公开实施例的一种编程语言转换的方法;
[0023]图3示意性示出了根据本公开实施例的一种待转换语言语法树转换为目标语法树的步骤流程图;
[0024]图4示意性示出了根据本公开实施例的一种已经转换完语法和预转换完成数据类型的语法树示例;
[0025]图5示意性示出了根据本公开实施例的一种将表达式根节点两侧的数据类型转换为一致的方法;
[0026]图6示意性示出了根据本公开实施例的一种编程语言转换装置;
[0027]图7示意性示出了根据本公开实施例的一种适于实现编程语言转换方法的电子设备的方框图。
具体实施方式
[0028]为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
[0029]本公开某些实施例于后方将参照所附附图做更全面性本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种编程语言转换方法,其特征在于,包括:获取待转换语言文件;将所述待转换语言文件转换为生成待转换语言语法树;遍历所述待转换语言语法树,将所述待转换语言语法树转换为目标语言语法树,其中,包括将各个所述节点的数据类型转换为目标数据类型;将目标语言语法树转换成目标语言输出。2.根据权利要求1所述的编程语言转换方法,其特征在于,所述将各个所述节点的数据类型转换为目标数据类型,包括:确定所述待转换语言语法树各个节点的类型,其中,所述节点的类型包括表达式根结点以及表达式根节点两侧的左子节点和右子节点;基于所述目标语言的数据类型,将各个节点的数据类型预转换;将所述表达式根节点两侧的左子节点的数据类型和右子节点的数据类型转为一致。3.根据权利要求2所述的编程语言转换方法,其特征在于,所述将各个表达式根节点两侧的左子节点的数据类型和右子节点的数据类型转为一致,包括:判断各个所述表达式根节点两侧的所述左子节点的数据类型和所述右子节点的数据类型是否一致;若不一致,则判断所述表达式根节点的是否为赋值节点;若是赋值节点,则基于所述左子节点的数据类型,转换所述右子节点的数据类型;若不是赋值节点,则基于数据类型优先级,将所述左子节点的数据类型和所述右子节点的数据类型转为一致。4.根据权利要求3所述的编程语言转换方法,其特征在于,所述基于数据类型优先级,将所述左子节点的数据类型和所述右子节点的数据类型转为一致,包括:比较所述左子节点数据类型的优先级和所述右子节点的数据类型的优先级;若所述左子节点的数据类型优先级更高,则强制转换所述右子节点的数据类型,使得所述右子节点数据类型与所述左子节点的数据类型一致;若所述右子节点的数据类型优先级更高,则强制转换所述左子节点的数据类型,使得所述左子节点数据类型与所述右子节点的数据类型一致。5.根据权利要求1所述的编程语言转换方法,其特征在于,所述将所述待转换语言语法树转换为目标语言语法树,还包括:获取待所述转换语言运行环境,并以HashMap形式存储;获取所述待转换语言与所述目标语言之间的语法转换规则,并以HashMap形式存储。6.根据权利要求5所述的编程语言转换方法,其特征在于,所述获取所述待转换语言与所述目标语言之间的语法转换规则,并以HashMap形式存储后,还包括:遍历所述待转换语言语法树的各个节点...

【专利技术属性】
技术研发人员:张宏根胡凯乐李晓欢周倩
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1