CN116107588A - 程序语言转化方法、装置、设备、介质和程序产品 - Google Patents

程序语言转化方法、装置、设备、介质和程序产品 Download PDF

Info

Publication number
CN116107588A
CN116107588A CN202310201259.1A CN202310201259A CN116107588A CN 116107588 A CN116107588 A CN 116107588A CN 202310201259 A CN202310201259 A CN 202310201259A CN 116107588 A CN116107588 A CN 116107588A
Authority
CN
China
Prior art keywords
program
data
file
parser
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.)
Pending
Application number
CN202310201259.1A
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 CN202310201259.1A priority Critical patent/CN116107588A/zh
Publication of CN116107588A publication Critical patent/CN116107588A/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/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示意性示出了根据本公开实施例的一种程序解析器的策略链的示意图
图11示意性示出了根据本公开实施例的在Cobol环境下的程序解析方法的流程图
图12示意性示出了根据本公开实施例的程序语言转化装置的结构框图
图13示意性示出了根据本公开实施例的适于实现程序转化方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
抽象语法树:(Abstract Syntax Tree,缩写为AST),是编译原理中的一个概念,即源代码语法结构的一种抽象表示。它以树的形式表现编程语言的语法结构,书上的每个节点都表示源代码中的一种结构。
完整的Cobol程序代码都是由四个部组成,这四个部依次为标识部、环境部、数据部、过程部。
以待转化的原程序语言为Cobol语言、转化后的语言为Java或者PLSQL为例,Cobol语言是出现于上世纪50年代末,是一种面向数据处理、文件输入输出的过程语言,广泛应用于各个领域中。由于编译语言的不断更新迭代,将原有平台中所使用的Cobol语言改造为当下热门的主流编译语言便显得尤为重要。而Java语言和PLSQL语言作为一种跨平台使用的编程语言,因其适用性广而得到普遍采用。通过的转化方案包括以下两种:
方案一:由人工的方式对主机Cobol语言转化为平台使用的Java语言。
方案二:通过工具解析Cobol语法生成抽象语法树,再根据抽象语法树完成至Java/PLSQL语法的转化。
对于上述方案一,存在以下缺点:
1、平台功能的建设并不涉及主机Cobol程序的逻辑修改,只是将Cobol程序原有的功能以平台服务的形式对外提供。但是为了掌握原有Cobol逻辑,需要对开发团队做额外的Cobol技术培训工作。
2、主机Cobol程序众多,通过人工重构的手段,需要耗费大量人力,且转化过程中极易产生人为错误。
对于上述方案二,存在以下缺点:
1、传统的语言转化工具往往基于抽象语法树实现。这需要构建对源语言完全支持的抽象语法树结构,成本投入高。
2、完全基于抽象语法树的转化,虽然提高了程序的解析率,但是没有考虑到转化后程序的可维护性,与适配性。如对Cobol数据下挂结构的转化,如果只按抽象语法树转化,转化后的Java/PLSQL语言依旧保留Cobol的使用习惯,并不符合Java/PLSQL的惯用法,从而降低了转化后程序的可维护性,与适配性。
3、平台、主机数据结构存在差异,如主机上一张参数表,平台可能存在因功能整合导致表字段不同,比如主机参数表P字段A,可能对应的是平台参数表P字段A和A1。如果仅是基于AST转化,则转化后程序将丢失对A1字段的处理,导致后的程序虽然与源程序逻辑一致,但仍不适用于平台环境。
为解决现有技术中存在的技术问题,本公开的实施例提供了一种程序语言转化方法,获取第一程序,所述第一程序是基于原程序语言编写的,所述第一程序语言包括多个部和数据库命令;基于预设的解析器,对所述第一程序中的多个部进行解析,得到多个解析文件;以及基于预设的编译规则,分别对所述多个解析文件进行编译,得到第二程序,所述第二程序是基于目标程序语言编写的。
在本公开的实施例中,通过将原程序中的多个部和数据库命令解析为多个自研结构的解析文件,避免了现有技术中依赖抽象语法树的问题,保证了对原程序的全面解析,并且在进行程序转化时,无需构建完整的语法树,仅部分片段的程序代码也可以实现程序语言转化,增强了程序语言转化的效率和适应性。
图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~图11对公开实施例的程序语言转化方法进行详细描述。
图2示意性示出了根据本公开实施例的程序语言转化方法的流程图。
如图2所示,该实施例的程序语言转化方法包括操作S210~操作S230,该程序语言转化方法可以由服务器105执行。
在操作S210中,获取第一程序,所述第一程序是基于原程序语言编写的,所述第一程序语言包括多个部和数据库命令。
在操作S220中,基于预设的解析器,对所述第一程序中的多个部进行解析,得到多个解析文件。
具体的,该第一程序的原程序语言是指例如Cobol语言等跨平台性较差的待改造语言,部解析器是指仅对Cobol语言中原生的“部”进行解析的解析逻辑或方法,而对于例如SQL等数据库查询语言,相较于程序语言,数据库查询语言代码较为独立,因此,该“部解析器”不涉及对例如SQL等数据库查询语言进行解析,之后单独为例如SQL等数据库查询语句配置解析器。
通过部解析器对第一程序中的不同部进行相应的解析后,得到相对应的解析文件。
根据本公开的实施例,其中,所述多个部至少包括:标识部、环境部、数据部以及过程部,所述预设的解析器至少包括:部解析器,所述部解析器包括:程序解析器、语法解析器以及数据结构解析器。
具体的,在Cobol语言中,包括标识部、环境部、数据部以及过程部,其中,标识部:由“IDENTIFICATION DIVISION”关键字标识,主要用于描述与程序本身相关的信息。环境部:用以说明程序运行的软硬件环境,是Cobol程序中唯一与设备相关的部分,将程序中用到的内部文件与外部设备建立起来联系,由“ENVIRONMENT DIVISION”关键字标识。数据部:程序中涉及到的全部数据(输入,输出,中间),都需要在此定义,对这些数据的属性进行说明。主要用于描述属性的数据类型、数据项间的关系以及文件与记录的关系,由“DATADIVISION”关键字标识。过程部:编写程序要执行的语句,是程序的核心,由“PROCEDUREDIVISION”关键字标识。逻辑的处理部分都处于过程部中。解析器通过触发上述不同部的关键字标识,便可以得到不同部所对应的代码。进而,对相应范围内的代码采用相应的解析器进行解析,便可以得到相应的解析文件。
根据本公开的实施例,其中,所述多个解析文件是按照序列化形式存储的。
总的来说,整个代码转化的过程分为将原始代码转化为解析文件的逻辑(即解析阶段)和将解析文件转化为目标代码的逻辑(即编码阶段)。由于程序的转化分为解析阶段和编码阶段,因此,使用序列化形式存储解析文件可以在解析端和编码端两端同时采取相应的逻辑,可以实现分时段开发,并且无需将所有的代码进行解析,缩短代码转化的周期,提升开发效率。
在操作S230中,基于预设的编译规则,分别对所述多个解析文件进行编译,得到第二程序,所述第二程序是基于目标程序语言编写的。
具体的,预设的编译规则与上述程序解析器、语法解析器以及数据结构解析器类似,同样是是与上述多个解析文件一一对应的。即由其中某个解析文件,按照预设的编码逻辑,便能得到构成目标代码的目标代码文件。
举个例子,当原程序语言是Cobol,目标程序语言是Java时,每一个解析出的解析文件都对应一个Cobol程序,从中提取相关信息,以完成Java类基础信息的构建、完成Java类方法的构建以及完成JavaBean的构建。
在本公开的实施例中,通过将原程序中的多个部和数据库命令解析为多个自研结构的解析文件,避免了现有技术中依赖抽象语法树的问题,保证了对原程序的全面解析,并且在进行程序转化时,无需构建完整的语法树,仅部分片段的程序代码也可以实现程序语言转化,增强了程序语言转化的效率和适应性。
图3示意性示出了根据本公开实施例的程序解析方法的流程图。
如图3所示,该实施例的程序解析方法包括操作S310~操作S330,该操作S310~操作S330至少可以部分执行上述操作S220。
在操作S310中,基于程序解析器对所述标识部进行解析,或者基于程序解析器对所述标识部和所述环境部进行解析,得到程序文件。
一般来说,Cobol语言由“部-节-段-句”构成,对于“部”而言,包括标识部,环境部,数据部以及过程部。相对应的,需要四大类的解析器去完成解析,由于环境部与标识部在进行解析时,采用的方法较为一致且并不复杂,因此,将对于环境部和标识部进行解析的逻辑放在一起去做。当然,在很多情况下,环境部受外部框架/环境影响较大,进而,对于环境部而言,即使进行解析也无意义,因此,也可以不对环境部进行解析。
在仅解析标识部的情况下,解析后得到的程序文件所含的成员变量包括:包名、程序名、调用参数、本程序引用的定义以及本程序声明的游标,其中,该游标用于触发在的数据库查询语言时使用相应的解析器,在此不过多赘述。
在操作S320中,基于所述数据结构解析器对所述数据部进行解析,得到数据文件。
解析后得到的数据文件所包含的成员变量包括:包名、方法名以及列表。其中,该列表中保存本数据结构中所有的字段。
在操作S330中,基于语法解析器对所述过程部进行解析,得到语法文件。
解析后得到的语法文件所含的成员变量包括:包名、方法名以及列表。其中,该列表保存了本方法中所有的语法。
对不同部的解析采用相对应的程序解析器,不同的程序解析器具有不同解析逻辑,可以实现从全方位提取原有程序中的有用信息。
图4示意性示出了根据本公开实施例的一种程序解析方法的流程图。
如图4所示,该实施例的一种程序解析方法包括操作S410~操作S420,该操作S410~操作S420至少可以部分执行上述操作S310。
在操作S410中,在遍历所述第一程序的过程中,触发于所述标识部的关键字和所述环境部的关键字,调用所述程序解析器。
在操作S420中,基于所述程序解析器,提取所述标识部和所述环境部中的程序关键字完成保存。
具体的,程序解析器负责对标识部中的程序架构进行解析,以字符流的形式读入程序文件,根据预设的关键字,提取程序的相关信息,相关信息包括:包名、程序名、调用参数、游标(或称Cursor)定义、数据结构定义、存储过程定义等。对于程序定义的存储过程调用语法解析器,对于程序定义的数据结构调用数据结构解析器,对于程序定义的Cursor调用数据库解析器(如SQL解析器)。通过序列化形成数据结构文件,记录Cobol程序的相关信息。直接提取关键字填入预设的格式即可。
图5示意性示出了根据本公开实施例的另一种程序解析方法的流程图。
如图5所示,该实施例的另一种程序解析方法包括操作S510~操作S520,该操作S510~操作S520至少可以部分执行上述操作S320。
根据本公开的实施例,其中,所述语法解析器是基于策略链的形式存在的,所述策略链包括多个子语法解析器。
在操作S510中,在遍历所述第一程序的过程中,触发于所述数据部的关键字,调用所述数据结构解析器。
在操作S520中,基于所述数据结构解析器,提取数据元素并保存。
在上述操作S410~操作S420解析出数据结构定义的情况下,对数据结构定义的相应代码采用数据结构解析器进行解析。数据结构解析器(可称为CobolRecord),通过List维护数据结构中各字段的信息。List中每一个元素均为一个CobolRecordItem,其中保存了如下信息:idOrigin-原始字段名称;id-符合通用规则的名称;leve-字段级别;type-字段种类;length-字段长度;comment-字段注释;masterRecord-字段上级节点;subRecordSameLevel-字段下一级节点(List)。
图6示意性示出了根据本公开实施例的另一种程序解析方法的流程图。
如图6所示,该实施例的另一种程序解析方法包括操作S610~操作S620,该操作S610~操作S620至少可以部分执行上述操作S330。
在操作S610中,在遍历所述第一程序的过程中,触发于所述过程部的关键字,依次调用所述策略链上的多个子语法解析器。
在操作S620中,在所述语法文件上的语法被所述多个子语法解析器中的任一子语法解析器识别的情况下,将识别到的语法提取并保存。
根据本公开的实施例,其中,在对所述策略链上新增所述子语法解析器的情况下,将新增的所述子语法解析器添加到所述策略链的尾端。
在上述操作S410~操作S420解析出存储过程定义的情况下,对存储过程定义的相应代码采用语法解析器进行解析。具体的,语法解析器(可以命名为“CobolFunction”)是一个策略链,链上每一环都是一个Cobol具体语法的解析器,即链上包括多个子语法解析器,对于每一个Cobol语句,依次调用链上的每一环解析器,直到该语法可以识别。对于存储过程中每定义的一个过程体(方法),生成一个序列化文件,记录其中包含的全部语法信息。需要说明的是,子语法解析器仅对Cobol原生的语法进行解析,不涉及例如SQL语句的解析。
图10示意性示出了根据本公开实施例的一种程序解析器的策略链的示意图。
如图10所示,策略链中依次包括语法“Evaluation”、“If”、“While”以及“Call”等。在进行语法解析时,依次调用“Evaluation”、“If”、“While”以及“Call”等,直至语法匹配成功。而在进行维护时,将需要添加的语法添加至策略链末端即可。在维护策略链时,在末尾拓展不会影响前侧的子解析器,且简单可靠。
接下来,对涉及数据库查询语言(后以SQL为例)的解析逻辑,如下所示:
图7示意性示出了根据本公开实施例的另一种程序解析方法的流程图。
如图7所示,该实施例的另一种程序解析方法包括操作S710~操作S720,该操作S710~操作S720至少可以部分执行上述操作S220。
根据本公开的实施例,所述解析器还包括:数据库解析器。
在操作S710中,在遍历所述第一程序的过程中,触发于游标关键字,调用所述数据库解析器。
具体的,游标关键字即Cursor,游标是数据库系统在内存中开设的一个数据缓存区,存放SQL语句的执行结果。在Cobol语言中,Cursor在可以临时定义在标识部,环境部,数据部以及过程部中。
在操作S720中,基于所述数据库解析器,提取并分别将游标名、表名以及数据库查询语法,分别存入所述程序文件、所述数据文件以及所述语法文件。
数据库解析器(如SQL解析器)与某个程序语言(例如,Cobol、Java等)相比,是独立存在的,也即在不同程序语言环境中,所使用的SQL是类似或一致的。该SQL解析器有多个具体SQL语句解析器组成,包括全部Cobol使用的SQL语法,如Declare、Fetch、Close等等。不同的SQL语句使用不同的解析器解析,分别记录cursor名、表名、SQL语法等信息。SQL解析的数据结构,不直接作为序列化文件存储,而是包含于程序解析器及语法解析器解析的结构中。
同样的,结合图10所示,该数据库解析器是按照策略链的形式实现的,并且,在进行语法匹配时,语法解析器的子语法解析器和数据库解析器可以放在同一个策略链上。
图11示意性示出了根据本公开实施例的在Cobol环境下的程序解析方法的流程图。
如图11所示,Cobol文件先由程序解析器解析,得到CobolProgram(程序文件),在之后,SQL解析器再进一步触发于游标解析相应的内容,将SQL解析器解析出的内容将分别传入CobolProgram、CobolFunction以及CobolReord中。语法解析器和数据结构解析器分别解析相应部中的内容,并将解析出的内容分别存入CobolFunction以及CobolRecord中。
至此,原程序的解析阶段结束,以下,将详细对程序的编码阶段进行详细揭示:
图8示意性示出了根据本公开实施例的程序编写方法的流程图。
如图8所示,该实施例的程序编写方法包括操作S810~操作S830,该操作S810~操作S830至少可以部分执行上述操作S230。
在操作S810中,对于所述程序文件,按照所述目标程序语言的命名规范,将所述程序文件中的程序关键字,转化为目标程序语言程序代码。
在操作S820中,对于所述数据文件,按照所述目标程序语言的数据结构转化规则,将所述数据文件中的数据变量,转化为目标程序语言数据代码。
在操作S830中,对于所述语法文件,按照所述目标程序语言的翻译规则,将所述语法文件中的语法,转化为目标程序语言语法代码。
编译的规则是从CobolProgram对象出发,还原整个Cobol程序的标识部(保存在CobolProgram)、环境部(保存在CobolRecord)、数据部(保存在CobolRecord)、过程部(保存在CobolFunction)的信息。
具体的,上述目标程序语言的命名规范、数据结构转化规则以及翻译规则是研发人员根据不同语言特性预先设定的,在例如将Cobol转化为PLSQL的场景中,不同文件的转化逻辑如下所示:
1.对于程序文件(如CobolProgram),从标识部提取程序名,根据目标程序语言(例如PLSQL)命名规范自动拼目标程序语言(PLSQL)程序名,如ABDAY001转化后自动转化为PCKG PBDB B 0000D ABDAY001。对于环境部定义的输入输出节,因受目标批量框架印象,实际保存信息未使用。
2.对于数据文件(如CobolRecord),提取以下数据:数据(1).文件节用于定义外部输入、输出文件结构;数据(2).工作存储节用于定义本程序中使用的变量;数据(3).连接节信息,用于程序间调用定义传输参数结构。对于数据(1),将文件节中BATCHNO(批量号)自动转化成PLSQL中PROCEDURE的传入参数;对于数据(2),将工作存储节的数据变量定义在PLSQL PACKAGE头中。对于数据层次从01到49和数据层次为77的变量:结构化变量定义成TYPE类型;单一层级变量定义成普通变量。对于CopyBook自动翻译成TYPE类型,在程序中直接引用;对于数据(3),将连接节的数据变量信息转化到接口主PROCEDURE中进行参数传递,原理与数据对数据(2)处理一致。
3.对于语法文件(如CobolFunction),将语法文件中的语法全部翻译到PLSQL的PACKAGE BODY中。对于CopyBook定义的过程,封装为PLSQL全局变量使用。
需要说明的是,若在原程序中,存在特殊语法的情况下,即原程序中的某些数据使用数据下挂结构,需要进行相应地处理,如下所示:
图9示意性示出了根据本公开实施例的数据下挂结构编写方法的流程图。
如图9所示,该实施例的数据下挂结构编写方法包括操作S910~操作S930,该操作S910~操作S930至少可以部分执行上述操作S820。
根据本公开的实施例,其中,所述数据文件中的数据变量包括数据下挂结构,所述数据变量至少包括第一数据变量,所述第一数据变量是数据下挂结构,所述数据下挂结构是采用不同层级的数据标识描述同一数据。
在操作S910中,对于所述第一数据变量;通过遍历所述第一程序,找出涉及所述第一数据变量的不同层级的数据标识。
在操作S920中,确定所述不同层级的数据标识中最低层级的数据标识。
在操作S930中,统一采用所述最低层级的数据标识以描述所述第一数据变量指向的数据。
举个例子,数据下挂结构:一种Cobol语言特有的数据结构,定义形式如下:
01A  PIC 9(17)VALUE 0.
02B1 PIC 9(9).
03C1 PIC 9(6).
03C2 PIC 9(3).
02B2 PIC 9(8).
其中,字段A与B1、B2存在联动关系,即A的修改会导致B1、B2的修改,B1、B2的修改也会同步到A字段的相应位置。同时可以存在多级的下挂,即B1与C1、C2同样存在联动关系。
换句话说,上述最上层级的“A”可以描述某个数据,通过第二层级的“B1”和“B2”也可描述同样的数据。在语句中同时出现“A”层级和“B”层级的情况下,采用“B”层级描述该数据。保证数据可访问的同时,还能保证数据的访问效率。
基于上述程序转方法,本公开还提供了一种程序语言转化装置。以下将结合图12对该装置进行详细描述。
图12示意性示出了根据本公开实施例的程序语言转化装置的结构框图。
如图12所示,该实施例的程序语言转化装置1200包括获取模块1210、解析模块1220和编译模块1230。
获取模块1210用于获取第一程序,所述第一程序是基于原程序语言编写的,所述第一程序语言包括多个部和数据库命令。在一实施例中,获取模块1210可以用于执行前文描述的操作S210,在此不再赘述。
解析模块1220用于基于预设的解析器,对所述第一程序中的多个部进行解析,得到多个解析文件。在一实施例中,解析模块1220可以用于执行前文描述的操作S220,在此不再赘述。
编译模块1230用于基于预设的编译规则,分别对所述多个解析文件进行编译,得到第二程序,所述第二程序是基于目标程序语言编写的。在一实施例中,编译模块1230可以用于执行前文描述的操作S230,在此不再赘述。
在本公开的实施例中,通过将原程序中的多个部和数据库命令解析为多个自研结构的解析文件,避免了现有技术中依赖抽象语法树的问题,保证了对原程序的全面解析,并且在进行程序转化时,无需构建完整的语法树,仅部分片段的程序代码也可以实现程序语言转化,增强了程序语言转化的效率和适应性。
根据本公开的实施例,其中,所述多个部至少包括:标识部、环境部、数据部以及过程部,所述预设的解析器至少包括:部解析器,所述部解析器包括:程序解析器、语法解析器以及数据结构解析器,所述解析模块,用于基于程序解析器对所述标识部进行解析,或者基于程序解析器对所述标识部和所述环境部进行解析,得到程序文件;基于所述数据结构解析器对所述数据部进行解析,得到数据文件;以及基于语法解析器对所述过程部进行解析,得到语法文件。
根据本公开的实施例,其中,所述解析模块,用于在遍历所述第一程序的过程中,触发于所述标识部的关键字和所述环境部的关键字,调用所述程序解析器;以及基于所述程序解析器,提取所述标识部和所述环境部中的程序关键字完成保存。
根据本公开的实施例,其中,所述解析模块,用于在遍历所述第一程序的过程中,触发于所述数据部的关键字,调用所述数据结构解析器;以及基于所述数据结构解析器,提取数据元素并保存。
根据本公开的实施例,其中,所述语法解析器是基于策略链的形式存在的,所述策略链包括多个子语法解析器,所述解析模块,用于在遍历所述第一程序的过程中,触发于所述过程部的关键字,依次调用所述策略链上的多个子语法解析器;以及在所述语法文件上的语法被所述多个子语法解析器中的任一子语法解析器识别的情况下,将识别到的语法提取并保存。
根据本公开的实施例,其中,在对所述策略链上新增所述子语法解析器的情况下,将新增的所述子语法解析器添加到所述策略链的尾端。
根据本公开的实施例,其中,所述解析器还包括:数据库解析器,所述解析模块,用于在遍历所述第一程序的过程中,触发于游标关键字,调用所述数据库解析器;以及基于所述数据库解析器,提取并分别将游标名、表名以及数据库查询语法,分别存入所述程序文件、所述数据文件以及所述语法文件。
根据本公开的实施例,其中,所述编译模块,用于对于所述程序文件,按照所述目标程序语言的命名规范,将所述程序文件中的程序关键字,转化为目标程序语言程序代码;对于所述数据文件,按照所述目标程序语言的数据结构转化规则,将所述数据文件中的数据变量,转化为目标程序语言数据代码;以及对于所述语法文件,按照所述目标程序语言的翻译规则,将所述语法文件中的语法,转化为目标程序语言语法代码。
根据本公开的实施例,其中,所述数据文件中的数据变量包括数据下挂结构,所述数据变量至少包括第一数据变量,所述第一数据变量是数据下挂结构,所述数据下挂结构是采用不同层级的数据标识描述同一数据,所述编译模块,用于对于所述第一数据变量;通过遍历所述第一程序,找出涉及所述第一数据变量的不同层级的数据标识;确定所述不同层级的数据标识中最低层级的数据标识;以及统一采用所述最低层级的数据标识以描述所述第一数据变量指向的数据。
根据本公开的实施例,获取模块1210、解析模块1220和编译模块1230中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,获取模块1210、解析模块1220和编译模块1230中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块1210、解析模块1220和编译模块1230中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图13示意性示出了根据本公开实施例的适于实现程序转化方法的电子设备的方框图。
如图13所示,根据本公开实施例的电子设备1300包括处理器1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(RAM)1303中的程序而执行各种适当的动作和处理。处理器1301例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器1301还可以包括用于缓存用途的板载存储器。处理器1301可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1303中,存储有电子设备1300操作所需的各种程序和数据。处理器1301、ROM 1302以及RAM 1303通过总线1304彼此相连。处理器1301通过执行ROM 1302和/或RAM1303中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1302和RAM 1303以外的一个或多个存储器中。处理器1301也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1300还可以包括输入/输出(I/O)接口1305,输入/输出(I/O)接口1305也连接至总线1304。电子设备1300还可以包括连接至I/O接口1305的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1 310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1302和/或RAM 1303和/或ROM 1302和RAM1303以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的方法。
在该计算机程序被处理器1301执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1309被下载和安装,和/或从可拆卸介质1311被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被处理器1301执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (14)

1.一种程序语言转化方法,包括:
获取第一程序,所述第一程序是基于原程序语言编写的,所述第一程序语言包括多个部和数据库命令;
基于预设的解析器,对所述第一程序中的多个部进行解析,得到多个解析文件;以及
基于预设的编译规则,分别对所述多个解析文件进行编译,得到第二程序,所述第二程序是基于目标程序语言编写的。
2.根据权利要求1所述的方法,其中,所述多个部至少包括:标识部、环境部、数据部以及过程部,所述预设的解析器至少包括:部解析器,所述部解析器包括:程序解析器、语法解析器以及数据结构解析器,
所述基于预设的解析器,对所述第一程序中的多个部进行解析,得到多个部解析文件,包括:
基于程序解析器对所述标识部进行解析,或者基于程序解析器对所述标识部和所述环境部进行解析,得到程序文件;
基于所述数据结构解析器对所述数据部进行解析,得到数据文件;以及
基于语法解析器对所述过程部进行解析,得到语法文件。
3.根据权利要求2所述的方法,其中,所述基于程序解析器对所述标识部进行解析,或者基于程序解析器对所述标识部和所述环境部进行解析,得到程序文件,包括:
在遍历所述第一程序的过程中,触发于所述标识部的关键字和所述环境部的关键字,调用所述程序解析器;以及
基于所述程序解析器,提取所述标识部和所述环境部中的程序关键字完成保存。
4.根据权利要求3所述的方法,其中,所述基于所述数据结构解析器对所述数据部进行解析,得到数据文件,包括:
在遍历所述第一程序的过程中,触发于所述数据部的关键字,调用所述数据结构解析器;以及
基于所述数据结构解析器,提取数据元素并保存。
5.根据权利要求4所述的方法,其中,所述语法解析器是基于策略链的形式存在的,所述策略链包括多个子语法解析器,
所述基于语法解析器对所述过程部进行解析,得到语法文件,包括:
在遍历所述第一程序的过程中,触发于所述过程部的关键字,依次调用所述策略链上的多个子语法解析器;以及
在所述语法文件上的语法被所述多个子语法解析器中的任一子语法解析器识别的情况下,将识别到的语法提取并保存。
6.根据权利要求5所述的方法,其中,在对所述策略链上新增所述子语法解析器的情况下,将新增的所述子语法解析器添加到所述策略链的尾端。
7.根据权利要求5所述的方法,其中,所述解析器还包括:数据库解析器,
所述基于预设的解析器,对所述第一程序中的多个部进行解析,得到多个解析文件,还包括:
在遍历所述第一程序的过程中,触发于游标关键字,调用所述数据库解析器;以及
基于所述数据库解析器,提取并分别将游标名、表名以及数据库查询语法,分别存入所述程序文件、所述数据文件以及所述语法文件。
8.根据权利要求5-7任一项所述的方法,其中,所述基于预设的编译规则,分别对所述多个解析文件进行编译,得到第二程序,所述第二程序是基于目标程序语言编写的,包括:
对于所述程序文件,按照所述目标程序语言的命名规范,将所述程序文件中的程序关键字,转化为目标程序语言程序代码;
对于所述数据文件,按照所述目标程序语言的数据结构转化规则,将所述数据文件中的数据变量,转化为目标程序语言数据代码;以及
对于所述语法文件,按照所述目标程序语言的翻译规则,将所述语法文件中的语法,转化为目标程序语言语法代码。
9.根据权利要求8所述的方法,其中,所述数据文件中的数据变量包括数据下挂结构,所述数据变量至少包括第一数据变量,所述第一数据变量是数据下挂结构,所述数据下挂结构是采用不同层级的数据标识描述同一数据,
所述对于所述数据文件,按照所述目标程序语言的数据结构转化规则,将所述数据文件中的数据变量,转化为目标程序语言数据文件,包括:
对于所述第一数据变量;通过遍历所述第一程序,找出涉及所述第一数据变量的不同层级的数据标识;
确定所述不同层级的数据标识中最低层级的数据标识;以及
统一采用所述最低层级的数据标识以描述所述第一数据变量指向的数据。
10.根据权利要求1、2、3、4、5、6、7和9任一项所述的方法,其中,所述多个解析文件是按照序列化形式存储的。
11.一种程序语言转化装置,包括:
获取模块,用于获取第一程序,所述第一程序是基于原程序语言编写的,所述第一程序语言包括多个部和数据库命令;
解析模块,用于基于预设的解析器,对所述第一程序中的多个部进行解析,得到多个解析文件;以及
编译模块,用于基于预设的编译规则,分别对所述多个解析文件进行编译,得到第二程序,所述第二程序是基于目标程序语言编写的。
12.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~10中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~10中任一项所述的方法。
14.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~10中任一项所述的方法。
CN202310201259.1A 2023-03-01 2023-03-01 程序语言转化方法、装置、设备、介质和程序产品 Pending CN116107588A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310201259.1A CN116107588A (zh) 2023-03-01 2023-03-01 程序语言转化方法、装置、设备、介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310201259.1A CN116107588A (zh) 2023-03-01 2023-03-01 程序语言转化方法、装置、设备、介质和程序产品

Publications (1)

Publication Number Publication Date
CN116107588A true CN116107588A (zh) 2023-05-12

Family

ID=86263845

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310201259.1A Pending CN116107588A (zh) 2023-03-01 2023-03-01 程序语言转化方法、装置、设备、介质和程序产品

Country Status (1)

Country Link
CN (1) CN116107588A (zh)

Similar Documents

Publication Publication Date Title
CN111708539B (zh) 一种应用程序代码转换方法、装置、电子设备和存储介质
US8959106B2 (en) Class loading using java data cartridges
US9086931B2 (en) System for translating diverse programming languages
US8447744B2 (en) Extensibility platform using data cartridges
US9965259B2 (en) System for translating diverse programming languages
US9460198B1 (en) Process for serializing and deserializing data described by a schema
US20130159981A1 (en) Extension mechanism for scripting language compiler
CN107861728B (zh) 用于传统程序语言向现代程序语言转换的方法及其系统
US20030188293A1 (en) Method, system, and program for translating a class schema in a source language to a target language
US20040015834A1 (en) Method and apparatus for generating serialization code for representing a model in different type systems
KR20040007545A (ko) 소프트웨어 객체와 구조화 언어 요소 기반 문서간의 매핑시스템 및 방법
JP2005018777A (ja) 共通問い合わせ実行時システムおよびアプリケーションプログラミングインターフェイス
US20070050707A1 (en) Enablement of multiple schema management and versioning for application-specific xml parsers
CN111324619B (zh) 微服务系统中的对象更新方法、装置、设备和存储介质
US20150074633A1 (en) Systems and methods for generating, linking, and presenting computer code representations from diverse sources
CN110109983B (zh) 一种操作Redis数据库的方法和装置
CN108664546B (zh) Xml数据结构转换方法和装置
CN115016793A (zh) 基于语法树的代码生成方法和装置、电子设备、存储介质
CN114035805A (zh) 用于预编译器的代码转换方法、装置、介质及设备
CN116841559A (zh) 代码转换方法、装置、设备、介质和程序产品
CN111177089A (zh) 日志处理代码的生成方法和装置、计算机系统和存储介质
CN113138767B (zh) 代码语言转换方法、装置、电子设备及存储介质
CN111831288B (zh) 一种自动生成Thrift IDL数据结构及自动转换函数的方法及系统
US20070050706A1 (en) Method of xml transformation and presentation utilizing an application-specific parser
WO2021259290A1 (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