[发明专利]一种软件源码语言翻译系统及方法有效
| 申请号: | 201410376235.0 | 申请日: | 2014-08-03 |
| 公开(公告)号: | CN104391730B | 公开(公告)日: | 2017-07-11 |
| 发明(设计)人: | 杨朝晖;马满材;李洋;邓高超;周波;李善平;孙建伶 | 申请(专利权)人: | 浙江网新恒天软件有限公司 |
| 主分类号: | G06F9/45 | 分类号: | G06F9/45;G06F9/44;G06F17/30 |
| 代理公司: | 杭州求是专利事务所有限公司33200 | 代理人: | 邱启旺 |
| 地址: | 310012 浙江省杭*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 软件 源码 语言 翻译 系统 方法 | ||
1.一种软件源码语言翻译系统,其特征在于,包括:
程序对象模型管理模块:用于管理作为翻译中间产物的程序对象模型,对程序对象模型的管理包括模型的创建、存储、查询和修改;其中,所述程序对象模型包括语法树和符号信息表;对语法树的管理包括创建语法树节点,设置语法树节点属性,读取语法树节点属性,设置语法树节点间父子关系,根据语法树节点间父子关系遍历语法树节点;对符号信息表的管理包括创建基本符号信息表,创建符号对象,删除符号对象,设置符号对象属性,按符号名称查询基本符号信息表,设置基本符号信息表级联关系,按符号名称查询级联的符号信息表,设置符号对象与语法树节点的定义关联和引用关联;
转换规则库:用于管理源码解析规则,模型转换规则和代码生成规则;其中源码解析规则,包括程序语法规则和符号定义规则;所述程序语法规则以EBNF范式的形式描述程序语言中合法的语法单元和层次关系;所述符号定义规则描述语法树节点与符号对象的对应关系;模型转换规则为<第一模式部,条件部,动作部>三元组形式;其中第一模式部描述该规则所能转换的语法树节点类型和子树结构;条件部描述满足模式的语法树子树中各节点属性需要进一步满足的条件;动作部描述模式及条件均满足时,相应生成的新语法树子树,以及对应填入符号信息表中的符号对象;代码生成规则为<第二模式部,目标模板部>的二元组形式;其中第二模式部用于描述指定结构的语法子树,当模式匹配时提取模式中指定位置的变量;目标模板部描述相应生成的文本的目标代码模板,在模式部匹配语法子树时提取的变量用于填充模板中的占位符;转换规则库对规则的管理包括规则的创建、删除、查看、编辑、导入和导出;
源码解析模块:分别与转换规则库和程序对象模型管理模块相连,用于从转换规则库取得定制的源码解析规则并予以执行,逐个解析程序源码,通过调用程序对象模型管理模块创建和保存等价的结构化的程序对象模型;所述解析程序源码,包括使用词法解析程序将源码切分为词法单元,使用语法解析程序分析词法单元序列表达的语法结构,组织反映语法结构的语法树,以及遍历语法树,从中提取其中的符号定义和引用信息;
程序对象模型转换引擎:分别与转换规则库和程序对象模型管理模块相连,用于从转换规则库取得定制的模型转换规则并予以执行,对程序对象模型实施转换;所述程序对象模型的转换包括语法树的转换和符号信息表的转换;所述语法树的转换是指改变语法树的结构和属性的操作,包括修改语法树节点属性,修改语法树节点间父子关系,创建和插入新的语法树节点,删除语法树节点;所述符号信息表的转换是指改变符号信息表所记录的符号信息的操作,包括修改符号对象属性,创建和插入新的符号对象,删除符号对象,修改符号信息表级联关系;
目标语言生成模块:分别与转换规则库和程序对象模型管理模块相连,从转换规则库取得定制的代码生成规则并予以执行,生成目标语言源代码;该模块包含目标代码模板引擎和源代码-目标代码关联模块;其中,所述目标代码模板引擎根据代码生成规则,从程序对象模型的语法树节点中提取属性信息,包括读取语法树节点本身属性,以及查询语法树节点相关联的符号对象属性;所提取属性信息用于填充指定的代码模板,生成该语法树节点对应的目标代码;在执行代码生成规则的同时,源代码-目标代码关联模块记录语法树节点对应的源代码以及生成的目标代码,用于对比查看翻译前后的代码,使用户可以审查源码翻译的有效性。
2.根据权利要求1所述一种软件源码语言翻译系统,其特征在于,所述程序对象模型管理模块还包括对语法树和符号信息表的持久存储功能,其中,语法树存储为文本文件,符号信息表存储为关系数据库表。
3.应用权利要求1所述软件源码语言翻译系统的软件源码语言翻译方法,其特征在于,包括以下步骤:
(1)通过转换规则库,用户定制源码解析模块所需的源码解析规则、程序对象模型转换引擎所需的模型转换规则和目标语言生成模块所需的代码生成规则;
(2)通过程序对象模型管理模块对程序对象模型实施初始化,并建立翻译过程中必要的目标系统的符号信息表;
(3)通过源码解析模块,执行从步骤1获得的源码解析规则,逐个解析程序源码,为每份程序源码在程序对象模型管理模块中创建和保存等价的结构化的程序对象模型;具体包括根据程序语法规则,组织生成语法树,以及根据符号定义规则,填充符号信息表;
(4)通过程序对象模型管理模块对步骤3得到的语法树和符号信息表进行存储和索引;
(5)通过程序对象模型转换引擎,执行步骤1得到的模型转换规则,对程序模型实施转换;在每一份程序源码的程序对象模型上,程序对象模型转换引擎从其中的语法树根节点开始执行模型转换规则,选择符合根节点类型的规则对该节点实施转换,并触发对子节点的转换;对子节点的转换过程与根节点相同,依次递归,完成整个语法树全部节点的遍历和转换;当转换一个语法树节点时,同时取得与语法树节点关联的符号对象,实施相关联的符号信息转换;最终得到转换后的程序对象模型,包括更新的语法树和符号信息表;
(6)通过程序对象模型管理模块对步骤5得到的更新的语法树和符号信息表进行存储和索引;
(7)通过目标语言生成模块,执行步骤1得到的代码生成规则,按照自底向上的次序,将语法树中子节点所生成的目标代码用于填充父节点的代码模板,处理至语法树根节点时,生成一份完整的目标语言源代码,保存于指定的代码文件;
(8)用户利用目标语言生成模块记录的源代码-目标代码关联信息,对比查看翻译前后的程序代码,当发现使用的规则存在问题,则转到步骤1,修改转换规则库中的相关规则,重新执行转换过程,直至不再需要修改规则。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江网新恒天软件有限公司,未经浙江网新恒天软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410376235.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:软件多定时器动态管理方法
- 下一篇:一位点阵文件输出控制系统及方法





