CN106293677A - 一种代码转换方法及装置 - Google Patents

一种代码转换方法及装置 Download PDF

Info

Publication number
CN106293677A
CN106293677A CN201510309606.8A CN201510309606A CN106293677A CN 106293677 A CN106293677 A CN 106293677A CN 201510309606 A CN201510309606 A CN 201510309606A CN 106293677 A CN106293677 A CN 106293677A
Authority
CN
China
Prior art keywords
source code
character string
string
code form
preset characters
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
CN201510309606.8A
Other languages
English (en)
Other versions
CN106293677B (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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510309606.8A priority Critical patent/CN106293677B/zh
Publication of CN106293677A publication Critical patent/CN106293677A/zh
Application granted granted Critical
Publication of CN106293677B publication Critical patent/CN106293677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Machine Translation (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明是关于一种代码转换方法及装置,包括:接收用户输入的对源编码格式的源代码进行格式转换的请求,根据源编码格式对源代码进行分析,得到源代码中包含的数据字符串和源编码格式的语法字符串;将源编码格式的语法字符串转换为目标编码格式对应的语法字符串;将数据字符串和目标编码格式对应的语法字符串结合生成目标编码格式的目标代码。如此,当有一段根据源编码格式编写的、具有某一功能的源代码时,如果要在支持的编码格式与源编码格式不同的语言的平台上应用该源代码,只需将该源代码的源编码格式转化为该语言的平台支持的编码格式,这样就可以将转换后的代码应用至该语言的平台上,相比与现有技术可以降低人工成本。

Description

一种代码转换方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种代码转换方法及装置。
背景技术
当前,计算机领域中存在各种各样的计算机语言的平台,例如JS(JavaScript,直译式脚本语言)语言的平台、PHP(Professional Hypertext Preprocessor,专业超文本预处理)语言的平台和C#(面向对象编程语言)语言的平台等,每种计算机语言的平台都具有各自的计算机语言编码格式,且各个计算机语言的平台对应的计算机语言编码格式不同。
对于任一种计算机语言的平台,在该计算机语言的平台上只能应用由该计算机语言的平台对应的计算机语言编码格式编写的代码。例如,JS语言的平台上只能应用由JS语言的平台对应的JS语言编码格式编写的代码,PHP语言的平台上只能应用由PHP语言的平台对应的PHP语言编码格式编写的代码。
其中,当技术人员根据一个计算机语言编码格式编写了一段具有某一功能的代码时,就可以在该一个计算机语言编码格式对应的计算机语言的平台上应用该一段代码,如果技术人员需要在另一个计算机语言编码格式对应的计算机语言的平台上应用具有该功能的代码时,必须根据该另一个计算机语言编码格式编写一段具有该功能的代码,但是这样会增加技术人员的工作量,导致人工成本较高。
发明内容
为克服相关技术中存在的问题,本发明提供一种代码转换方法及装置。
根据本发明实施例的第一方面,提供一种代码转换方法,所述方法包括:
接收用户输入的对源编码格式的源代码进行格式转换的请求;所述请求中携带有所述源代码和目标编码格式的标识,所述目标编码格式的标识对应的编码格式与所述源编码格式不同;
根据所述源编码格式对所述源代码进行分析,得到所述源代码中包含的数据字符串和所述源编码格式的语法字符串;
将所述源编码格式的语法字符串转换为目标编码格式对应的语法字符串;所述目标编码格式为目标编码格式的标识对应的编码格式;
将所述数据字符串和所述目标编码格式对应的语法字符串结合生成目标编码格式的目标代码。
其中,所述根据所述源编码格式对所述源代码进行分析,得到所述源代码中包含的数据字符串和所述源编码格式的语法字符串,包括:
对所述源代码进行正则匹配;
在所述源代码中获取所述源编码格式对应的第一预设字符串和第二预设字符串;获取的第一预设字符串的个数与获取的第二预设字符串的个数相同;
将获取到的第一预设字符串按照获取的时间顺序进行排序,以及将获取到的第二预设字符串按照获取的时间顺序进行排序;
将次序相同第一预设字符串和第二预设字符串组成预设字符串组;
对于每一个预设字符串组,将所述预设字符串组中的第一预设字符串、第二预设字符串以及位于所述预设字符串组中的第一预设字符串和第二预设字符串之间的字符串分别确定为所述源编码格式的语法字符串;
将所述源代码中的除确定出的源编码格式的语法字符串之外的字符串确定为数据字符串。
其中,所述根据所述源编码格式对所述源代码进行分析,得到所述源代码中包含的数据字符串和所述源编码格式的语法字符串,包括:
构建所述源代码对应的抽象语法树;
从所述抽象语法树中获取所述源代码中的数据字符串和所述源编码格式的语法字符串。
其中,所述构建所述源代码对应的抽象语法树,包括:
获取预设分析法;
根据所述预设分析法创建状态机;
将所述源代码中的所有字符串依次输入状态机;
检测是否将所述源代码中的所有字符串全部输入至所述状态机;
当将所述源代码中的所有字符串全部输入至所述状态机时,根据所述状态机输出的字符串生成所述源代码对应的抽象语法树。
其中,所述将所述源编码格式的语法字符串转换为目标编码格式对应的语法字符串,包括:
获取预先设置的源编码格式的语法字符串与目标编码格式的语法字符串之间的对应关系;
在所述对应关系中获取每个所述源编码格式的语法字符串对应的目标编码格式的语法字符串;
对于获取的每一个目标编码格式的语法字符串,在所述抽象语法树中,利用所述目标编码格式的语法字符串替换与所述目标编码格式的语法字符串对应的源编码格式的语法字符串。
根据本发明实施例的第二方面,提供一种代码转换装置,所述装置包括:
接收模块,用于接收用户输入的对源编码格式的源代码进行格式转换的请求;所述请求中携带有所述源代码和目标编码格式的标识,所述目标编码格式的标识对应的编码格式与所述源编码格式不同;
分析模块,用于根据所述源编码格式对所述源代码进行分析,得到所述源代码中包含的数据字符串和所述源编码格式的语法字符串;
转换模块,用于将所述源编码格式的语法字符串转换为目标编码格式对应的语法字符串;所述目标编码格式为目标编码格式的标识对应的编码格式;
结合模块,用于将所述数据字符串和所述目标编码格式对应的语法字符串结合生成目标编码格式的目标代码。
其中,所述分析模块包括:
正则匹配单元,用于对所述源代码进行正则匹配;
第一获取单元,用于在所述源代码中获取所述源编码格式对应的第一预设字符串和第二预设字符串;获取的第一预设字符串的个数与获取的第二预设字符串的个数相同;
排序单元,用于将获取到的第一预设字符串按照获取的时间顺序进行排序,以及将获取到的第二预设字符串按照获取的时间顺序进行排序;
组成单元,用于将次序相同第一预设字符串和第二预设字符串组成预设字符串组;
第一确定单元,用于对于每一个预设字符串组,将所述预设字符串组中的第一预设字符串、第二预设字符串以及位于所述预设字符串组中的第一预设字符串和第二预设字符串之间的字符串分别确定为所述源编码格式的语法字符串;
第二确定单元,用于将所述源代码中的除确定出的源编码格式的语法字符串之外的字符串确定为数据字符串。
其中,所述分析模块包括:
构建单元,用于构建所述源代码对应的抽象语法树;
第二获取单元,用于从所述抽象语法树中获取所述源代码中的数据字符串和所述源编码格式的语法字符串。
其中,所述构建单元包括:
获取子单元,用于获取预设分析法;
创建子单元,用于根据所述预设分析法创建状态机;
输入子单元,用于将所述源代码中的所有字符串依次输入状态机;
检测子单元,用于检测是否将所述源代码中的所有字符串全部输入至所述状态机;
生成子单元,用于当将所述源代码中的所有字符串全部输入至所述状态机时,根据所述状态机输出的字符串生成所述源代码对应的抽象语法树。
其中,所述转换模块包括:
第三获取单元,用于获取预先设置的源编码格式的语法字符串与目标编码格式的语法字符串之间的对应关系;
第四获取单元,用于在所述对应关系中获取每个所述源编码格式的语法字符串对应的目标编码格式的语法字符串;
替换单元,用于对于获取的每一个目标编码格式的语法字符串,在所述抽象语法树中,利用所述目标编码格式的语法字符串替换与所述目标编码格式的语法字符串对应的源编码格式的语法字符串。
本发明的实施例提供的技术方案可以包括以下有益效果:通过本发明的方法,当技术人员事先根据源编码格式编写了一段具有某一功能的源代码时,如果要在某一语言的平台上应用具有该功能的代码,该语言支持的编码格式与源编码格式不同,只需将源代码的源编码格式转化为该语言支持的编码格式,这样就可以将转换后的代码应用至该语言的平台上,无需使得技术人员再根据该语言的平台支持的编码格式编写一段具有该功能的代码,从而可以降低人工成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种代码转换方法的流程图。
图2是根据一示例性实施例示出的一种代码转换方法的流程图。
图3是根据一示例性实施例示出的一种代码转换方法的流程图。
图4是根据一示例性实施例示出的一种抽象语法树的示意图。
图5是根据一示例性实施例示出的一种代码转换方法的流程图。
图6是根据一示例性实施例示出的一种代码转换装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种代码转换方法的流程图,如图1所示,该方法包括以下步骤。
在步骤S101中,接收用户输入的对源编码格式的源代码进行格式转换的请求;
该请求中携带有源代码和目标编码格式的标识;目标编码格式的标识对应的编码格式与所述源编码格式不同;
目标编码格式的标识为目标编码格式的名称或编号等,本发明对此不加以限定。
其中,目标编码格式可以为JS语言支持的编码格式,PHP语言支持的编码格式,velocity语言支持的编码格式,或者asp语言支持的编码格式等。
源编码格式为预先设置的DSL(domain specific language,领域特定语言)语言支持的编码格式。
例如,在预先设置的DSL语言支持的编码格式可以为:变量定义语法字符串“set”,输出字面量语法字符串“$+变量名”,判断流程控制语法字符串“if”、“elseif”和“else”,循环流程控制语法字符串“each val,index in items”、“$val”和“/each”。嵌套语法字符串“include'foo.tpl',data”,中断定义语法字符串“stop”,注释定义语法字符串“comment”,第一预设标识符以及第二预设标识符等。第一预设标识符以及第二预设标识符可以将语法字符串与其他字符串进行区分。例如,第一预设标识符紧挨在一个语法字符串之前且第二预设标识符紧挨在该一个语法字符串之后,这样,第一预设标识符和第二预设标识符就可以将该一个语法字符串与其他字符串进行区分。
例如,第一预设标识符可以为“<#”,以及第二标预设识符可以为“#>”;或者,第一预设标识符也可以为“<%”,以及第二预设标识符也可以为“%>”,本发明对比不加以限定。
其中,在本发明实施例中,以第一预设标识符为“<#”以及第二标识符为“#>”进行举例说明,但不作为对本发明保护范围的限制。
例如,假设获取用户输入的该请求中的源编码格式的源代码为:
“<h1><#$header#></h1>
<#each val,index in$items#>
<#if$val.first#>”,以及用户输入的该请求中的目标编码格式的标识为PHP语言支持的编码格式的标识。
在步骤S102中,根据源编码格式对源代码进行分析,得到源代码中包含的数据字符串和源编码格式的语法字符串;
其中,在上述源代码中,“<#”为第一预设字符串,“#>”为第二预设字符串,第一预设字符串、第二预设字符串和位于第一预设字符串与第二预设字符串之间的字符串为语法字符串;除语法字符串以外的其他字符串为数据字符串。
在步骤S103中,将源编码格式的语法字符串转换为目标编码格式对应的语法字符串;
其中,目标编码格式为目标编码格式的标识对应的编码格式。
在步骤S104中,将数据字符串和目标编码格式对应的语法字符串结合生成目标编码格式的目标代码。
通过本发明图1所示的实施例的方法,当技术人员事先根据源编码格式编写了一段具有某一功能的源代码时,如果要在某一语言的平台上应用具有该功能的代码,该语言支持的编码格式与源编码格式不同,只需将源代码的源编码格式转化为该语言支持的编码格式,这样就可以将转换后的代码应用至该语言的平台上,无需使得技术人员再根据该语言的平台支持的编码格式编写一段具有该功能的代码,从而可以降低人工成本。
在本发明另一实施例中,参见图2,步骤S102包括:
在步骤S201中,对源代码进行正则匹配;
例如,对源代码“<h1><#$header#></h1>
<#each val,index in$items#>
<#if$val.first#>”进行正则匹配。
在步骤S202中,在源代码中获取源编码格式对应的第一预设字符串和第二预设字符串;
其中,获取的第一预设字符串的个数与获取的第二预设字符串的个数相同;第一预设字符串为“<#”,第二预设字符串为“#>”。
例如,首先获取“<#$header#>”中的第一预设字符串“<#”,以及第二预设字符串“#>”,然后获取“<#each val,index in$items#>”中的第一预设字符串“<#”,以及第二预设字符串“#>”,最后获取“<#if$val.first#>”中的第一预设字符串“<#”,以及第二预设字符串“#>”。
在步骤S203中,将获取到的第一预设字符串按照获取的时间顺序进行排序,以及将获取到的第二预设字符串按照获取的时间顺序进行排序;
其中,获取的“<#$header#>”中的第一预设字符串“<#”和第二预设字符串“#>”分别为排序第一的第一预设字符串和排序第一的第二预设字符串。
获取的“<#each val,index in$items#>”中的第一预设字符串“<#”和第二预设字符串“#>”分别为排序第二的第一预设字符串和排序第二的第二预设字符串。
获取的“<#if$val.first#>”中的第一预设字符串“<#”和第二预设字符串“#>”分别为排序第三的第一预设字符串和排序第三的第二预设字符串。
在步骤S204中,将次序相同第一预设字符串和第二预设字符串组成预设字符串组;
其中,将排序第一的第一预设字符串和排序第一的第二预设字符串组成第一预设字符串组;将排序第二的第一预设字符串和排序第二的第二预设字符串组成第二预设字符串组;将排序第三的第一预设字符串和排序第三的第二预设字符串组成第三预设字符串组;
在步骤S205中,对于每一个预设字符串组,将该预设字符串组中的第一预设字符串、第二预设字符串以及位于该预设字符串组中的第一预设字符串和第二预设字符串之间的字符串分别确定为源编码格式的语法字符串;
例如,对于第一预设字符串组,将第一预设字符串组中的第一预设字符串“<#”、第二预设字符串“#>”以及位于第一预设字符串组中的第一预设字符串“<#”与第二预设字符串“#>”之间的字符“$header”分别确定为源编码格式的语法字符串。
对于第二预设字符串组,将第二预设字符串组中的第一预设字符串“<#”、第二预设字符串“#>”以及位于第二预设字符串组中的第一预设字符串“<#”与第二预设字符串“#>”之间的字符“each val,index in$items”分别确定为源编码格式的语法字符串。
对于第三预设字符串组,将第三预设字符串组中的第一预设字符串“<#”、第二预设字符串“#>”以及位于第三预设字符串组中的第一预设字符串“<#”与第二预设字符串“#>”之间的字符“if$val.first”分别确定为源编码格式的语法字符串。
在步骤S206中,将源代码中的除确定出的源编码格式的语法字符串之外的字符串确定为数据字符串。
其中,在上述源代码中,可以确定出除源编码格式的语法字符串之外的其他字符串分别:位于排序第一的第一预设字符串“<#”之前的字符串“<h1>”、以及位于排序第一的第二预设字符串“#>”与排序第二的第一预设字符串“<#”之间的字符串“</h1>”,因此,可以将位于排序第一的第一预设字符串“<#”之前的字符串“<h1>”、以及位于排序第一的第二预设字符串“#>”与排序第二的第一预设字符串“<#”之间的字符串“</h1>”分别确定为数据字符串。
在本发明又一实施例中,参见图3,步骤S102包括:
在步骤S301中,构建源代码对应的抽象语法树;
具体地,本步骤可以通过如下流程实现,包括:
11)、获取预设分析法;
预设分析法可以为LR(1)分析法,LR(0)分析法或SLR分析法等,本发明对此不加以限定。
在本发明实施例中,优先采用LR(1)分析法。
12)、根据预设分析法创建状态机;
13)、将源代码中的所有字符串依次输入状态机;
例如,将源代码“<h1><#$header#></h1>
<#each val,index in$items#>
<#if$val.first#>”依次输入状态机。
14)、检测是否将源代码中的所有字符串全部输入至状态机;
15)、当将源代码中的所有字符串全部输入至状态机时,根据状态机输出的字符串生成源代码对应的抽象语法树。
例如源代码中的“<#if$val.first#>”对应的抽象语法树可以如图4所示。
在步骤S302中,从抽象语法树中获取源代码中的数据字符串和源编码格式的语法字符串。
从图4所示的抽象语法树中获取源编码格式的语法字符串“<#”、“if$val.first”和“#>”。
在本发明又一实施例中,参见图5,步骤S103包括:
在步骤S401中,获取预先设置的源编码格式的语法字符串与目标编码格式的语法字符串之间的对应关系;
其中,为了可以高效率地将源代码中的源编码格式的语法字符串替换为目标编码格式的语法字符串,技术人员事先在本地设置了源编码格式的语法字符串与目标编码格式的语法字符串之间的对应关系,在上述对应关系中,每一个源编码格式的语法字符串都对应的一个目标编码格式的语法字符串。
例如,在本发明实施例中,源编码格式为DSL语言支持的编码格式,目标编码格式为PHP语言支持的编码格式。
获取的DSL语言支持的编码格式的语法字符串与PHP语言支持的编码格式的语法字符串之间的对应关系可以如下表1所示。
表1
其中,本地还存储有DSL语言支持的编码格式的语法字符串与JS语言支持的编码格式的语法字符串之间的对应关系,DSL语言支持的编码格式的语法字符串与velocity语言支持的编码格式的语法字符串之间的对应关系,DSL语言支持的编码格式的语法字符串与asp语言支持的编码格式的语法字符串之间的对应关系等。
在步骤S402中,在上述对应关系中获取每一个源编码格式的语法字符串对应的目标编码格式的语法字符串;
对于任一个源编码格式的语法字符串,在上述对应关系中查找与该源编码格式的语法字符串对应的目标编码格式的语法字符串。对于其他每一源编码格式的语法字符串,均执行上述操作,如此实现在对应关系中获取每一个源编码格式的语法字符串对应的目标编码格式的语法字符串。
例如,对于源代码中的“<#each val,index in$items#>”,其中,源编码格式的语法字符串包括“<#”、“each val,index in$items”和“#>”,因此可以首先在表1所示的对应关系中查找源编码格式的字符串“<#”对应的目标编码格式的语法字符串“<?PHP”,然后在表1所示的对应关系中查找源编码格式的字符串“each val,index in$items”对应的目标编码格式的语法字符串“foreach($items as$val=>$index)”,最后在表1所示的对应关系中查找源编码格式的字符串“#>”对应的目标编码格式的语法字符串“?>”。
在步骤S403中,对于获取的每一个目标编码格式的语法字符串,在抽象语法树中,利用目标编码格式的语法字符串替换与目标编码格式的语法字符串对应的源编码格式的语法字符串。
具体的,遍历上述抽象语法树,当遍历到一个字符串时,由于抽象语法树中已经标记了每个字符串是数据字符串还是源编码格式的语法字符串,因此,可以根据标记直接确定出遍历到的字符串是源编码格式的语法字符串还是数据字符串;当遍历到的字符串为源编码格式的语法字符串时,从上述对应关系中获取遍历到的源编码格式的语法字符串对应的目标编码格式的语法字符串,直至遍历完抽象语法树为止。
其中,在遍历上述抽象语法树时可以采用深度遍历策略,也可以采用广度遍历策略,本发明对此不加以限定。优选地,本发明实施例采用深度遍历策略遍历上述抽象语法树。
图6是根据一示例性实施例示出的一种代码转换装置的框图。参照图6,该装置包括:
接收模块11,用于接收用户输入的对源编码格式的源代码进行格式转换的请求;所述请求中携带有所述源代码和目标编码格式的标识,所述目标编码格式的标识对应的编码格式与所述源编码格式不同;
分析模块12,用于根据所述源编码格式对所述源代码进行分析,得到所述源代码中包含的数据字符串和所述源编码格式的语法字符串;
转换模块13,用于将所述源编码格式的语法字符串转换为目标编码格式对应的语法字符串;所述目标编码格式为目标编码格式的标识对应的编码格式;
结合模块14,用于将所述数据字符串和所述目标编码格式对应的语法字符串结合生成目标编码格式的目标代码。
通过本发明图6所示的实施例的方法,当技术人员事先根据源编码格式编写了一段具有某一功能的源代码时,如果要在某一语言的平台上应用具有该功能的代码,该语言支持的编码格式与源编码格式不同,只需将源代码的源编码格式转化为该语言支持的编码格式,这样就可以将转换后的代码应用至该语言的平台上,无需使得技术人员再根据该语言的平台支持的编码格式编写一段具有该功能的代码,从而可以降低人工成本。
其中,所述分析模块12包括:
正则匹配单元,用于对所述源代码进行正则匹配;
第一获取单元,用于在所述源代码中获取所述源编码格式对应的第一预设字符串和第二预设字符串;获取的第一预设字符串的个数与获取的第二预设字符串的个数相同;
排序单元,用于将获取到的第一预设字符串按照获取的时间顺序进行排序,以及将获取到的第二预设字符串按照获取的时间顺序进行排序;
组成单元,用于将次序相同第一预设字符串和第二预设字符串组成预设字符串组;
第一确定单元,用于对于每一个预设字符串组,将所述预设字符串组中的第一预设字符串、第二预设字符串以及位于所述预设字符串组中的第一预设字符串和第二预设字符串之间的字符串分别确定为所述源编码格式的语法字符串;
第二确定单元,用于将所述源代码中的除确定出的源编码格式的语法字符串之外的字符串确定为数据字符串。
其中,所述分析模块12包括:
构建单元,用于构建所述源代码对应的抽象语法树;
第二获取单元,用于从所述抽象语法树中获取所述源代码中的数据字符串和所述源编码格式的语法字符串。
其中,所述构建单元包括:
获取子单元,用于获取预设分析法;
创建子单元,用于根据所述预设分析法创建状态机;
输入子单元,用于将所述源代码中的所有字符串依次输入状态机;
检测子单元,用于检测是否将所述源代码中的所有字符串全部输入至所述状态机;
生成子单元,用于当将所述源代码中的所有字符串全部输入至所述状态机时,根据所述状态机输出的字符串生成所述源代码对应的抽象语法树。
其中,所述转换模块13包括:
第三获取单元,用于获取预先设置的源编码格式的语法字符串与目标编码格式的语法字符串之间的对应关系;
第四获取单元,用于在所述对应关系中获取每个所述源编码格式的语法字符串对应的目标编码格式的语法字符串;
替换单元,用于对于获取的每一个目标编码格式的语法字符串,在所述抽象语法树中,利用所述目标编码格式的语法字符串替换与所述目标编码格式的语法字符串对应的源编码格式的语法字符串。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (10)

1.一种代码转换方法,其特征在于,所述方法包括:
接收用户输入的对源编码格式的源代码进行格式转换的请求;所述请求中携带有所述源代码和目标编码格式的标识,所述目标编码格式的标识对应的编码格式与所述源编码格式不同;
根据所述源编码格式对所述源代码进行分析,得到所述源代码中包含的数据字符串和所述源编码格式的语法字符串;
将所述源编码格式的语法字符串转换为目标编码格式对应的语法字符串;所述目标编码格式为目标编码格式的标识对应的编码格式;
将所述数据字符串和所述目标编码格式对应的语法字符串结合生成目标编码格式的目标代码。
2.根据权利要求1所述的方法,其特征在于,所述根据所述源编码格式对所述源代码进行分析,得到所述源代码中包含的数据字符串和所述源编码格式的语法字符串,包括:
对所述源代码进行正则匹配;
在所述源代码中获取所述源编码格式对应的第一预设字符串和第二预设字符串;获取的第一预设字符串的个数与获取的第二预设字符串的个数相同;
将获取到的第一预设字符串按照获取的时间顺序进行排序,以及将获取到的第二预设字符串按照获取的时间顺序进行排序;
将次序相同第一预设字符串和第二预设字符串组成预设字符串组;
对于每一个预设字符串组,将所述预设字符串组中的第一预设字符串、第二预设字符串以及位于所述预设字符串组中的第一预设字符串和第二预设字符串之间的字符串分别确定为所述源编码格式的语法字符串;
将所述源代码中的除确定出的源编码格式的语法字符串之外的字符串确定为数据字符串。
3.根据权利要求1所述的方法,其特征在于,所述根据所述源编码格式对所述源代码进行分析,得到所述源代码中包含的数据字符串和所述源编码格式的语法字符串,包括:
构建所述源代码对应的抽象语法树;
从所述抽象语法树中获取所述源代码中的数据字符串和所述源编码格式的语法字符串。
4.根据权利要求3所述的方法,其特征在于,所述构建所述源代码对应的抽象语法树,包括:
获取预设分析法;
根据所述预设分析法创建状态机;
将所述源代码中的所有字符串依次输入状态机;
检测是否将所述源代码中的所有字符串全部输入至所述状态机;
当将所述源代码中的所有字符串全部输入至所述状态机时,根据所述状态机输出的字符串生成所述源代码对应的抽象语法树。
5.根据权利要求3或4所述的方法,其特征在于,所述将所述源编码格式的语法字符串转换为目标编码格式对应的语法字符串,包括:
获取预先设置的源编码格式的语法字符串与目标编码格式的语法字符串之间的对应关系;
在所述对应关系中获取每个所述源编码格式的语法字符串对应的目标编码格式的语法字符串;
对于获取的每一个目标编码格式的语法字符串,在所述抽象语法树中,利用所述目标编码格式的语法字符串替换与所述目标编码格式的语法字符串对应的源编码格式的语法字符串。
6.一种代码转换装置,其特征在于,所述装置包括:
接收模块,用于接收用户输入的对源编码格式的源代码进行格式转换的请求;所述请求中携带有所述源代码和目标编码格式的标识,所述目标编码格式的标识对应的编码格式与所述源编码格式不同;
分析模块,用于根据所述源编码格式对所述源代码进行分析,得到所述源代码中包含的数据字符串和所述源编码格式的语法字符串;
转换模块,用于将所述源编码格式的语法字符串转换为目标编码格式对应的语法字符串;所述目标编码格式为目标编码格式的标识对应的编码格式;
结合模块,用于将所述数据字符串和所述目标编码格式对应的语法字符串结合生成目标编码格式的目标代码。
7.根据权利要求6所述的装置,其特征在于,所述分析模块包括:
正则匹配单元,用于对所述源代码进行正则匹配;
第一获取单元,用于在所述源代码中获取所述源编码格式对应的第一预设字符串和第二预设字符串;获取的第一预设字符串的个数与获取的第二预设字符串的个数相同;
排序单元,用于将获取到的第一预设字符串按照获取的时间顺序进行排序,以及将获取到的第二预设字符串按照获取的时间顺序进行排序;
组成单元,用于将次序相同第一预设字符串和第二预设字符串组成预设字符串组;
第一确定单元,用于对于每一个预设字符串组,将所述预设字符串组中的第一预设字符串、第二预设字符串以及位于所述预设字符串组中的第一预设字符串和第二预设字符串之间的字符串分别确定为所述源编码格式的语法字符串;
第二确定单元,用于将所述源代码中的除确定出的源编码格式的语法字符串之外的字符串确定为数据字符串。
8.根据权利要求6所述的装置,其特征在于,所述分析模块包括:
构建单元,用于构建所述源代码对应的抽象语法树;
第二获取单元,用于从所述抽象语法树中获取所述源代码中的数据字符串和所述源编码格式的语法字符串。
9.根据权利要求8所述的装置,其特征在于,所述构建单元包括:
获取子单元,用于获取预设分析法;
创建子单元,用于根据所述预设分析法创建状态机;
输入子单元,用于将所述源代码中的所有字符串依次输入状态机;
检测子单元,用于检测是否将所述源代码中的所有字符串全部输入至所述状态机;
生成子单元,用于当将所述源代码中的所有字符串全部输入至所述状态机时,根据所述状态机输出的字符串生成所述源代码对应的抽象语法树。
10.根据权利要求8或9所述的装置,其特征在于,所述转换模块包括:
第三获取单元,用于获取预先设置的源编码格式的语法字符串与目标编码格式的语法字符串之间的对应关系;
第四获取单元,用于在所述对应关系中获取每个所述源编码格式的语法字符串对应的目标编码格式的语法字符串;
替换单元,用于对于获取的每一个目标编码格式的语法字符串,在所述抽象语法树中,利用所述目标编码格式的语法字符串替换与所述目标编码格式的语法字符串对应的源编码格式的语法字符串。
CN201510309606.8A 2015-06-08 2015-06-08 一种代码转换方法及装置 Active CN106293677B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510309606.8A CN106293677B (zh) 2015-06-08 2015-06-08 一种代码转换方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510309606.8A CN106293677B (zh) 2015-06-08 2015-06-08 一种代码转换方法及装置

Publications (2)

Publication Number Publication Date
CN106293677A true CN106293677A (zh) 2017-01-04
CN106293677B CN106293677B (zh) 2019-09-27

Family

ID=57659717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510309606.8A Active CN106293677B (zh) 2015-06-08 2015-06-08 一种代码转换方法及装置

Country Status (1)

Country Link
CN (1) CN106293677B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106911775A (zh) * 2017-02-24 2017-06-30 郑州云海信息技术有限公司 一种私有云管理系统、方法及装置
CN107172012A (zh) * 2017-04-18 2017-09-15 北京思特奇信息技术股份有限公司 一种报文格式转换方法和系统
CN107918542A (zh) * 2017-11-23 2018-04-17 北京恒华伟业科技股份有限公司 一种字符串生成方法及装置
CN109271168A (zh) * 2018-08-09 2019-01-25 上海鲸鱼机器人科技有限公司 一种代码转换方法、装置及设备、存储介质
CN109739512A (zh) * 2018-12-28 2019-05-10 江苏极光网络技术有限公司 一种解析型语言文本式分析转换方法
CN110109681A (zh) * 2019-05-08 2019-08-09 上海携程商务有限公司 不同平台间代码的转换方法及系统
CN110362317A (zh) * 2018-04-09 2019-10-22 腾讯科技(深圳)有限公司 一种代码转换方法、装置和存储介质
CN110543297A (zh) * 2018-05-28 2019-12-06 北京京东尚科信息技术有限公司 用于生成源码的方法和装置
CN110554875A (zh) * 2018-05-30 2019-12-10 北京三快在线科技有限公司 代码转换方法及装置、电子设备、存储介质
CN111209004A (zh) * 2019-12-30 2020-05-29 北京健康之家科技有限公司 代码转换方法及装置
CN112214212A (zh) * 2020-10-10 2021-01-12 江西洪都航空工业集团有限责任公司 一种根据json格式数据生成c#语言源代码的方法
CN112667240A (zh) * 2020-12-23 2021-04-16 平安普惠企业管理有限公司 程序代码转换方法及相关设备
CN113495731A (zh) * 2020-03-19 2021-10-12 阿里巴巴集团控股有限公司 代码执行方法、装置、电子设备及存储介质
CN113746593A (zh) * 2020-05-29 2021-12-03 北京沃东天骏信息技术有限公司 一种字符串数据传输方法、系统、装置、电子设备及其存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999370A (zh) * 2011-09-16 2013-03-27 腾讯科技(深圳)有限公司 脚本的执行方法及系统
CN103052943A (zh) * 2010-09-09 2013-04-17 株式会社日立制作所 源代码转换方法和源代码转换程序
CN103631632A (zh) * 2013-11-29 2014-03-12 华为技术有限公司 移植方法及源到源编译器
US8762962B2 (en) * 2008-06-16 2014-06-24 Beek Fund B.V. L.L.C. Methods and apparatus for automatic translation of a computer program language code

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762962B2 (en) * 2008-06-16 2014-06-24 Beek Fund B.V. L.L.C. Methods and apparatus for automatic translation of a computer program language code
CN103052943A (zh) * 2010-09-09 2013-04-17 株式会社日立制作所 源代码转换方法和源代码转换程序
CN102999370A (zh) * 2011-09-16 2013-03-27 腾讯科技(深圳)有限公司 脚本的执行方法及系统
CN103631632A (zh) * 2013-11-29 2014-03-12 华为技术有限公司 移植方法及源到源编译器

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106911775A (zh) * 2017-02-24 2017-06-30 郑州云海信息技术有限公司 一种私有云管理系统、方法及装置
CN107172012A (zh) * 2017-04-18 2017-09-15 北京思特奇信息技术股份有限公司 一种报文格式转换方法和系统
CN107918542A (zh) * 2017-11-23 2018-04-17 北京恒华伟业科技股份有限公司 一种字符串生成方法及装置
CN110362317B (zh) * 2018-04-09 2021-07-06 腾讯科技(深圳)有限公司 一种代码转换方法、装置和存储介质
CN110362317A (zh) * 2018-04-09 2019-10-22 腾讯科技(深圳)有限公司 一种代码转换方法、装置和存储介质
CN110543297B (zh) * 2018-05-28 2021-03-30 北京京东尚科信息技术有限公司 用于生成源码的方法和装置
CN110543297A (zh) * 2018-05-28 2019-12-06 北京京东尚科信息技术有限公司 用于生成源码的方法和装置
CN110554875B (zh) * 2018-05-30 2021-01-15 北京三快在线科技有限公司 代码转换方法及装置、电子设备、存储介质
CN110554875A (zh) * 2018-05-30 2019-12-10 北京三快在线科技有限公司 代码转换方法及装置、电子设备、存储介质
CN109271168A (zh) * 2018-08-09 2019-01-25 上海鲸鱼机器人科技有限公司 一种代码转换方法、装置及设备、存储介质
CN109739512A (zh) * 2018-12-28 2019-05-10 江苏极光网络技术有限公司 一种解析型语言文本式分析转换方法
CN110109681A (zh) * 2019-05-08 2019-08-09 上海携程商务有限公司 不同平台间代码的转换方法及系统
CN111209004B (zh) * 2019-12-30 2023-09-01 北京水滴科技集团有限公司 代码转换方法及装置
CN111209004A (zh) * 2019-12-30 2020-05-29 北京健康之家科技有限公司 代码转换方法及装置
CN113495731A (zh) * 2020-03-19 2021-10-12 阿里巴巴集团控股有限公司 代码执行方法、装置、电子设备及存储介质
CN113495731B (zh) * 2020-03-19 2022-06-07 阿里巴巴集团控股有限公司 代码执行方法、装置、电子设备及存储介质
CN113746593A (zh) * 2020-05-29 2021-12-03 北京沃东天骏信息技术有限公司 一种字符串数据传输方法、系统、装置、电子设备及其存储介质
CN112214212A (zh) * 2020-10-10 2021-01-12 江西洪都航空工业集团有限责任公司 一种根据json格式数据生成c#语言源代码的方法
CN112214212B (zh) * 2020-10-10 2024-04-02 江西洪都航空工业集团有限责任公司 一种根据json格式数据生成c#语言源代码的方法
CN112667240A (zh) * 2020-12-23 2021-04-16 平安普惠企业管理有限公司 程序代码转换方法及相关设备

Also Published As

Publication number Publication date
CN106293677B (zh) 2019-09-27

Similar Documents

Publication Publication Date Title
CN106293677A (zh) 一种代码转换方法及装置
CN105912381B (zh) 一种基于规则库的编译期代码安全检测方法
CN106951228A (zh) 版本迭代中差异的处理方法和装置
CN110532019B (zh) 一种软件代码片段历史追溯的方法
CN102567200A (zh) 基于函数调用图的并行化安全漏洞检测方法
CN102609451A (zh) 面向流式数据处理的sql查询计划生成方法
CN105793818A (zh) 源代码翻译
CN107203468A (zh) 一种基于ast的软件版本演化对比分析方法
CN104298594B (zh) 一种源代码中值计算错误的自动检测和定位方法
CN103488560B (zh) 一种用于网页测试的测试目标处理方法和装置
CN106251164A (zh) 一种景区推荐方法及系统
CN110059006A (zh) 代码审计方法及装置
CN107038115A (zh) 应用软件安全漏洞检测方法和系统
CN105122208A (zh) 源程序分析系统、源程序分析方法和记录有程序的非瞬时记录介质
CN105335246A (zh) 一种基于问答网站分析的程序崩溃缺陷自动修复方法
CN103780448A (zh) 一种控件层代码的生成方法及装置
CN109918076A (zh) 代码文件处理方法、系统、计算机设备及可读存储介质
CN106126224A (zh) 一种生成程序对象的工具、系统和方法
CN102681932B (zh) 一种检测软件异常输入处理正确性的方法
Xu et al. MULAPI: A tool for API method and usage location recommendation
CN107992324A (zh) 一种基于约束求解的代码搜索方法
CN103235757B (zh) 基于自动化造数对输入域测试对象进行测试的装置和方法
CN104898991A (zh) 一种基于自动化ral的寄存器访问方法及系统
CN105630678B (zh) 一种智能电能表软件的可靠性检测仪及其检测方法
CN104484156A (zh) 多语言公式的编辑方法、编辑系统和多语言公式编辑器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200922

Address after: Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200922

Address after: Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: Grand Cayman Islands

Patentee before: Alibaba Group Holding Ltd.