代码转换制造技术

技术编号:2828559 阅读:270 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及可执行代码从一种语言到另一种语言的转换。具体地,本发明专利技术涉及代码的自动化转换。本发明专利技术涉及用于创建包括节点、待在代码转换中使用的方法、软件和计算机系统。本发明专利技术还涉及建立待在代码转换中使用的解析器的方法、软件和计算机系统。最后,本发明专利技术还涉及转换、评估和再转换代码的自动化方法和迭代方法。本发明专利技术的优点是其避免使用中间转换语言的能力及其高的自动化水平,从而减少了人工转换,并因此更高效,且成本更低。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及可执行代码从一种语言到另一种语言的转换。具体来说,本 专利技术涉及代码的自动转换。
技术介绍
遗留系统(legacy system )是陈旧的计算机系统或通常包含以COBOL、 PL/I和其它古老的编程语言写成的几十亿行代码的应用程序。转换涉及将遗留的应用程序源代码转换为现代语言的进程,例如将应用 程序从COBOL转换到J2EE上的Java,或将RPG写成的应用程序转换 为.NET上的c#。有时也将转换称作现代化。将遗留的应用程序转换,i]独立的现代的技术平台具有很多优点一维护遗留应用程序的知识产权;一使得将来更容易且以较少花费对应用程序进行改进;—应用程序可以现代化为能够提供网页(Web-enablement);而且一应用程序可保持原始的样式、感觉和功能,从而使对职工的培训最小化。转换通常使用基于工作台的应用程序现代化的方法,也就是说,转换基 于一系列完全不同的工具,且通常牵涉很多对代码的人工转换。A.特里可夫(A Terekhov )和C.费霍夫(C Verhoef)在他们的名称为 实现语言转换(The Realities of Language Conversion ) (圣彼德堡州立 大学(St Petersburg State University))的论文中陈述自动化的语言变换 看起来简单,但当实际应用时是 一个极其复杂的问题n他们以这样的陈述进 行总结不存在像筒单变换这样的事情,人们应该限制他们对转换工程的质量和语义上等价的期望。
技术实现思路
本专利技术的第一方案为一种创建包括多个节点的树的.方法,该树待用于可 执行代码到不同编程语言的转换中,该方法包括接收所述可执行代码;识别所述代码的每一可执行段;为所述代码的每一可执行段分配一个节点,其中每一节点属于一组预定 节点类型之一,所述每一预定节点类型定义编程语言的一项唯一的通用可执 行操作,每一节点的结构和内容由其节点类型定义的通用操作来确定;和链接多个节点以创建该树。通过将各执行段削减到其基本含义,各种语言之间的语法区别就不会在 创建的树中反映出来,该树随后用于将代码转换到不同的编程语言。如果代 码的两个部分实现同一组可执行操作,即便它们是由不同语言写成的,代码 的这两个部分也会生成相同的树。这样,由于相同的方法可以应用于多种编 程语言,因此使代码转换变得容易,并避免了对独立的中间语言的需求。所述唯一 的通用可执行操作可以是对另一代码组元的引用;赋值语句;数据处理语句;条件语句;或循环语句。对于每一节点类型,其结构包括一个或更多个子节点,其中每一子节点 属于一组预定子节点类型之一,所述每一子节点类型定义其通用可执行操作 的一个可能组元。例如,定义赋值语句的可执行操作的节点类型,可以构建为包括子节点 类型的第一子节点以及子节点类型的第二子节点,该第一子节点类型定义赋值操作的目标组元,第二子节点类型定义赋值操作赋值组元。对于每一子节点类型,其结构包括一个或更多个再子节点,其中每一再子节点属于一组预定再子节点类型之一,所述每一再子节点类型定义其通用 可执行操作的组元的 一 个可能子组元。例如,上述第二子节点可以具有一组预定再子节点类型,其可包括一个 定义变量或数学表达式的再子节点。在该树中,所述可执行代码中使用的变量会与定义变量的子节点类型相 关地出现在该树中。在该树中,所述可执行代码中使用的数学等式会与定义所述等式中使用 的数学表达式的子节点类型相关联地出现在该树中。在该树中,所述可执行代码中使用的常量会与定义常量的子节点类型相关地出现在该树中。每一 节点可包括识别信息,例如分配给所述可执行代码中的可执行段的行号。通过向每一 节点分配链接信息来将该节点链接到该树上,所述链接信息 与将该节点链接到该树上所需的其它节点有关,例如该节点的父节点和子节 点的详情。每一节点可具有唯一的标识符。 一个节点可通过拥有该节点相关的父节 点或子节点的唯一的ID,来链接到该树。每一节点可进一步包括多个方法,这多个方法涉及如何执行用于协助处 理树的各种动作。每一节点可进一步包括一个标记器,该标志器能够由所述用于协助处理 树的多种方法使用;例如,指示一方法在该节点上已经被执行。所述方法可进一步包括识别所述声明数据的每 一 声明段;为所述代码的每一声明段分配 一 个节点,该节点属于定义声明的节点类型;以及将该声明节点链接到该树。所迷声明数据可以是与所述可执行代码相关联的另 一代码。所述声明数 据可以包括变量声明、函数声明或程序声明。 所述声明节点包括以下任一个或更多个 如上所述的识别信息; 如上所述的链接信息; 如上所述的多个方法;以及 唯一的标识符。本专利技术的第二方案为一种建立解析器以创建包括多个节点的树的方法, 该树待用于可执行代码从第 一编程语言到第二编程语言的转换中,该方法包 括针对所述第 一编程语言,从以所述第 一编程语言编写的代码中识别出定 义可执行操作的语法;为识别出的语法分配节点类型,其中每一节点类型为一组预定节点类型 之一 ,所述每一预定节点类型定义编程语言的 一项唯一的通用可执行操作; 每一节点类型的结构和内容由其节点类型定义的通用操作来确定;重复该方法,直至针对所述第 一 操作语言的所有可执行操作的语法都已 经被识别并且都已被分配节点类型。本专利技术的第三方案提供了一种解析器,其用于执行本专利技术第一方案的方 法。该解析器可以依据本专利技术第二方案的方法来建立。本专利技术的第四方案为 一种能够使计算机系统运行以执行本专利技术第 一 方 案的方法的应用软件。本专利技术的第五方案为 一种能够使计算机系统运转以执行本专利技术第二方 案的方法的应用软件。本专利技术的第六方案为 一 种将可执行代码转换为不同编程语言的计算机 系统,该计算机系统具有输入工具,用于接收所述可执行代码;存储工具,用于存储所接收的代码和应用软件;和处理工具,用于使用所述应用软件来执行本专利技术第一方案的方法。该计算机系统可以进 一 步包括输出工具,其用于以不同的编程语言输出 所述可执行代码。本专利技术的第七方案为一种将可执行代码从第一编程语言转换为第二编程语言的计算机系统,该计算机系统包括存储工具,用于存储所述可执行代码和应用软件;以及处理工具,用于使用所述应用软件执行本专利技术第二方案的方法。本专利技术的第八方案为一种将可执行代码从第一编程语言转换为第二编程语言的方法,所述方法包括以本专利技术的第一方案所述的方法创建树;针对树上的每个节点,将定义的可执行操作转录为第二编程语言的语法。本专利技术的第九方案为 一种将代码转换为不同编程语言的方法,该方法包括接收所述代码;将涉及多个重建进程的识别数据存储于数据存储器中,所述多个重建进 程待在所述抽象语法树上运行以重建该树,从而协助所述到不同语言的代码 转换;在所述抽象语法树上自动运行在所述数据存储器中识别出的重建进程; 在该重建的树上自动运行配置进程,以将所述代码转换为所述不同的编 程语言;评估转换后的代码,并基于该评估,识别出另一待在所述抽象语法树上 运行以协助所述到不同语言的代码转换的重建进程;将所述另 一重建进程的识别数据存储到所述数据存储器中;以及重复所述运行步骤。利用每次迭代,对原始代码进行重复转换并分析,从而使得转换后的代 码在质量上更好,且更具有可维护性。各次迭代本文档来自技高网...

【技术保护点】
一种创建包括多个节点的树的方法,该树待用于可执行代码到不同编程语言的转换中,该方法包括:接收所述可执行代码;识别所述代码的每一可执行段;为所述代码的每一可执行段分配一个节点,其中每一节点属于一组预定节点类型之一,所述每一预定节点类型定义编程语言的一项唯一的通用可执行操作,每一节点的结构和内容由其节点类型定义的通用操作来确定;和链接多个节点以创建该树。

【技术特征摘要】
【国外来华专利技术】AU 2005-10-7 2005905559;AU 2005-10-19 2005905868;A1、一种创建包括多个节点的树的方法,该树待用于可执行代码到不同编程语言的转换中,该方法包括接收所述可执行代码;识别所述代码的每一可执行段;为所述代码的每一可执行段分配一个节点,其中每一节点属于一组预定节点类型之一,所述每一预定节点类型定义编程语言的一项唯一的通用可执行操作,每一节点的结构和内容由其节点类型定义的通用操作来确定;和链接多个节点以创建该树。2、 如权利要求l所述的方法,其中所述唯一的通用可执行操作为 对另一代码组元的引用;赋值语句; 数据处理语句; 条件语句;或 循环语句。3、 如权利要求1或2所述的方法,其中对于每一节点类型,其结构包 括一个或更多个子节点,其中每一子节点属于一組预定子节点类型之一,所 述每一子节点类型定义其通用可执行操作的一个可能组元。4、 如权利要求3所述的方法,其中对于每一子节点类型,其结构包括 一个或更多个再子节点,其中每一再子节点属于一组预定再子节点类型之 一,所述每一再子节点类型定义其通用可执行操作的组元的一个可能子组 元。5、 如前述任一权利要求所述的方法,其中在该树中,所述可执行代码 中使用的变量与定义变量的子节点类型相关联地出现在该树中。6、 如前述任一权利要求所述的方法,其中在该树中,所述可执行代码 中使用的数学等式与定义所述等式中使用的数学表达式的子节点类型相关 联地出现在该树中。7、 如前述任一权利要求所述的方法,其中在该树中,所述可执行代码 中使用的常量与定义常量的子节点类型相关联地出现在该树中。8、 如前述任一权利要求所述的方法,其中每一节点包括识別信息,例 如分配给所述可执行代码中的可执行段的行号。9、 如前述任一权利要求所述的方法,其中通过向每一节点分配链接信 息来将该节点链接到该树上,所述链接信息与将该节点链接到该树上所需的 其它节点有关,例如该节点的父节点和子节点的详情。10 、如前述任 一 权利要求所述的方法,其中每 一 节点具有唯 一 的标识符。11、 如前述任一权利要求所述的方法,其中每一节点进一步包括多个方12、 如前述任一权利要求所述的方法,其中每一节点进一步包括一个标 记器,该标志器能够由所述用于协助处理树的各种方法使用;例如,指示一 方法在该节点上已经被执行。13、 如前述任一权利要求所述的方法,其中所述方法进一步包括 接收与所述可执行代码相关联的声明数据;识别所述声明数据的每一声明段;为所述代码的每一声明段分配一个节点,该节点属于定义声明的节点类 型;以及将该声明节点链接到该树。14、 如前述任一权利要求所述的方法,其中所述定义声明节点的节点类 型包括以下任一个或更多个识别信息,例如分配给所述声明数据的行号; 将该节点链接到该树的链接信息; 有助于处理树的多个方法;以及 唯一的标识符。15、 一种建立解析器以创建包括多个节点的树的方法,该树待用于可执 行代码从第一编程语言到第二编程语言的转换中,该方法包括针对所述第 一编程语言,从以所述第 一编程语言编写的代码中识别出定义可执行操作的语法;为识别出的语法分配节点类型,其中每一节点类型为一组预定节点类型之一,所述每一预定节点类型定义编程语言的一项唯一的通用可执行操作;每一节点类型的结构和内容由其节点类型定义的通用操作来确定;重复该方法,直至针对所述第 一操作语言的所有可执行操作的语法都已经被识别并且都已被分配节点类型。16、 如权利要求15所述的方法,其中所述唯一的通用可执行操作为 对另一代码组元的引用;赋值语句; 数据处理语句; 条件语句;或 循环语句。17、 如权利要求15或16所述的方法,其中对于每一节点类型,其结构 包括一个或更多个子节点,其中每一子节点属于一组预定子节点类型之一, 每一子节点类型定义其通用可执行操作的一个可能组元。18、 如权利要求17所述的方法其中对于每一子节点类型,其结构包 括一个或更多个再子节点,其中每一再子节点属于一组预定再子节点类型之 一,所述每一再子节点类型定义其通用可执行操作的组元的可能子组元。19、 如权利要求15至18中任一项所述的方法,其中对于定义包括变量 用途在内的通用操作的节点类型,该通用操作的节点类型被关联到定义变量 的子节点类型。20、 如权利要求]5至19中任一项所述的方法,其中对于定义包括变量 用途在内的通用操作的节点类型,该通用操作的节点类型被关联到定义变量 的子节点类型。21、 如权利要求15至20中任一项所述的方法,其中对于定义数学等式 的通用操作的节点类型,该通用操作的节点类型被关联到定义数学表达式的 子节点类型。22、 如权利要求15至21中任一项所述的方法,其中对于定义包括常量 用途在内的通用操作的节点类型,该通用操作的节点类型被关联到定义常量 的子节点类型。23、 如权利要求15至22中任一项所述的方法,其中每一节点类型的结 构包括存储识别信息的能力,所述识别信息例如分配给所述可执行代码中的 可执行段的行号。24、 如权利要求15至23中任一项所述的方法,其中每一节点类型的结 构包括存储链接信息的能力,所述链接信息与将该节点类型如何能够链接到 其它节点相关。25、 如权利要求15至24中任一项所述的方法,其中每一节点类型的结 构具有存储该节点的唯一的标识符的能力。26、 如权利要求15至25中任一项所述的方法,其中每一节点类型进一步包括涉及如何执行各种动作的多个方法,所述动作在被置于树中时,协助 处理节点类型。27、 如权利要求15至26中任一项所述的方法,其中每一节点类型进一 步包括一个标记器,该标志器在被置于树上时,能够由所述协助处理树的多 个方法使用。28、 一种解析器,适用于执行权利要求1至14中任一项所述的方法。29、 一种解析器,其根据权利要求15至27中任一项所述的方法建立。30、 一种应用软件,其能够使计算机系统运行以执行权利要求1至14 中任一项所述的方法。31、 一种应用软件,其能够使计算机系统运行以执行权利要求15至2...

【专利技术属性】
技术研发人员:阿尔伯特唐纳德通金鲁思埃玛通金
申请(专利权)人:奎朴兹有限公司
类型:发明
国别省市:AU[澳大利亚]

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

1