CN111309301A - 程序语言转换方法、装置和转换设备 - Google Patents

程序语言转换方法、装置和转换设备 Download PDF

Info

Publication number
CN111309301A
CN111309301A CN202010058403.7A CN202010058403A CN111309301A CN 111309301 A CN111309301 A CN 111309301A CN 202010058403 A CN202010058403 A CN 202010058403A CN 111309301 A CN111309301 A CN 111309301A
Authority
CN
China
Prior art keywords
language
haxe
typescript
syntax tree
target program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010058403.7A
Other languages
English (en)
Other versions
CN111309301B (zh
Inventor
钟永红
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong 3vjia Information Technology Co Ltd
Original Assignee
Guangdong 3vjia Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong 3vjia Information Technology Co Ltd filed Critical Guangdong 3vjia Information Technology Co Ltd
Priority to CN202010058403.7A priority Critical patent/CN111309301B/zh
Publication of CN111309301A publication Critical patent/CN111309301A/zh
Application granted granted Critical
Publication of CN111309301B publication Critical patent/CN111309301B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供了一种程序语言转换方法、装置和转换设备,涉及计算机技术领域,方法包括:基于目标程序确定针对Typescript语言的逻辑语法树;基于Typescript语言与Haxe语言的语法特征,确定Typescript语言与Haxe语言的映射关系;其中,语法特征包括类型、关键字、运算符、类型断言、语法和函数的一种或多种;基于逻辑语法树与映射关系,将目标程序转换为Haxe语言。本发明解决了由Typescript语言向Haxe语言进行转换的问题,同时提高了工作效率和代码转换的稳定性。

Description

程序语言转换方法、装置和转换设备
技术领域
本发明涉及计算机技术领域,尤其是涉及一种程序语言转换方法、装置和转换设备。
背景技术
目前,互联网公司需要根据产品的使用及更新情况不断地进行技术迭代,程序架构也需要随之不断地进行调整。同时,根据需求改变编码的主要语言也是十分必要的。由于很多程序架构的代码量已经十分的庞大,因此利用新的编程语言重新进行编程耗时耗力,同时也会影响目前代码的业务运作。
Haxe是一门新兴的开源编程语言,是一种多平台语言,使用Haxe开发的程序可以被编译成JavaScript、Flash、NekoVM、PHP、C++、C#和Java,但是目前并未有将typescript语言转换成Haxe的方法。
发明内容
本发明的目的在于提供一种程序语言转换方法、装置和转换设备,解决了由Typescript语言向Haxe语言进行转换的技术问题,同时提高了工作效率和代码转换的稳定性。
第一方面,实施例提供一种程序语言转换方法,所述方法包括:基于目标程序确定针对Typescript语言的逻辑语法树;基于所述Typescript语言与Haxe语言的语法特征,确定所述Typescript语言与所述Haxe语言的映射关系;其中,所述语法特征包括类型、关键字、运算符、类型断言、语法和函数的一种或多种;基于所述逻辑语法树与所述映射关系,将所述目标程序转换为所述Haxe语言。
在可选的实施方式中,所述逻辑语法树包括多个节点;所述方法还包括:对所述逻辑语法树的所述节点进行遍历,并确定每个所述节点携带的节点信息;其中,所述节点信息包括至少一种以下参数:文件信息、命名空间、import信息、类、类的成员、函数的组成部分。
在可选的实施方式中,所述基于所述目标程序确定所述Typescript语言的逻辑语法树的步骤,包括:通过指定的命令编译所述目标程序,并判断所述目标程序是否编译成功;如果是,基于所述目标程序形成所述Typescript语言的逻辑语法树。
在可选的实施方式中,所述确定所述Typescript语言与所述Haxe语言的映射关系的步骤,包括:基于所述逻辑语法树的所述节点信息,确定所述Typescript语言与所述Haxe语言的映射关系。
在可选的实施方式中,所述基于所述逻辑语法树与所述映射关系,将所述目标程序转换为所述Haxe语言的步骤,包括:基于所述逻辑语法树的节点信息及所述映射关系,将所述目标程序转换为所述Haxe语言。
在可选的实施方式中,所述方法还包括:针对所述Typescript语言的所述类型断言,按照预设的方式对所述Haxe语言进行类型转换。
在可选的实施方式中,所述方法还包括:在所述Haxe语言中,通过指定的接口实现所述Typescript语言的所述运算符的操作。
第二方面,实施例提供一种程序语言转换装置,所述装置应用于将目标程序由Typescript语言向Haxe语言进行转换的场景,所述装置包括:第一确定模块,用于基于所述目标程序确定所述Typescript语言的逻辑语法树;第二确定模块,用于基于所述Typescript语言与所述Haxe语言的语法特征,确定所述Typescript语言与所述Haxe语言的映射关系;其中,所述语法特征包括类型、关键字、运算符、类型断言、语法和函数的一种或多种;转换模块,用于基于所述逻辑语法树与所述映射关系,将所述目标程序转换为所述Haxe语言。
在可选的实施方式中,所述逻辑语法树包括多个节点;所述装置还包括:第三确定模块,用于对所述逻辑语法树的所述节点进行遍历,并确定每个所述节点携带的节点信息;其中,所述节点信息包括至少一种以下参数:文件信息、命名空间、import信息、类、类的成员、函数的组成部分。
第三方面,实施例提供一种转换设备,包括处理器和存储器;所述存储器上存储有计算机程序;所述计算机程序在被所述处理器运行时如前述实施方式任一项所述的方法。
本发明实施例提供的程序语言转换方法、装置和转换设备,应用于将目标程序由Typescript语言向Haxe语言进行转换的场景,转换方法包括:基于目标程序确定针对Typescript语言的逻辑语法树,基于Typescript语言与Haxe语言的语法特征,确定Typescript语言与Haxe语言的映射关系,其中,语法特征包括类型、关键字、运算符、类型断言、语法和函数的一种或多种,基于逻辑语法树与映射关系,将目标程序转换为Haxe语言。通过确定Typescript语言的逻辑语法树及Typescript语言与Haxe语言的映射关系,可以将Typescript语言向Haxe语言进行转换,无需重新编码,提高了工作效率,同时由于考虑到类型、关键字、运算符、类型断言、语法和函数的一种或多种语法特征,可以保证代码转换的稳定性。因此,本发明实施例解决了由Typescript语言向Haxe语言进行转换的问题,同时提高了工作效率和代码转换的稳定性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种程序语言转换方法的流程示意图;
图2为本发明实施例提供的一种Typescript语言代码的示意图;
图3为本发明实施例提供的一种针对图2所示的Typescript语言代码的逻辑语法树的示意图;
图4为本发明实施例提供的一种程序语言转换装置的结构示意图;
图5为本发明实施例提供的一种转换设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
考虑到现有的互联网公司在进行技术迭代时如果需要转换编程语言时,并未有将typescript语言转换成Haxe的方法,本发明实施例提供了一种程序语言转换方法、装置和转换设备,解决了由Typescript语言向Haxe语言进行转换的技术问题,同时提高了工作效率和代码转换的稳定性。
为便于理解,首先对本发明实施例提供的一种程序语言转换方法进行详细介绍,参见如图1所述的一种程序语言转换方法的流程示意图,该方法应用于将目标程序由Typescript语言向Haxe语言进行转换的场景,主要包括如下步骤S102至步骤106:
步骤S102:基于目标程序确定针对Typescript语言的逻辑语法树。
上述目标程序指的是用来转换的程序代码,在本实施例中,目标程序为基于Typescript语言进行编程的程序代码,逻辑语法树为Typescript语言进行编程的程序代码在内存中存储的一种树状结构,逻辑语法树通常为由多个节点组成。节点通常包括父节点、兄弟节点、子节点等多种。通过基于目标程序确定的针对Typescript语言的逻辑语法树,可以确定程序代码的结构及节点信息,从而有助于对程序代码进行解析及替换。
步骤S104:基于Typescript语言与Haxe语言的语法特征,确定Typescript语言与Haxe语言的映射关系。由于Typescript语言与Haxe语言在语法特征上存在语法层面的区别,诸如,类型、关键字、运算符、类型断言、语法和函数等,根据Typescript语言与Haxe语言的语法特征的区别可以确定Typescript语言与Haxe语言的映射关系,诸如Typescript语言的number[]与Haxe语言的Array<Float>分别为对应语言的数组类型,因此可以确定为一组映射关系。
步骤S106:基于逻辑语法树与映射关系,将目标程序转换为Haxe语言。
在一种实施方式中,根据目标程序对应的逻辑语法树及Typescript语言与Haxe语言的映射关系,可以将Typescript语言的代码转换为Haxe语言的代码,从而完成Typescript语言到Haxe语言的转换。
本发明实施例提供的程序语言转换方法,应用于将目标程序由Typescript语言向Haxe语言进行转换的场景,转换方法包括:基于目标程序确定针对Typescript语言的逻辑语法树,基于Typescript语言与Haxe语言的语法特征,确定Typescript语言与Haxe语言的映射关系,其中,语法特征包括类型、关键字、运算符、类型断言、语法和函数的一种或多种,基于逻辑语法树与映射关系,将目标程序转换为Haxe语言。通过确定Typescript语言的逻辑语法树及Typescript语言与Haxe语言的映射关系,可以将Typescript语言向Haxe语言进行转换,无需重新编码,提高了工作效率,同时由于考虑到类型、关键字、运算符、类型断言、语法和函数的一种或多种语法特征,可以保证代码转换的稳定性。因此,本发明实施例解决了由Typescript语言向Haxe语言进行转换的问题,同时提高了工作效率和代码转换的稳定性。
在一种实施方式中,为了能够使得Typescript语言向Haxe语言转换的准确率更高,需要对Typescript语言和Haxe语言的语法特征进行分析,诸如,Typescript语言和Haxe语言类型特征的对比参见表1:
表1Typescript语言与Haxe语言类型特征的对比
Figure BDA0002371554290000061
Figure BDA0002371554290000071
另外,语法特征的区别还包括:Typescript语言与Haxe语言的关键字有区别,有可能在Typescript语言中可以正常使用的变量名,转成Haxe语言之后,该名称因为与Haxe语言的关键字重名而违法;Typescript语言有类型断言,Haxe语言没有;运算符差异:Typescript语言支持的typeOf与instanceof在Haxe语言中不支持;Haxe语言没有for...of...和foreach语法;Haxe语言没有Lambda函数等。针对各种区别进行相应的映射,得到映射关系,可以使目标程序由Typescript语言向Haxe语言进行转换。
在一种实施方式中,逻辑语法树包括多个节点,诸如,一个Typescript程序的文件信息、命名空间、import信息、类、类的各个成员、函数内各组成部分,都为相互独立又相互联系的节点,根节点为文件节点,命名空间节点为文件节点的子节点,import节点与类节点为命名空间节点的子节点,以此类推,节点之间的关系形成了一个树状图,从而得到了语法树。
为便于对逻辑语法树进行理解,参见图2如所示的一种Typescript语言代码的示意图,针对图2所示的Typescript语言代码,可以确定语法树为如图3所示的一种针对图2所示的Typescript语言代码的逻辑语法树的示意图。因此当确定了需要转换的目标程序后,可以基于目标程序确定对应的逻辑语法树及逻辑语法树包含的节点。节点包括节点类型、首字节位置、末字节位置、携带注释、描述节点、名字、值、父节点、兄弟节点、子节点等,根据图3所示的语法树,可以推算出当前节点的具体信息,以及当前节点的父节点、兄弟节点、子节点的具体信息。因此,使用Typescript代码当中形成Typescript语言逻辑语法树的部分解析文件,则可以获取到改文件中所有代码的详细信息。计算机可以根据这些信息判断该节点是什么类型的,节点携带的信息是否有问题,进一步获取到父节点、兄弟节点及子节点的具体信息,以此类推,可以对整个Typescript代码进行语法分析。
在一种实施方式中,在根据目标程序确定对应的逻辑语法树及逻辑语法树包含的节点后,需要对逻辑语法树的节点进行遍历,并确定每个节点携带的节点信息,其中,节点信息包括至少一种以下参数:文件信息、命名空间、import信息、类、类的成员、函数的组成部分。当目标程序为多个时,也即多个Typescript文件,则每解析一个文件,都需要对该文件的节点进行遍历,从而对各节点所携带的节点信息进行分析与判断,以便在代码中写出同样含义的Haxe代码保存起来。以此类推,当遍历完整个文件的所有节点,则可以根据每个节点的含义及映射关系将每个节点转换成相应含义的代码。
在一种实施方式中,还可以基于上述逻辑语法树的节点信息,确定Typescript语言与Haxe语言的映射关系,并基于逻辑语法树的节点信息及Typescript语言与Haxe语言的映射关系,将目标程序由Typescript语言转换为Haxe语言。
在一种实施方式中,根据不同的语法特征确定相应的映射关系,在类型转换时,将Typescript语言的元祖使用Haxe语言的Array代替,当undefined和never两个类型为返回值类型时,使用Void代替,当某变量为undefined或never时,使用null代替,对于Typescript语言的联合类型,在Haxe中使用Dynamic代替。
在一种实施方式中,在转换变量或函数时,首先检查命名是否与Haxe关键字有冲突,如果有冲突,就提示开发人员修改此变量或函数名,或者批量处理该命名,在名称后面加上编号,使之不再重名。诸如:let abstract=null;在Typescript语言当中,abstract是一个合法名称,转换成Haxe之后,与Haxe关键字abstract重名,假设转换时处理成abstract_01,那么就避免了重名。
针对Typescript语言的类型断言的转换,类型断言语法:<类型>值或者值as类型,而在Haxe语言当中,并没有类型断言这样的语法,因此需要进行类型强转。诸如,将Float型变量A转成Int型:TS:<int>A Haxe:Std.int(A)。
在Haxe语言中,可以通过指定的接口实现Typescript语言的运算符的操作。诸如对于运算符差异,在Haxe通过接口实现运算符的含义,保证实际运行结果与Typescript语言保持一致,以此来解决不支持的问题。具体的,以关系运算符(==)举例:当Typescript语言:var a1:number=-2;var a2:number=0;if(a2==null){console.log("NULL");}语义正确,编译不报错。Number变量a1可以与null比较。Haxe语言:var a1:Float=-2;vara2:Float=0;if(a2==null){trace("NULL");}会出现编译报错:On static platforms,null can't be used as basic type Float。此时需要通过接口来实现,实现出接口之后,遇到不同类型变量或数据进行比较时,就可以转换成调用此接口。此时,该Haxe代码可编译通过,并且运行结果与Typescript语言一致。
另外,Typescript语言的for...of...与foreach语法使用Haxe中的for...in...代替,限制遍历值的类型与key值的类型,不满足要求的转成while循环,以此来保证运行结果与Typescript语言一致。Typescript语言的Lambda函数使用内部函数代替。
在一种实施方式中,在上述基于目标程序确定Typescript语言的逻辑语法树的之前,需要首先通过指定的命令编译目标程序,并判断目标程序是否编译成功,指定的命令可以为tsc命令,如果编译成功,则基于目标程序形成Typescript语言的逻辑语法树。通过对目标程序进行编译,可以保证进入转换阶段的Typescript代码本身是正确的,从而避免由于Typescript代码错误导致的转换结果不准确的问题。
对于上述程序语言转换方法,本发明实施例还提供了一种程序语言转换装置,参见如图4所示的一种程序语言转换装置的结构示意图,该装置应用于将目标程序由Typescript语言向Haxe语言进行转换的场景,主要包括以下部分:
第一确定模块402,用于基于目标程序确定Typescript语言的逻辑语法树;
第二确定模块404,用于基于Typescript语言与Haxe语言的语法特征,确定Typescript语言与Haxe语言的映射关系;其中,语法特征包括类型、关键字、运算符、类型断言、语法和函数的一种或多种;
转换模块406,用于基于逻辑语法树与映射关系,将目标程序转换为Haxe语言。
本发明实施例提供的程序语言转换装置,应用于将目标程序由Typescript语言向Haxe语言进行转换的场景,转换装置包括:基于目标程序确定针对Typescript语言的逻辑语法树,基于Typescript语言与Haxe语言的语法特征,确定Typescript语言与Haxe语言的映射关系,其中,语法特征包括类型、关键字、运算符、类型断言、语法和函数的一种或多种,基于逻辑语法树与映射关系,将目标程序转换为Haxe语言。通过确定Typescript语言的逻辑语法树及Typescript语言与Haxe语言的映射关系,可以将Typescript语言向Haxe语言进行转换,无需重新编码,提高了工作效率,同时由于考虑到类型、关键字、运算符、类型断言、语法和函数的一种或多种语法特征,可以保证代码转换的稳定性。因此,本发明实施例解决了由Typescript语言向Haxe语言进行转换的问题,同时提高了工作效率和代码转换的稳定性。
在一种实施方式中,逻辑语法树包括多个节点;上述装置还包括:第三确定模块,用于对逻辑语法树的节点进行遍历,并确定每个节点携带的节点信息;其中,节点信息包括至少一种以下参数:文件信息、命名空间、import信息、类、类的成员、函数的组成部分。
在一种实施方式中,上述第一确定模块,进一步用于通过指定的命令编译目标程序,并判断目标程序是否编译成功;如果是,基于目标程序形成Typescript语言的逻辑语法树。
在一种实施方式中,上述第二确定模块,进一步用于基于逻辑语法树的节点信息,确定Typescript语言与Haxe语言的映射关系。
在一种实施方式中,上述转换模块,进一步用于基于逻辑语法树的节点信息及映射关系,将目标程序转换为Haxe语言。
在一种实施方式中,上述装置还包括:类型转换模块,用于针对Typescript语言的类型断言,按照预设的方式对Haxe语言进行类型转换。
在一种实施方式中,上述装置还包括:接口实现模块,用于在Haxe语言中,通过指定的接口实现Typescript语言的运算符的操作。
本发明实施例还提供了一种转换设备,具体的,该转换设备包括处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被所述处理器运行时执行如上所述实施方式的任一项所述的方法。
图5为本发明实施例提供的一种转换设备的结构示意图,该转换设备100包括:处理器50,存储器51,总线52和通信接口53,所述处理器50、通信接口53和存储器51通过总线52连接;处理器50用于执行存储器51中存储的可执行模块,例如计算机程序。
其中,存储器51可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口53(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线52可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器51用于存储程序,所述处理器50在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器50中,或者由处理器50实现。
处理器50可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器50中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器50可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器51,处理器50读取存储器51中的信息,结合其硬件完成上述方法的步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种程序语言转换方法,其特征在于,所述方法包括:
基于目标程序确定针对Typescript语言的逻辑语法树;
基于所述Typescript语言与Haxe语言的语法特征,确定所述Typescript语言与所述Haxe语言的映射关系;其中,所述语法特征包括类型、关键字、运算符、类型断言、语法和函数的一种或多种;
基于所述逻辑语法树与所述映射关系,将所述目标程序转换为所述Haxe语言。
2.根据权利要求1所述的方法,其特征在于,所述逻辑语法树包括多个节点;所述方法还包括:
对所述逻辑语法树的所述节点进行遍历,并确定每个所述节点携带的节点信息;其中,所述节点信息包括至少一种以下参数:文件信息、命名空间、import信息、类、类的成员、函数的组成部分。
3.根据权利要求1所述的方法,其特征在于,所述基于所述目标程序确定所述Typescript语言的逻辑语法树的步骤,包括:
通过指定的命令编译所述目标程序,并判断所述目标程序是否编译成功;
如果是,基于所述目标程序形成所述Typescript语言的逻辑语法树。
4.根据权利要求2所述的方法,其特征在于,所述确定所述Typescript语言与所述Haxe语言的映射关系的步骤,包括:
基于所述逻辑语法树的所述节点信息,确定所述Typescript语言与所述Haxe语言的映射关系。
5.根据权利要求4所述的方法,其特征在于,所述基于所述逻辑语法树与所述映射关系,将所述目标程序转换为所述Haxe语言的步骤,包括:
基于所述逻辑语法树的节点信息及所述映射关系,将所述目标程序转换为所述Haxe语言。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对所述Typescript语言的所述类型断言,按照预设的方式对所述Haxe语言进行类型转换。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述Haxe语言中,通过指定的接口实现所述Typescript语言的所述运算符的操作。
8.一种程序语言转换装置,其特征在于,所述装置应用于将目标程序由Typescript语言向Haxe语言进行转换的场景,所述装置包括:
第一确定模块,用于基于所述目标程序确定所述Typescript语言的逻辑语法树;
第二确定模块,用于基于所述Typescript语言与所述Haxe语言的语法特征,确定所述Typescript语言与所述Haxe语言的映射关系;其中,所述语法特征包括类型、关键字、运算符、类型断言、语法和函数的一种或多种;
转换模块,用于基于所述逻辑语法树与所述映射关系,将所述目标程序转换为所述Haxe语言。
9.根据权利要求8所述的装置,其特征在于,所述逻辑语法树包括多个节点;所述装置还包括:
第三确定模块,用于对所述逻辑语法树的所述节点进行遍历,并确定每个所述节点携带的节点信息;其中,所述节点信息包括至少一种以下参数:文件信息、命名空间、import信息、类、类的成员、函数的组成部分。
10.一种转换设备,其特征在于,包括处理器和存储器;
所述存储器上存储有计算机程序;所述计算机程序在被所述处理器运行时如权利要求1至7任一项所述的方法。
CN202010058403.7A 2020-01-17 2020-01-17 程序语言转换方法、装置和转换设备 Active CN111309301B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010058403.7A CN111309301B (zh) 2020-01-17 2020-01-17 程序语言转换方法、装置和转换设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010058403.7A CN111309301B (zh) 2020-01-17 2020-01-17 程序语言转换方法、装置和转换设备

Publications (2)

Publication Number Publication Date
CN111309301A true CN111309301A (zh) 2020-06-19
CN111309301B CN111309301B (zh) 2023-09-01

Family

ID=71148876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010058403.7A Active CN111309301B (zh) 2020-01-17 2020-01-17 程序语言转换方法、装置和转换设备

Country Status (1)

Country Link
CN (1) CN111309301B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112104709A (zh) * 2020-08-28 2020-12-18 腾讯科技(深圳)有限公司 智能合约的处理方法、装置、介质及电子设备
CN112596841A (zh) * 2020-12-24 2021-04-02 厦门亿联网络技术股份有限公司 界面语言切换方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108182069A (zh) * 2017-12-28 2018-06-19 深圳市创梦天地科技股份有限公司 程序语言转换方法、终端设备及计算机可读介质
CN110007926A (zh) * 2019-04-17 2019-07-12 广东三维家信息科技有限公司 语言转换方法及装置
CN110554875A (zh) * 2018-05-30 2019-12-10 北京三快在线科技有限公司 代码转换方法及装置、电子设备、存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108182069A (zh) * 2017-12-28 2018-06-19 深圳市创梦天地科技股份有限公司 程序语言转换方法、终端设备及计算机可读介质
CN110554875A (zh) * 2018-05-30 2019-12-10 北京三快在线科技有限公司 代码转换方法及装置、电子设备、存储介质
CN110007926A (zh) * 2019-04-17 2019-07-12 广东三维家信息科技有限公司 语言转换方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112104709A (zh) * 2020-08-28 2020-12-18 腾讯科技(深圳)有限公司 智能合约的处理方法、装置、介质及电子设备
CN112596841A (zh) * 2020-12-24 2021-04-02 厦门亿联网络技术股份有限公司 界面语言切换方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN111309301B (zh) 2023-09-01

Similar Documents

Publication Publication Date Title
US7657878B2 (en) Compiler, method of compiling and program development tool
CN106469049B (zh) 一种文件扫描的方法及装置
US20100185669A1 (en) Efficient incremental parsing of context sensitive programming languages
CN111309301B (zh) 程序语言转换方法、装置和转换设备
CN114968807A (zh) 代码检测方法、装置、电子设备及可读存储介质
CN111222141B (zh) 一种汽车电控单元代码漏洞分析方法和系统
CN110543427A (zh) 测试用例存储方法、装置、电子设备及存储介质
CN113901083A (zh) 基于多解析器的异构数据源操作资源解析定位方法和设备
CN110851514B (zh) 基于flink的etl处理方法
CN110347588B (zh) 软件验证方法、装置、计算机设备和存储介质
CN111580821B (zh) 脚本绑定方法、装置、电子设备及计算机可读存储介质
EP3974964A1 (en) Automated generation of software patches
CN114756456A (zh) 一种持续集成方法、装置以及计算机可读存储介质
CN111381828A (zh) 生成代码文件的语法树的方法、装置及电子设备
TWI746520B (zh) 編譯計算機語言的方法和裝置
Brockschmidt et al. Certifying safety and termination proofs for integer transition systems
CN110286912B (zh) 代码检测方法、装置及电子设备
CN112948400A (zh) 一种数据库管理方法、数据库管理装置及终端设备
CN114153447B (zh) 一种自动化生成ai训练代码的方法
CN115951890A (zh) 一种不同前端框架间的代码转换方法及系统及装置
Anderson et al. Supporting analysis of SQL queries in PHP AiR
CN112905232B (zh) 一种基于语法分析树的程序代码平行语料挖掘方法及系统
CN115310095A (zh) 一种区块链智能合约混合形式化验证方法及系统
CN114816364A (zh) 基于Swagger动态生成范本文件的方法、装置及应用
KR20090011974A (ko) 컴파일 대상 파일 추출 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant