CN110007926B - 语言转换方法及装置 - Google Patents
语言转换方法及装置 Download PDFInfo
- Publication number
- CN110007926B CN110007926B CN201910306530.1A CN201910306530A CN110007926B CN 110007926 B CN110007926 B CN 110007926B CN 201910306530 A CN201910306530 A CN 201910306530A CN 110007926 B CN110007926 B CN 110007926B
- Authority
- CN
- China
- Prior art keywords
- language
- haxe
- action script
- grammar
- script language
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种语言转换方法及装置,应用于转换设备,涉及计算机技术领域。转换设备中存储有包括Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系的映射规则。在获得基于Action Script语言的目标程序后,生成与该目标程序对应的语法树,然后根据映射规则及语法树将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序。由此,可自动将基于Action Script语言实现的程序转换为基于Haxe语言实现的程序,不需要再浪费人力对以前通过Action Script语言实现的程序进行重新开发。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种语言转换方法及装置。
背景技术
Adobe公司已宣布Adobe将在2020年停止Flash播放器的更新和分发,意味着Flash被放弃。应用于Flash平台的语言为Action Script语言,在Flash被放弃的情况下,若要使各个领域基于Action Script语言开发的项目能够继续,只能让开发人员将已基于ActionScript语言实现的程序,通过目标平台语言重新实现一遍。在大型的项目或者数量非常多的小项目中,使用这种方法不仅需要大量熟悉Action Script语言和目标平台语言的开发人员,并且需要消耗大量时间才能完成。对于持续开发中的项目,采用上述方式进行脱Flash时,整个后续开发都将停止,直到整个脱Flash结束后才能继续,极大地浪费了人力。
发明内容
为了克服现有技术中的上述不足,本申请实施例的目的在于提供一种语言转换方法及装置,其能够快速自动将基于Action Script语言实现的程序转换为基于Haxe语言实现的程序,快速完成所有Flash程序脱离flash的任务,不需要通过人力将Action Script语言实现的程序根据Haxe语言重新实现一遍,可避免浪费人力及对采用人力重新实现时对软件的稳定性产生冲击,同时节省时间。
第一方面,本申请实施例提供一种语言转换方法,应用于转换设备,所述转换设备中存储有映射规则,所述映射规则包括Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系,Action Script语言中的语法与Haxe语言中的语法的映射关系对应的Action Script语言中的语法类型包括:常用基础类型、操作符、变量声明、类声明、函数声明、函数调用、参数、throw模块、包、取值、流程语句和访问修饰符,所述方法包括:
获得基于Action Script语言的目标程序,并生成与所述目标程序对应的语法树;
根据所述映射规则及语法树将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序。
第二方面,本申请实施例提供一种语言转换装置,应用于转换设备,所述转换设备中存储有映射规则,所述映射规则包括Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系,Action Script语言中的语法与Haxe语言中的语法的映射关系对应的Action Script语言中的语法类型包括:常用基础类型、操作符、变量声明、类声明、函数声明、函数调用、参数、throw模块、包、取值、流程语句和访问修饰符,所述装置包括:
生成模块,用于获得基于Action Script语言的目标程序,并生成与所述目标程序对应的语法树;
转换模块,用于根据所述映射规则及语法树将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序。
相对于现有技术而言,本申请具有以下有益效果:
在得到基于Action Script语言的目标程序后,首先生成该目标程序对应的语法树,然后根据该语法树、包括Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系的映射规则,将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序。由此,无论是针对大型的Flash项目或者数量非常多的小Flash项目,均可快速将所有基于Action Script语言实现的程序自动转换成基于Haxe语言的程序,从而利用Haxe语言的跨平台能力和性能优势。该方式可快速的完成所有Flash程序的脱Flash任务,不用浪费人力再去对以前的产品进行重复开发,也不会对软件的稳定性产生冲击。
为使申请的上述目的、特征和优点能更明显易懂,下文特举本申请较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本申请实施例提供的转换设备的方框示意图;
图2是本申请实施例提供的语言转换方法的流程示意图之一;
图3是本申请实施例提供的Action Script语言中的语法与Haxe语言中的语法的映射关系举例示意图;
图4是本申请实施例提供的语言转换方法的流程示意图之二;
图5是本申请实施例提供的语言转换装置的方框示意图之一;
图6是本申请实施例提供的语言转换装置的方框示意图之二。
图标:100-转换设备;110-存储器;120-存储控制器;130-处理器;200-语言转换装置;210-配置模块;220-生成模块;230-转换模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参照图1,图1是本申请实施例提供的转换设备100的方框示意图。所述转换设备100可以是,但不限于,个人电脑(personal computer,PC)、平板电脑、服务器等。所述转换设备100用于将基于Action Script语言实现的程序自动转换为基于Haxe语言实现的程序。
所述转换设备100可以包括语言转换装置200、存储器110、存储控制器120及处理器130。所述存储器110、存储控制器120及处理器130各元件之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器110中存储有映射规则及语言转换装置200,该映射规则可以包括Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系,所述语言转换装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中的软件功能模块。所述处理器130通过运行存储在存储器110内的软件程序以及模块,如本申请实施例中的语言转换装置200,从而执行各种功能应用以及数据处理,即实现本申请实施例中的语言转换方法。
其中,所述存储器110可以是,但不限于,随机存取存储器(Random AccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(ProgrammableRead-Only Memory,PROM)等。其中,存储器110用于存储程序,所述处理器130在接收到执行指令后,执行所述程序。所述处理器130以及其他可能的组件对存储器110的访问可在所述存储控制器120的控制下进行。所述处理器130可能是一种集成电路芯片,具有信号的处理能力。
上述的处理器130可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
可以理解,图1所示的结构仅为示意,转换设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
请参照图2,图2是本申请实施例提供的语言转换方法的流程示意图之一。所述语言转换方法应用于转换设备100,所述转换设备100中存储有映射规则。下面对语言转换方法的具体流程进行详细阐述。
步骤S120,获得基于Action Script语言的目标程序,并生成与所述目标程序对应的语法树。
在本实施例中,基于Action Script语言的目标程序,是以Action Script语言实现的、且需要进行语言转换的程序。获得该目标程序的方式可以是,根据自动生成的命令、接收到的选择操作等从自身存储的基于Action Script语言的程序中确定以得到的,也可以是通过接收由其他设备发送的基于Action Script语言的程序得到的。在获得基于Action Script语言的目标程序后,可生成与该基于Action Script语言实现的目标程序对应的语法树。可选地,可利用目前已有的falcon工具对基于Action Script语言实现的目标程序进行解析,得到对应的语法树。
作为一种实施方式,可准备flex-falcon,搭建相关flex-falcon环境,以正常将基于Action Script语言的目标程序进行编译,并生成与Action Script语言无关的语法树。
步骤S130,根据所述映射规则及语法树将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序。
在本实施例中,所述映射规则包括Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系。该映射关系包括Action Script语言中的语法与Haxe语言中的语法的之间映射关系、Action Script语言中的语法与以Haxe语言实现的函数之间的映射关系。
Action Script语言中的语法与Haxe语言中的语法的之间映射关系,是指作用相同的Action Script语言中的语法与Haxe语言中的语法之间的对应关系。Action Script语言中的语法与以Haxe语言实现的函数之间的映射关系,是指作用相同的Action Script语言中的语法与以Haxe语言实现的函数之间的对应关系,该语法是Action Script语言中有、但Haxe语言中没有的语法,该语法可以是Action Script语言中的一般的语法,或是以Action Script语言实现的语法糖,与该语法对应的以Haxe语言实现的函数可以是一个一般的在Haxe中实现的一个函数,或者是表达式,或者其他语法糖。
在得到语法树后,可以根据语法树及包括上述映射关系的映射规则,将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序。在转换过程中,针对Action Script语言和Haxe语言存在的相同的关键字(即作用相同的语法),可根据ActionScript语言中的语法与Haxe语言中的语法之间的映射关系,直接进行简单文本转换映射即可。针对Action Script语言存在、Haxe语言不存在的语法(语法糖),可根据Action Script语言中的语法与以Haxe语言实现的函数之间的映射关系,将该语法(语法糖)转换成在Haxe中实现的一个函数(或表达式、其他语法糖等)。
在本实施例中,可对Action Script语言的语法进行模块化抽象,将ActionScript语言的语法分为多种类型。Action Script语言中的语法与Haxe语言中的语法的映射关系对应的Action Script语言中的语法类型包括:常用基础类型、操作符、变量声明、类声明、函数声明、函数调用、参数、throw模块、包、取值、流程语句和访问修饰符。
下面对每个类型进行说明:
操作符:普通一元/二元/三元操作符。
变量声明:普通变量(有/没有默认值)。
类声明:继承处理。
函数声明:普通函数/成员函数/构造函数/重写函数,接口,函数返回值。
函数调用:普通/成员函数调用静态成员函数,super函数。
参数:函数参数声明(有/没有默认值)函数参数调用赋值,默认参,可变参。
throw模块:try…catch/throw。
包:包的引入,包的声明
取值:.和[]。
流程语句:if/for/foreach/while/do…while/swich…case…default。
访问修饰符:public/protected/private。
请参照图3,图3是本申请实施例提供的Action Script语言中的语法与Haxe语言中的语法的映射关系举例示意图。下面结合图3对Action Script语言中的语法与Haxe语言中的语法的映射关系进行举例说明。
图3中的内置类型对应上文的常用基础类型。Action Script语言和Haxe语言中有极其相似的内置类型,建立相似的内置类型之间的映射关系,和普通相同关键字处理一样,转换时只需要进行字符串替换处理。比如,将Action script语言中的“Boolean”转换为Haxe语言中的“Bool”,将Action script语言中的“Number”转换为Haxe语言中的“Float”。
建立作用相同的操作符之间的映射关系,转换时进行字符串转换处理即可。比如,Action script语言中的“++”对应Haxe语言中的“++”,Action script语言中的“+|-|*|/”对应Haxe语言中的“+|-|*|/”。
对于变量声明,格式不变,对类型、修饰符进行转换。比如,“public var value:int;”转换为“public var value:Int”。
类声明包括类/接口声明,对于类/接口声明,格式不变、修饰符转换。比如,将“public interface InterFName{}”转换为“interface InterFName{}”。
对于函数声明,若是普通函数,则转换时,格式不变,进行修饰符转换和类型关键字转换。比如,将“public function funcName():void{}”转换为“public functionfuncName():Void{}”。若是和类名一样的构造函数,则转换时将函数名换成new。比如,将“public function clsName(){}”转换为“public function new(){}”。若函数声明中包括可变参数列表,则修改写法和参数参数。比如,将“public function funcName(...params):void{}”转换为“public function funcName(params:Array<Dynamic>):Void{}”。Action Script语言中的obj.x取成员变量,使用的是get/set方法,在haxe语言中,是通过x(get/set)进行声明来实现;而且Haxe语法中,所有的get/set方法必须都带返回值,在转换时将取成员变量的方式进行转换,并带返回值。比如,将
“public function get x():Number{…}
public function set x(value:Number):Number{…}”转换为
“public var x(get,set):Float;public function get_x():Float{…}
public function set_x(value:Float):Float{…}”。
关于函数调用,进行字符串转换处理即可。在转换时,注意参数的转换。比如,将“obj.func();”转换为“obj.func();”。
对于默认参数,格式不变,进行类型转换。比如,将“public function funcName(len:int=1)”转换为“public function funcName(len:Int=1)”。对于可变参数,则将可变参数部分转换成一个同名数组,并将所有的可变部分的参数放置到数组中,通过数组做参数传递。比如,将“public function funcName(p1:Number,…args)”转换为“publicfunction funcName(p1:Float,args:Array<Dynamic>)”。
对于throw模块,进行字符串转换处理。比如,将“throw”转换为“throw”,将“try{}catch(..)”转换为“try{}catch(..)”。
对于包的引入,进行字符串转换处理。比如,将“importflash.utils.ByteArray;”转换为“import flash.utils.ByteArray;”。对于包的声明,Action Script语言中的package声明时,需要使用{}将包内所有代码进行包含,但是haxe不需要,只需要进行声明即可。比如,将“package pName1.pName2{…}”转换为“packagepName1.pName2;…”。
对于取值,Action Script语言中任何类型都可以转化成Object类型,并进行各种点操作;但是在Haxe语言中无法直接使用这种方法,需要通过反射机制去进行相关操作。比如,可以将obj.field的赋值或取值操作转换为“Reflect.field()/Reflect.setField()/Reflect.getProperty()/Reflect.setProp erty()”。
对于流程语句,for each in流程直接可转成for in流程即可,比如,将“for each(var i:*in items){…}”转换为“for(i in items){…}”。for流程,临时变量不变,起始值写到in和…之间,最后值写到..后面,比如,将“for(var i=0;i<10;++i){…}”转换为“for(i in 0…10){…}”。Haxe语言在switch中,是没有break的,需要删除掉基于ActionScript语言的句子中的break操作,比如,将“switch(i){case 1:...break;…}”转换为“switch(i){case 1:…}”。Action Script语言中,if语句的条件可以是任何类型的数据;但是在Haxe语言中,if语句中的条件必须是bool类型,所以增加一个接口castToBool,处理任何类型转成bool类型,以达成和Action Script语言一样的语义。比如,将“if(condition){…}”转换为“if(castToBool(condition)){…}”。
Action Script语言包括三种访问修饰符:private、protected、public,Haxe语言包括两种访问修饰符:private、public。Action Script语言中的protected将会转换成Haxe语言中的private,该方式看似是可访问性降低,但是Haxe语言中的private在权限控制上,只相当于Action Script语言中的protected,属于降低访问权限,不会造成语法问题。
进一步地,所述映射规则还可以包括基于Action Script语言的目标程序的注释文档(ASDOC)中包括的自定义规则进行Action Script语言转换的规则。基于ActionScript语言的目标程序的注释文档中可以包括手动编写的自定义规则,在进行转换时,该可以根据该自定义规则进行转换。比如,该自定义规则可以是,将基于Action Script语言的目标程序中的Object转化成具体的某种类型,又或是将Array转化成Array<String>等,然后后续根据该自定义规则对基于Action Script语言的目标程序进行转换。
进一步地,所述映射规则还可以包括对于不同作用域的同名函数,在同名函数的函数名前配置类名前缀,以对不同作用域的同名函数进行区分的规则。在Action Script语言中,只要不在同作用域中,是可以存在同名函数的(比如:父类函数是private访问权限),但是Haxe语言中这种情况是不允许的,在转换时,如果发现这种情况,则在同名函数的函数名前配置类名前缀(比如,将private的函数名前面带上类名前缀)。
由此,根据Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系、Action Script语言的目标程序的注释文档中包括的自定义规则将目标程序由Action Script语言转换为Haxe语言,并在转换过程中判断是否存在对应不同作用域的同名函数,若存在,则在同名函数的函数名前配置类名前缀,以得到基于Haxe语言的目标程序。
请参照图4,图4是本申请实施例提供的语言转换方法的流程示意图之二。所述方法还可以包括步骤S110。
步骤S110,预先建立并保存所述映射规则。
在本实施例中,可通过以下方式得到所述映射规则:通过检测得到Haxe语言的语法中与Action Script语言的语法作用相同的语法;建立作用相同的语法之间的映射关系;将Action Script语言中存在的Haxe语言中不存在的语法转化为由Haxe语言实现的函数,并建立该语法与该函数之间的映射关系。
进一步地,在本实施例中,还可以配置基于Action Script语言的目标程序的注释文档中包括的自定义规则进行Action Script语言转换的规则,以完成映射完成的建立。
进一步地,在本实施例中,预先建立并保存所述映射规则,还可以包括:对于不同作用域的同名函数,在同名函数的函数名前配置类名前缀,以对不同作用域的同名函数进行区分。
请参照图5,图5是本申请实施例提供的语言转换装置200的方框示意图之一。所述语言转换装置200应用于转换设备100,所述转换设备100中存储有映射规则。所述映射规则包括Action Script语言中的语法与Haxe语言的语法和以Haxe语言实现的函数之间的映射关系。Action Script语言中的语法与Haxe语言的语法的映射关系对应的Action Script语言中的语法类型包括:常用基础类型、操作符、变量声明、类声明、函数声明、函数调用、参数、throw模块、包、取值、流程语句和访问修饰符。所述语言转换装置200可以包括生成模块220及转换模块230。
所述生成模块220,用于获得基于Action Script语言的目标程序,并生成与所述目标程序对应的语法树。
所述转换模块230,用于根据所述映射规则及语法树将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序。
请参照图6,图6是本申请实施例提供的语言转换装置200的方框示意图之二。所述语言转换装置200还可以包括配置模块210。
所述配置模块210,用于预先建立并保存所述映射规则。
所述配置模块210预先建立并保存所述映射规则的方式,包括:
通过检测得到Haxe语言的语法中与Action Script语言的语法作用相同的语法;
建立作用相同的语法之间的映射关系;
将Action Script语言中存在的Haxe语言中不存在的语法转化为由Haxe语言实现的函数,并建立该语法与该函数之间的映射关系。
在本实施例中,所述配置模块210预先建立并保存所述映射规则的方式,还包括:
配置基于Action Script语言的目标程序的注释文档中包括的自定义规则进行Action Script语言转换的规则。
在本实施例中,所述配置模块210预先建立并保存所述映射规则的方式,还包括:
对于不同作用域的同名函数,在同名函数的函数名前配置类名前缀,以对不同作用域的同名函数进行区分。
在本实施例中,所述转换模块230根据所述映射规则及语法树将基于ActionScript语言的目标程序转换为基于Haxe语言的目标程序的方式,包括:
根据Action Script语言中的语法与Haxe语言的语法和以Haxe语言实现的函数之间的映射关系、Action Script语言的目标程序的注释文档中包括的自定义规则将目标程序由Action Script语言转换为Haxe语言,并在转换过程中判断是否存在对应不同作用域的同名函数,若存在,则在同名函数的函数名前配置类名前缀,以得到基于Haxe语言的目标程序。
在本实施例中,关于所述语言转换装置200的具体描述可以参照上文对语言转换放方法的描述,在此不再赘述。
综上所述,本申请实施例提供一种语言转换方法及装置。在得到基于ActionScript语言的目标程序后,首先生成该目标程序对应的语法树,然后根据该语法树、包括Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系的映射规则,将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序。由此,无论是针对大型的Flash项目或者数量非常多的小Flash项目,均可快速将所有基于Action Script语言实现的程序自动转换成基于Haxe语言的程序,从而利用Haxe语言的跨平台能力和性能优势。该方式可快速的完成所有Flash程序的脱Flash任务,不用浪费人力再去对以前的产品进行重复开发,也不会对软件的稳定性产生冲击。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种语言转换方法,其特征在于,应用于转换设备,所述转换设备中存储有映射规则,所述映射规则包括Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系,所述Action Script语言中的语法与Haxe语言中的语法的之间映射关系,用于表示作用相同的Action Script语言中的语法与Haxe语言中的语法之间的对应关系;所述Action Script语言中的语法与以Haxe语言实现的函数之间的映射关系,用于表示作用相同的Action Script语言中存在的Haxe语言中不存在的语法与以Haxe语言实现的函数之间的对应关系;Action Script语言中的语法与Haxe语言中的语法的映射关系对应的Action Script语言中的语法类型包括:常用基础类型、操作符、变量声明、类声明、函数声明、函数调用、参数、throw模块、包、取值、流程语句和访问修饰符,所述方法包括:
获得基于Action Script语言的目标程序,并生成与所述目标程序对应的语法树;
根据所述映射规则及语法树将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序。
2.根据权利要求1所述的语言转换方法,其特征在于,所述方法还包括:
预先建立并保存所述映射规则;
所述预先建立并保存所述映射规则,包括:
通过检测得到Haxe语言的语法中与Action Script语言的语法作用相同的语法;
建立作用相同的语法之间的映射关系;
将Action Script语言中存在的Haxe语言中不存在的语法转化为由Haxe语言实现的函数,并建立该语法与该函数之间的映射关系。
3.根据权利要求2所述的语言转换方法,其特征在于,所述预先建立并保存所述映射规则,还包括:
配置基于Action Script语言的目标程序的注释文档中包括的自定义规则进行ActionScript语言转换的规则。
4.根据权利要求3所述的语言转换方法,其特征在于,所述预先建立并保存所述映射规则,还包括:
对于不同作用域的同名函数,在同名函数的函数名前配置类名前缀,以对不同作用域的同名函数进行区分。
5.根据权利要求4所述的语言转换方法,其特征在于,所述根据所述映射规则及语法树将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序,包括:
根据Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系、Action Script语言的目标程序的注释文档中包括的自定义规则将目标程序由Action Script语言转换为Haxe语言,并在转换过程中判断是否存在对应不同作用域的同名函数,若存在,则在同名函数的函数名前配置类名前缀,以得到基于Haxe语言的目标程序。
6.一种语言转换装置,其特征在于,应用于转换设备,所述转换设备中存储有映射规则,所述映射规则包括Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系,所述Action Script语言中的语法与Haxe语言中的语法的之间映射关系,用于表示作用相同的Action Script语言中的语法与Haxe语言中的语法之间的对应关系;所述Action Script语言中的语法与以Haxe语言实现的函数之间的映射关系,用于表示作用相同的Action Script语言中存在的Haxe语言中不存在的语法与以Haxe语言实现的函数之间的对应关系;Action Script语言中的语法与Haxe语言中的语法的映射关系对应的Action Script语言中的语法类型包括:常用基础类型、操作符、变量声明、类声明、函数声明、函数调用、参数、throw模块、包、取值、流程语句和访问修饰符,所述装置包括:
生成模块,用于获得基于Action Script语言的目标程序,并生成与所述目标程序对应的语法树;
转换模块,用于根据所述映射规则及语法树将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序。
7.根据权利要求6所述的语言转换装置,其特征在于,所述装置还包括:
配置模块,用于预先建立并保存所述映射规则;
所述配置模块预先建立并保存所述映射规则的方式,包括:
通过检测得到Haxe语言的语法中与Action Script语言的语法作用相同的语法;
建立作用相同的语法之间的映射关系;
将Action Script语言中存在的Haxe语言中不存在的语法转化为由Haxe语言实现的函数,并建立该语法与该函数之间的映射关系。
8.根据权利要求7所述的语言转换装置,其特征在于,所述配置模块预先建立并保存所述映射规则的方式,还包括:
配置基于Action Script语言的目标程序的注释文档中包括的自定义规则进行ActionScript语言转换的规则。
9.根据权利要求8所述的语言转换装置,其特征在于,所述配置模块预先建立并保存所述映射规则的方式,还包括:
对于不同作用域的同名函数,在同名函数的函数名前配置类名前缀,以对不同作用域的同名函数进行区分。
10.根据权利要求9所述的语言转换装置,其特征在于,所述转换模块根据所述映射规则及语法树将基于Action Script语言的目标程序转换为基于Haxe语言的目标程序的方式,包括:
根据Action Script语言中的语法与Haxe语言中的语法和以Haxe语言实现的函数之间的映射关系、Action Script语言的目标程序的注释文档中包括的自定义规则将目标程序由Action Script语言转换为Haxe语言,并在转换过程中判断是否存在对应不同作用域的同名函数,若存在,则在同名函数的函数名前配置类名前缀,以得到基于Haxe语言的目标程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910306530.1A CN110007926B (zh) | 2019-04-17 | 2019-04-17 | 语言转换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910306530.1A CN110007926B (zh) | 2019-04-17 | 2019-04-17 | 语言转换方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110007926A CN110007926A (zh) | 2019-07-12 |
CN110007926B true CN110007926B (zh) | 2022-03-22 |
Family
ID=67172432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910306530.1A Active CN110007926B (zh) | 2019-04-17 | 2019-04-17 | 语言转换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110007926B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111061468B (zh) * | 2019-12-20 | 2023-10-10 | 北京爱奇艺科技有限公司 | 一种映射方法及装置 |
CN111309301B (zh) * | 2020-01-17 | 2023-09-01 | 广东三维家信息科技有限公司 | 程序语言转换方法、装置和转换设备 |
CN111625224B (zh) * | 2020-05-28 | 2023-11-24 | 北京百度网讯科技有限公司 | 代码生成方法、装置、设备及存储介质 |
CN113220277B (zh) * | 2021-06-01 | 2023-12-19 | 西北工业大学 | 一种嵌入式服务化的开发方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040004619A (ko) * | 2001-05-11 | 2004-01-13 | 컴퓨터 어소시에이츠 싱크, 인코포레이티드 | 구식 소프트웨어 애플리케이션을 최신의 객체 지향시스템으로 전환하는 방법과 시스템 |
US8327316B2 (en) * | 2008-09-30 | 2012-12-04 | Ics Triplex Isagraf Inc. | Compilation model |
CN101561817A (zh) * | 2009-06-02 | 2009-10-21 | 天津大学 | 一种XQuery到SQL查询语言的转换算法及关系数据的查询方法 |
US10089090B2 (en) * | 2016-06-07 | 2018-10-02 | Honeywell International Inc. | System and method for facilitating dynamic remapping of absolute addresses during software migration |
CN107943481B (zh) * | 2017-05-23 | 2021-01-26 | 清华大学 | 基于多模型的c语言程序代码规范构造方法 |
-
2019
- 2019-04-17 CN CN201910306530.1A patent/CN110007926B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110007926A (zh) | 2019-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110007926B (zh) | 语言转换方法及装置 | |
CN105100191B (zh) | 一种云编译实现Java应用安装的方法、装置及系统 | |
CN109976761B (zh) | 软件开发工具包的生成方法、装置及终端设备 | |
CN105022630B (zh) | 一种组件管理系统及组件管理方法 | |
US20140156282A1 (en) | Method and system for controlling target applications based upon a natural language command string | |
CN110058860A (zh) | 一种代码自动交付方法、装置、设备及计算机存储介质 | |
CN111026634A (zh) | 一种接口自动化测试系统、方法、装置及存储介质 | |
CN111399840A (zh) | 一种模块开发方法及装置 | |
CN110543427A (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
CN112559344A (zh) | 远程mock测试方法及系统 | |
CN114706616A (zh) | 小程序构建方法和装置 | |
CN110362317B (zh) | 一种代码转换方法、装置和存储介质 | |
CN110659022B (zh) | 一种基于Java自动调用Python脚本的方法 | |
CN112328241B (zh) | 一种应用程序开发中创建Android库模块依赖关系的方法及装置 | |
CN110489124B (zh) | 源代码执行方法、装置、存储介质及计算机设备 | |
CN114115884A (zh) | 一种编程服务的管理方法以及相关装置 | |
CN111488286A (zh) | 一种Android模块独立开发的方法及装置 | |
CN111240681A (zh) | 一种不同编程语言的转换方法及装置 | |
CN111399842B (zh) | 一种代码编译方法及装置 | |
US11429358B2 (en) | Representing asynchronous state machine in intermediate code | |
CN112306493A (zh) | 热修复补丁生成方法、装置、存储介质及计算机设备 | |
CN113760360A (zh) | 一种文件生成方法、装置、设备及存储介质 | |
CN112162776B (zh) | 依赖关系获取方法及装置 | |
US7580962B1 (en) | Automatic code generation for co-simulation interfaces | |
CN113329103B (zh) | 执行用于网络设备的命令的方法和装置 |
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 |