CN116301902A - 不同程序语言的转换方法、装置、设备、介质和程序产品 - Google Patents

不同程序语言的转换方法、装置、设备、介质和程序产品 Download PDF

Info

Publication number
CN116301902A
CN116301902A CN202310309738.5A CN202310309738A CN116301902A CN 116301902 A CN116301902 A CN 116301902A CN 202310309738 A CN202310309738 A CN 202310309738A CN 116301902 A CN116301902 A CN 116301902A
Authority
CN
China
Prior art keywords
grammar
preset
statement
translation
target
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.)
Pending
Application number
CN202310309738.5A
Other languages
English (en)
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202310309738.5A priority Critical patent/CN116301902A/zh
Publication of CN116301902A publication Critical patent/CN116301902A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种不同程序语言的转换方法,可以应用于信息安全技术领域。该不同程序语言的转换方法包括:获取源程序代码,其中,所述源程序代码包括多个语法语句,所述语法语句包括语法关键字;采用预设的匹配分类规则,基于所述多个语法语句的语法关键字,将所述多个语法语句分为第一语法语句和第二语法语句;通过预设的贴源翻译规则,翻译所述第一语法语句,得到第一目标程序代码语句;以及通过预设的定制翻译规则,翻译所述第二语法语句,得到第二目标程序代码语句。本公开还提供了一种不同程序语言的转换装置、设备、存储介质和程序产品。

Description

不同程序语言的转换方法、装置、设备、介质和程序产品
技术领域
本公开涉及信息安全技术领域,具体地涉及一种不同程序语言的转换方法、装置、设备、介质和程序产品。
背景技术
在信创转型的工作中,常将源代码语言的代码转换为目标代码语言的代码,现有的转换方案中,对依赖语法树实现语言的转换。
研究人员发现,单纯依赖语法树实现贴源翻译的方案,转换后的代码适配性考虑不足,无法对不同的框架进行对接,进而,致使通过贴源的语法树实现翻译后的代码难以正常实现对应的功能。
发明内容
鉴于上述问题,本公开提供了提高代码转换适配性的不同程序语言的转换方法、装置、设备、介质和程序产品。
根据本公开的第一个方面,提供了一种不同程序语言的转换方法,包括:获取源程序代码,其中,所述源程序代码包括多个语法语句,所述语法语句包括语法关键字;采用预设的匹配分类规则,基于所述多个语法语句的语法关键字,将所述多个语法语句分为第一语法语句和第二语法语句;通过预设的贴源翻译规则,翻译所述第一语法语句,得到第一目标程序代码语句;以及通过预设的定制翻译规则,翻译所述第二语法语句,得到第二目标程序代码语句。
根据本公开的实施例,其中,所述通过预设的贴源翻译规则,翻译所述第一语法语句,得到第一目标程序代码语句,包括:基于所述第一语法语句,建立源语言语法树;通过所述预设的贴源翻译规则,对所述源语言语法树中的所述第一语法语句进行贴源翻译,得到目标语言语法树;以及基于所述目标语言语法树生成第一目标程序代码。
根据本公开的实施例,其中,所述通过预设的定制翻译规则,翻译所述第二语法语句,得到第二目标程序代码语句,包括:基于所述第二语法语句,更新所述源语言语法树;以及通过所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,更新所述目标语言语法树;基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句。
根据本公开的实施例,其中,所述多个语法语句包括存储结构维度、数据类型维度、数据库访问对象维度以及事务控制维度,所述基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句,包括:对于所述存储结构维度,获取目标应用框架,所述目标应用框架至少包括目标数据存储结构;以及通过预设的存储结构翻译规则,调用数据结构操作,对所述第二语法语句中的存储结构进行转换,其中,所述预设的存储结构翻译规则是基于所述目标数据存储结构建立的。
根据本公开的实施例,其中,所述目标应用框架还包括目标数据类型,所述基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句,还包括:对于所述数据类型维度,获取数据类型触发条件;以及在所述第二语法语句中的数据类型满足所述数据类型触发条件的情况下,通过预设的数据类型代码转换规则,对所述第二语法语句进行转换,其中,所述预设的数据类型代码转换规则是基于所述目标数据类型建立的。
根据本公开的实施例,其中,所述目标应用框架还包括目标数据库访问方法,所述目标数据库访问方法是封装在默认访问方法之上的数据库访问方法,所述基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句,还包括:对于所述数据库访问对象维度,基于预设的数据库访问对象转换规则,对所述第二语法语句中的数据库访问对象进行转换,其中,所述预设的数据库访问对象转换规则是基于所述目标数据库访问方法设置的。
根据本公开的实施例,其中,所述基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句,还包括:对于所述事务控制维度,基于预设的事务控制转换规则,对所述第二语法语句中的事务控制对象进行转换,其中,所述预设的事务控制转换规则是对提交、回滚以及异常设置的转换规则。
本公开的第二个方面,提供了一种不同程序语言的转换装置,包括:源程序代码获取模块,用于获取源程序代码,其中,所述源程序代码包括多个语法语句,所述语法语句包括语法关键字;语法关键字分类模块,用于采用预设的匹配分类规则,基于所述多个语法语句的语法关键字,将所述多个语法语句分为第一语法语句和第二语法语句;第一翻译模块,用于通过预设的贴源翻译规则,翻译所述第一语法语句,得到第一目标程序代码语句;以及第二翻译模块,用于通过预设的定制翻译规则,翻译所述第二语法语句,得到第二目标程序代码语句。
根据本公开的实施例,其中,所述第一翻译模块,用于基于所述第一语法语句,建立源语言语法树;通过所述预设的贴源翻译规则,对所述源语言语法树中的所述第一语法语句进行贴源翻译,得到目标语言语法树;以及基于所述目标语言语法树生成第一目标程序代码。
根据本公开的实施例,其中,所述第二翻译模块,用于基于所述第二语法语句,更新所述源语言语法树;以及通过所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,更新所述目标语言语法树;基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句。
根据本公开的实施例,其中,所述多个语法语句包括存储结构维度、数据类型维度、数据库访问对象维度以及事务控制维度,所述第二翻译模块,用于对于所述存储结构维度,获取目标应用框架,所述目标应用框架至少包括目标数据存储结构;以及通过预设的存储结构翻译规则,调用数据结构操作,对所述第二语法语句中的存储结构进行转换,其中,所述预设的存储结构翻译规则是基于所述目标数据存储结构建立的。
根据本公开的实施例,其中,所述目标应用框架还包括目标数据类型,所述第二翻译模块,用于对于所述数据类型维度,获取数据类型触发条件;以及在所述第二语法语句中的数据类型满足所述数据类型触发条件的情况下,通过预设的数据类型代码转换规则,对所述第二语法语句进行转换,其中,所述预设的数据类型代码转换规则是基于所述目标数据类型建立的。
根据本公开的实施例,其中,所述目标应用框架还包括目标数据库访问方法,所述目标数据库访问方法是封装在默认访问方法之上的数据库访问方法,所述第二翻译模块,用于对于所述数据库访问对象维度,基于预设的数据库访问对象转换规则,对所述第二语法语句中的数据库访问对象进行转换,其中,所述预设的数据库访问对象转换规则是基于所述目标数据库访问方法设置的。
根据本公开的实施例,其中,所述第二翻译模块,用于对于所述事务控制维度,基于预设的事务控制转换规则,对所述第二语法语句中的事务控制对象进行转换,其中,所述预设的事务控制转换规则是对提交、回滚以及异常设置的转换规则。
本公开的第三个方面,提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述不同程序语言的转换方法。
本公开的第四个方面,还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述不同程序语言的转换方法。
本公开的第五个方面,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述不同程序语言的转换方法。
在本公开的实施例中,通过将语法分为两类,其中,一类采用贴源翻译的规则,直接实现语言翻译,另一类采用定制翻译的规则,定制化地对不同语言间特殊的语法进行翻译,关注新老框架对接的语法翻译,灵活地实现不同维度的转换规则的定制,可以灵活地生成符合目标语言习惯的代码,提高转换程序的可维护性和适配性,提高在原框架与目标框架差异化较大的场景,提升程序转换准确性的同时,减少对转换后代码进行人工二次修改的工作量。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的不同程序语言的转换方法的应用场景图;
图2示意性示出了根据本公开实施例的不同程序语言的转换方法的流程图;
图3示意性示出了根据本公开实施例的第一语法语句翻译方法流程图;
图4示意性示出了根据本公开实施例的第二语法语句翻译方法流程图;
图5示意性示出了根据本公开实施例的存储结构翻译方法流程图;
图6示意性示出了根据本公开实施例的数据类型翻译方法流程图;
图7示意性示出了根据本公开实施例的数据库访问对象翻译方法流程图;
图8示意性示出了根据本公开实施例的事务控制方法流程图;
图9示意性示出了根据本公开实施例的不同程序语言的转换装置的结构框图;
图10示意性示出了根据本公开实施例的适于实现不同程序语言的转换方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
框架:是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法,或者说,框架是可被应用开发者定制的应用骨架、模板。
语法树:在计算机科学中,抽象语法树(Abstract Syntax Tree,缩写为AST),或者语法树(Syntax Tree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。树上的每个节点都表示源代码中的一种结构。
现有方案依赖语法树完成语言的转换,但对转换后的代码适配性考虑不足。在实际信创转型工作的使用中,无法对不同的框架完成对接。目前普遍使用的是两套自研框架“框架A”和“框架B”。对于现有方案转换后的代码,只能按通用架构进行转换,对于一些特有架构并不能做到灵活地适配。
为了解决现有技术中存在的技术问题,本公开的实施例提供了一种不同程序语言的转换方法,获取源程序代码,其中,所述源程序代码包括多个语法语句,所述语法语句包括语法关键字;采用预设的匹配分类规则,基于所述多个语法语句的语法关键字,将所述多个语法语句分为第一语法语句和第二语法语句;通过预设的贴源翻译规则,翻译所述第一语法语句,得到第一目标程序代码语句;以及通过预设的定制翻译规则,翻译所述第二语法语句,得到第二目标程序代码语句。
在本公开的实施例中,通过将语法分为两类,其中,一类采用贴源翻译的规则,直接实现语言翻译,另一类采用定制翻译的规则,定制化地对不同语言间特殊的语法进行翻译,关注新老框架对接的语法翻译,灵活地实现不同维度的转换规则的定制,可以灵活地生成符合目标语言习惯的代码,提高转换程序的可维护性和适配性,提高在原框架与目标框架差异化较大的场景,提升程序转换准确性的同时,减少对转换后代码进行人工二次修改的工作量。
图1示意性示出了根据本公开实施例的不同程序语言的转换方法的应用场景图。
如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103、网络104以及服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的不同程序语言的转换方法一般可以由服务器105执行。相应地,本公开实施例所提供的不同程序语言的转换装置一般可以设置于服务器105中。本公开实施例所提供的不同程序语言的转换方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的不同程序语言的转换装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
以下将基于图1描述的场景,通过图2~图8对公开实施例的不同程序语言的转换方法进行详细描述。
图2示意性示出了根据本公开实施例的不同程序语言的转换方法的流程图。
如图2所示,该实施例的不同程序语言的转换包括操作S210~操作S240,该不同程序语言的转换方法可以由服务器105执行。
在操作S210中,获取源程序代码,其中,所述源程序代码包括多个语法语句,所述语法语句包括语法关键字。
在操作S220中,采用预设的匹配分类规则,基于所述多个语法语句的语法关键字,将所述多个语法语句分为第一语法语句和第二语法语句。
在操作S230中,通过预设的贴源翻译规则,翻译所述第一语法语句,得到第一目标程序代码语句。
具体的,贴源翻译是指贴合源码的语法结构进行翻译。基于语法树的翻译,除非有额外的适配功能,否则均为贴源翻译。以PLSQL语言转为JAVA语言为例,PLSQL语言中赋值语法“A:=B”;翻译为JaVa语法变为“A=B”,这就是贴源翻译,虽然变现形式有些许差异,但是语法的含义是相同的。又如PLSQL语言中中可以存储过程嵌套存储过程,但是对于Java语言中则不能方法嵌套方法。这时如果继续贴源翻译,则在目标语言中就没有配套的机制对接。
在操作S240中,通过预设的定制翻译规则,翻译所述第二语法语句,得到第二目标程序代码语句。
具体的,定制翻译规则是出于不同的程序代码语言,在未存在相应的配套机制时建立的,或者,定制翻译规则的是出于不同应用框架,在未存在相应的配套机制时建立的。由此,原本采用贴源翻译的代码转换方案在此并不适用,需要根据具体的情况,制定相应的翻译方案。
在本公开的实施例中,通过将语法分为两类,其中,一类采用贴源翻译的规则,直接实现语言翻译,另一类采用定制翻译的规则,定制化地对不同语言间特殊的语法进行翻译,关注新老框架对接的语法翻译,灵活地实现不同维度的转换规则的定制,可以灵活地生成符合目标语言习惯的代码,提高转换程序的可维护性和适配性,提高在原框架与目标框架差异化较大的场景,提升程序转换准确性的同时,减少对转换后代码进行人工二次修改的工作量。
图3示意性示出了根据本公开实施例的第一语法语句翻译方法流程图。
如图3所示,该实施例的第一语法语句翻译方法包括操作S310~操作S330,该操作S310~操作S330至少可以部分执行上述操作S230。
在操作S310中,基于所述第一语法语句,建立源语言语法树。
具体的,该第一语法语句则是可以直接进行贴源翻译的语法语句,通过解析这些语法语句,建立出源语言语法树,以体现出源代码文件中的部分程序结构。
在操作S320中,通过所述预设的贴源翻译规则,对所述源语言语法树中的所述第一语法语句进行贴源翻译,得到目标语言语法树。
在操作S330中,基于所述目标语言语法树生成第一目标程序代码。
具体的,在操作S320中的预设的贴源翻译规则是一些固定语法语句的一一对应的映射转化关系,具体体现在字母之间的转换(或称替换)和/或字符间的转换(或称替换)。通过将目标语言语法树的结构继承源语言语法树的结构的基础上,再通过预设的贴源翻译规则进行翻译转换,便可形成目标语言语法树。进而,通过以目标语言语法树的树根作为起点,采用前序遍历方式递归遍历目标语言语法树中的各个节点,生成第一目标程序代码。
图4示意性示出了根据本公开实施例的第二语法语句翻译方法流程图。
如图4所示,该实施例的第二语法语句翻译方法包括操作S410~操作S430,该操作S410~操作S430至少可以部分执行上述操作S240。
在操作S410中,基于所述第二语法语句,更新所述源语言语法树。
在操作S420中,通过所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,更新所述目标语言语法树。
在操作S430中,基于所述预设的定制翻译规则和所述目标语言语法树生成第二目标程序代码。
与上述操作S310~操作S330类似,定制翻译同样通过语法树完成的,不同的是,在制定定制翻译规则的时候,并非仅仅是简单的对应关系进行替换,还需要考虑不同程序语言之间的兼容情况以及应用框架的兼容情况。
图5示意性示出了根据本公开实施例的存储结构翻译方法流程图。
如图5所示,该实施例的第存储结构翻译方法包括操作S510~操作S520,该操作S510~操作S520至少可以部分执行上述操作S430。
根据本公开的实施例,其中,所述多个语法语句包括存储结构维度、数据类型维度、数据库访问对象维度以及事务控制维度。
以源程序语言为PLSQL,目标程序语言为JAVA为例,源程序语言PLSQL中一段完整的程序代码至少是按照存储结构维度、数据类维度型、数据库访问对象维度以及事务控制维度。在本公开的实施例中,该存储结构维度、数据类维度型、数据库访问对象维度以及事务控制维度皆被定义为语法。
在操作S510中,对于所述存储结构维度,获取目标应用框架,所述目标应用框架至少包括目标数据存储结构。
在操作S520中,通过预设的存储结构翻译规则,调用数据结构操作,对所述第二语法语句中的存储结构进行转换,其中,所述预设的存储结构翻译规则是基于所述目标数据存储结构建立的。
以源程序语言为PLSQL,目标程序语言为JAVA为例,默认情况下按JavaBean结构存储数据,也可以按照对接框架实现存储结构的定制化。自定义的存储结构必须实现Init/Set/Get三个接口,分别对应初始化、赋值、取值三个操作。翻译模块在处理具体语句时会根据当前的数据结构调用对应的初始化、赋值、取值,完成目标语言的翻译。
需要说明的是,在不考虑应用框架的情况下,PLSQL的存储结构对应Java的Javabean结构。但是一些机构,为了安全性的考虑并不使用例如Javabean的通用结构,而是在通用结构基础上进行封装。比如“框架A”,大量代码都在使用自定义的“数据结构a”进行数据存储。所以若转换后的Java代码若要运行在“框架A”中就需要把存储结构定制转换为“数据结构a”。
图6示意性示出了根据本公开实施例的数据类型翻译方法流程图。
如图6所示,该实施例的数据类型翻译方法包括操作S610~操作S620,该操作S610~操作S620至少可以部分执行上述操作S320。
根据本公开的实施例,其中,所述目标应用框架还包括目标数据类型。
在操作S610中,对于所述数据类型维度,获取数据类型触发条件。
在操作S620中,在所述第二语法语句中的数据类型满足所述数据类型触发条件的情况下,通过预设的数据类型代码转换规则,对所述第二语法语句进行转换,其中,所述预设的数据类型代码转换规则是基于所述目标数据类型建立的。
在实际转换中,并不是目标框架数据结构要与原框架完全一致。比如在PLSQL中有如下定义:
I_LANG_WORKDATE VARCHAR2(10);
这个变量在原框架中实际记录的是工作日期,需要转换为符合目标框架的结构DATE。这时就需要对数据类型转换的定制。可以按“应用名称”“规则类型(字段名称、字段类型)”“关系规则(包含、不包含、等于)”“规则内容”,设置转换规则。对于上例,当存在规则类型为字段名称,关系规则为包含,规则内容为WORKDATE且同时存在规则类型为字段类型,规则关系为等于,规则内容为VARCHAR2(1),将I_LANG_WORKDATE变量按DATE类型转换,而不是默认情况下的String类型。
图7示意性示出了根据本公开实施例的数据库访问对象翻译方法流程图。
如图7所示,该实施例的数据库访问对象翻译方法包括操作S710,该操作S710至少可以部分执行上述操作S320。
根据本公开的实施例,所述目标应用框架还包括目标数据库访问方法,所述目标数据库访问方法是封装在默认访问方法之上的数据库访问方法。
在操作S710中,对于所述数据库访问对象维度,基于预设的数据库访问对象转换规则,对所述第二语法语句中的数据库访问对象进行转换,其中,所述预设的数据库访问对象转换规则是基于所述目标数据库访问方法设置的。
在目标程序语言为JAVA的情况下,默认情况下按Mybatics的方式访问数据库,也可以按照自定义的方法访问。在自定义模式下,需要设置一些列基础SQL语法对应的JAVA方法,包括单条查询(selectOne),多条查询(selectList),更新(update),插入(insert),删除(delete)。翻译模块在处理具体语句时会根据设置的对应方法名转换SQL操作语句。
可以理解的是,银行系统各业务应用都是统一运行在某一框架应用下,由此框架应用提供数据库访问功能。为了安全性考虑,框架应用并不直接暴露Mybatics的访问方式,而是要进行必要的封装,同时对应用暴露框架应用提供的数据库访问方式。所以转换后的程序就需要将数据访问的方法定制转换为框架支持的方法。
图8示意性示出了根据本公开实施例的事务控制方法流程图。
如图8所示,该实施例的事务控制方法包括操作S810,该操作S810至少可以部分执行上述操作S320。
在操作S810中,对于所述事务控制维度,基于预设的事务控制转换规则,对所述第二语法语句中的事务控制对象进行转换,其中,所述预设的事务控制转换规则是对提交、回滚以及异常设置的转换规则。
事务控制往往与对接框架紧密相关,所以无法提供默认的事务控制规则。对于事务控制需要设置提交、回滚、异常3中状态下对应的控制语句。翻译模块在处理具体语句时会根据设置的对应方法名转换为对应的事务控制语句。
需要说明的是,事务的控制完全取决于框架,而且不同的框架事务控制的实现方式大相径庭。PLSQL事务的控制方式即使贴源翻译成Java,也无法适配工行使用的框架。除了框架上的限制,程序流转上不同语言也存在不用的流转方式。如PLSQL通过EXCEPTION关键字定义异常处理就成完成数据库访问后的部分逻辑,而Java语言异常梳理,因为效率问题,不能用来处理业务逻辑。所以对于PLSQL异常处理不能全部贴源翻译到Java语言中。
基于上述不同程序语言的转换方法,本公开还提供了一种不同程序语言的转换装置。以下将结合图9对该装置进行详细描述。
图9示意性示出了根据本公开实施例的不同程序语言的转换装置的结构框图。
如图9所示,该实施例的不同程序语言的转换装置900包括源程序代码获取模块910、语法关键字分类模块920、第一翻译模块930和第二翻译模块940。
源程序代码获取模块910用于获取源程序代码,其中,所述源程序代码包括多个语法语句,所述语法语句包括语法关键字。在一实施例中,源程序代码获取模块910可以用于执行前文描述的操作S210,在此不再赘述。
语法关键字分类模块920用于采用预设的匹配分类规则,基于所述多个语法语句的语法关键字,将所述多个语法语句分为第一语法语句和第二语法语句。在一实施例中,语法关键字分类模块920可以用于执行前文描述的操作S220,在此不再赘述。
第一翻译模块930用于通过预设的贴源翻译规则,翻译所述第一语法语句,得到第一目标程序代码语句。在一实施例中,第一翻译模块930可以用于执行前文描述的操作S230,在此不再赘述。
第二翻译模块940用于通过预设的定制翻译规则,翻译所述第二语法语句,得到第二目标程序代码语句。在一实施例中,第二翻译模块940可以用于执行前文描述的操作S240,在此不再赘述。
在本公开的实施例中,通过将语法分为两类,其中,一类采用贴源翻译的规则,直接实现语言翻译,另一类采用定制翻译的规则,定制化地对不同语言间特殊的语法进行翻译,关注新老框架对接的语法翻译,灵活地实现不同维度的转换规则的定制,可以灵活地生成符合目标语言习惯的代码,提高转换程序的可维护性和适配性,提高在原框架与目标框架差异化较大的场景,提升程序转换准确性的同时,减少对转换后代码进行人工二次修改的工作量。
根据本公开的实施例,其中,所述第一翻译模块,用于基于所述第一语法语句,建立源语言语法树;通过所述预设的贴源翻译规则,对所述源语言语法树中的所述第一语法语句进行贴源翻译,得到目标语言语法树;以及基于所述目标语言语法树生成第一目标程序代码。
根据本公开的实施例,其中,所述第二翻译模块,用于基于所述第二语法语句,更新所述源语言语法树;以及通过所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,更新所述目标语言语法树;基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句。
根据本公开的实施例,其中,所述多个语法语句包括存储结构维度、数据类型维度、数据库访问对象维度以及事务控制维度,所述第二翻译模块,用于对于所述存储结构维度,获取目标应用框架,所述目标应用框架至少包括目标数据存储结构;以及通过预设的存储结构翻译规则,调用数据结构操作,对所述第二语法语句中的存储结构进行转换,其中,所述预设的存储结构翻译规则是基于所述目标数据存储结构建立的。
根据本公开的实施例,其中,所述目标应用框架还包括目标数据类型,所述第二翻译模块,用于对于所述数据类型维度,获取数据类型触发条件;以及在所述第二语法语句中的数据类型满足所述数据类型触发条件的情况下,通过预设的数据类型代码转换规则,对所述第二语法语句进行转换,其中,所述预设的数据类型代码转换规则是基于所述目标数据类型建立的。
根据本公开的实施例,其中,所述目标应用框架还包括目标数据库访问方法,所述目标数据库访问方法是封装在默认访问方法之上的数据库访问方法,所述第二翻译模块,用于对于所述数据库访问对象维度,基于预设的数据库访问对象转换规则,对所述第二语法语句中的数据库访问对象进行转换,其中,所述预设的数据库访问对象转换规则是基于所述目标数据库访问方法设置的。
根据本公开的实施例,其中,所述第二翻译模块,用于对于所述事务控制维度,基于预设的事务控制转换规则,对所述第二语法语句中的事务控制对象进行转换,其中,所述预设的事务控制转换规则是对提交、回滚以及异常设置的转换规则。
根据本公开的实施例,源程序代码获取模块910、语法关键字分类模块920、第一翻译模块930和第二翻译模块940中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,源程序代码获取模块910、语法关键字分类模块920、第一翻译模块930和第二翻译模块940中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,源程序代码获取模块910、语法关键字分类模块920、第一翻译模块930和第二翻译模块940中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图10示意性示出了根据本公开实施例的适于实现不同程序语言的转换方法的电子设备的方框图。
如图10所示,根据本公开实施例的电子设备1000包括处理器1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。处理器1001例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器1001还可以包括用于缓存用途的板载存储器。处理器1001可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1003中,存储有电子设备1000操作所需的各种程序和数据。处理器1001、ROM 1002以及RAM 1003通过总线1004彼此相连。处理器1001通过执行ROM 1002和/或RAM1003中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1002和RAM 1003以外的一个或多个存储器中。处理器1001也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1000还可以包括输入/输出(I/O)接口1005,输入/输出(I/O)接口1005也连接至总线1004。电子设备1000还可以包括连接至I/O接口1005的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1002和/或RAM 1003和/或ROM 1002和RAM 1003以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的方法。
在该计算机程序被处理器1001执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1009被下载和安装,和/或从可拆卸介质1011被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被处理器1001执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (11)

1.一种不同程序语言的转换方法,包括:
获取源程序代码,其中,所述源程序代码包括多个语法语句,所述语法语句包括语法关键字;
采用预设的匹配分类规则,基于所述多个语法语句的语法关键字,将所述多个语法语句分为第一语法语句和第二语法语句;
通过预设的贴源翻译规则,翻译所述第一语法语句,得到第一目标程序代码语句;以及
通过预设的定制翻译规则,翻译所述第二语法语句,得到第二目标程序代码语句。
2.根据权利要求1所述的方法,其中,所述通过预设的贴源翻译规则,翻译所述第一语法语句,得到第一目标程序代码语句,包括:
基于所述第一语法语句,建立源语言语法树;
通过所述预设的贴源翻译规则,对所述源语言语法树中的所述第一语法语句进行贴源翻译,得到目标语言语法树;以及
基于所述目标语言语法树生成第一目标程序代码。
3.根据权利要求2所述的方法,其中,所述通过预设的定制翻译规则,翻译所述第二语法语句,得到第二目标程序代码语句,包括:
基于所述第二语法语句,更新所述源语言语法树;以及
通过所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,更新所述目标语言语法树;
基于所述预设的定制翻译规则和所述目标语言语法树生成第二目标程序代码。
4.根据权利要求3所述的方法,其中,所述多个语法语句包括存储结构维度、数据类型维度、数据库访问对象维度以及事务控制维度,
所述基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句,包括:
对于所述存储结构维度,获取目标应用框架,所述目标应用框架至少包括目标数据存储结构;以及
通过预设的存储结构翻译规则,调用数据结构操作,对所述第二语法语句中的存储结构进行转换,其中,所述预设的存储结构翻译规则是基于所述目标数据存储结构建立的。
5.根据权利要求4所述的方法,其中,所述目标应用框架还包括目标数据类型,
所述基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句,还包括:
对于所述数据类型维度,获取数据类型触发条件;以及
在所述第二语法语句中的数据类型满足所述数据类型触发条件的情况下,通过预设的数据类型代码转换规则,对所述第二语法语句进行转换,其中,所述预设的数据类型代码转换规则是基于所述目标数据类型建立的。
6.根据权利要求5所述的方法,其中,所述目标应用框架还包括目标数据库访问方法,所述目标数据库访问方法是封装在默认访问方法之上的数据库访问方法,
所述基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句,还包括:
对于所述数据库访问对象维度,基于预设的数据库访问对象转换规则,对所述第二语法语句中的数据库访问对象进行转换,其中,所述预设的数据库访问对象转换规则是基于所述目标数据库访问方法设置的。
7.根据权利要求6所述的方法,其中,所述基于所述预设的定制翻译规则,对所述源语言语法树中的所述第二语法语句进行定制翻译,得到第二目标程序代码语句,还包括:
对于所述事务控制维度,基于预设的事务控制转换规则,对所述第二语法语句中的事务控制对象进行转换,其中,所述预设的事务控制转换规则是对提交、回滚以及异常设置的转换规则。
8.一种不同程序语言的转换装置,包括:
源程序代码获取模块,用于获取源程序代码,其中,所述源程序代码包括多个语法语句,所述语法语句包括语法关键字;
语法关键字分类模块,用于采用预设的匹配分类规则,基于所述多个语法语句的语法关键字,将所述多个语法语句分为第一语法语句和第二语法语句;
第一翻译模块,用于通过预设的贴源翻译规则,翻译所述第一语法语句,得到第一目标程序代码语句;以及
第二翻译模块,用于通过预设的定制翻译规则,翻译所述第二语法语句,得到第二目标程序代码语句。
9.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~7中任一项所述的方法。
11.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~7中任一项所述的方法。
CN202310309738.5A 2023-03-27 2023-03-27 不同程序语言的转换方法、装置、设备、介质和程序产品 Pending CN116301902A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310309738.5A CN116301902A (zh) 2023-03-27 2023-03-27 不同程序语言的转换方法、装置、设备、介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310309738.5A CN116301902A (zh) 2023-03-27 2023-03-27 不同程序语言的转换方法、装置、设备、介质和程序产品

Publications (1)

Publication Number Publication Date
CN116301902A true CN116301902A (zh) 2023-06-23

Family

ID=86790274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310309738.5A Pending CN116301902A (zh) 2023-03-27 2023-03-27 不同程序语言的转换方法、装置、设备、介质和程序产品

Country Status (1)

Country Link
CN (1) CN116301902A (zh)

Similar Documents

Publication Publication Date Title
CN107832045B (zh) 跨编程语言接口转换的方法和装置
EP4170515A1 (en) Query translation
US8601438B2 (en) Data transformation based on a technical design document
CN109495392B (zh) 报文转换处理方法及装置、电子设备、存储介质
JP2018533126A (ja) データベースへの自然言語インタフェースのための方法、システム、およびコンピュータ・プログラム製品
CN110554875B (zh) 代码转换方法及装置、电子设备、存储介质
US11995075B2 (en) System and method for efficient transliteration of machine interpretable languages
CN111125064B (zh) 一种生成数据库模式定义语句的方法和装置
CN113641700A (zh) 一种基于Spring boot框架的数据处理方法及装置
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
CN113419740A (zh) 程序数据流的分析方法、装置、电子设备及可读存储介质
US9632837B2 (en) Systems and methods for system consolidation
CN116841559A (zh) 代码转换方法、装置、设备、介质和程序产品
US20220284371A1 (en) Method, device and medium for a business function page
CN116301902A (zh) 不同程序语言的转换方法、装置、设备、介质和程序产品
CN116382703B (zh) 软件包生成方法、代码开发方法及装置、电子设备和介质
JP7269244B2 (ja) サービス管理アプリケーションインターフェースにおいてグローバリゼーション機能を提供するためのシステムおよび方法
US20240152511A1 (en) Transliteration of machine interpretable languages for enhanced compaction
CN117406971A (zh) 基于持久层框架的数据库配置方法、装置和设备
CN116821159A (zh) 数据处理方法、装置、设备、介质及产品
CN116821220A (zh) 一种接口请求样例生成方法、装置、存储介质及设备
CN117395314A (zh) 请求处理方法、装置、电子设备及存储介质
CN116820565A (zh) 源代码处理方法、装置、电子设备和介质
CN113110873A (zh) 统一系统编码规范的方法和装置
CN116561751A (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