CN117407002A - 代码转换方法、装置、计算机设备和存储介质 - Google Patents
代码转换方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN117407002A CN117407002A CN202311609647.XA CN202311609647A CN117407002A CN 117407002 A CN117407002 A CN 117407002A CN 202311609647 A CN202311609647 A CN 202311609647A CN 117407002 A CN117407002 A CN 117407002A
- Authority
- CN
- China
- Prior art keywords
- code
- type
- code type
- statement
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 146
- 238000013507 mapping Methods 0.000 claims abstract description 94
- 230000008569 process Effects 0.000 claims abstract description 81
- 238000006243 chemical reaction Methods 0.000 claims abstract description 35
- 238000004590 computer program Methods 0.000 claims description 25
- 230000014509 gene expression Effects 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 230000011218 segmentation Effects 0.000 description 5
- 230000001502 supplementing effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 208000036758 Postinfectious cerebellitis Diseases 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请涉及代码转换方法、装置、计算机设备和存储介质,涉及计算机技术领域。可用于金融科技领域或其他相关领域。所述方法包括:基于词法解析器和语法解析器,对第一代码类型的目标代码进行解析,确定第一代码类型语法树;对第一代码类型语法树包含的数据部进行转换,得到变量键值对;通过第一代码类型语法树的过程部主入口,确定目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定目标代码的语句列表对应的第二代码类型语法树;基于变量类型的映射关系以及变量键值对,对第二代码类型语法树包含的变量进行转换,得到目标代码对应的第二代码类型的代码文件。采用本方法能够提升代码转换的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种代码转换方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,企业的主机架构需要向平台转型,因此在主机上运行的批量程序需要迁移至平台运行。由于在主机上运行的批量程序是由Cobol语言编写,迁移至平台时,需要将对应的Cobol程序改写成适配平台批量框架的Java程序。
现有技术中,主要是通过个人先研读原有Cobol代码,再按照平台批量框架的特点将原有Cobol代码手工改写成Java代码。在待转换的Cobol批量程序较多的情况下,通过人工将Cobol代码转换Java代码会导致代码转换的效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种代码转换方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种代码转换方法。所述方法包括:
基于第一代码类型对应的词法解析器和语法解析器,对所述第一代码类型的目标代码进行解析,确定所述目标代码对应的第一代码类型语法树;
对所述第一代码类型语法树包含的数据部进行转换,得到所述目标代码对应的变量键值对;
通过所述第一代码类型语法树的过程部主入口,确定所述目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定所述目标代码的语句列表对应的第二代码类型语法树;
基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件。
在其中一个实施例中,所述第一代码类型为COBOL,所述第二代码类型为Java;所述通过所述第一代码类型语法树的过程部主入口,确定所述目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定所述目标代码的语句列表对应的第二代码类型语法树,包括:
对COBOL语法树的过程部列表进行遍历,确定所述COBOL语法树的过程部主入口,以及所述COBOL对应的目标代码的数据操作类型;
根据所述过程部主入口,确定所述目标代码的语句列表,以及基于所述数据操作类型,确定所述目标代码对应的初始Java语法树;
基于COBOL语句与Java语句的映射关系,对所述目标代码的语句列表进行转换,得到Java语句列表,基于所述Java语句列表和所述初始Java语法树,得到所述目标代码的语句列表对应的目标Java语法树。
在其中一个实施例中,所述基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件,包括:
基于所述第一代码类型的变量类型与第二代码类型的变量类型的映射关系,将所述目标代码对应的变量键值对转换为所述第二代码类型对应的变量键值对;
基于所述第二代码类型对应的变量键值对和所述第二代码类型语法树,生成所述目标代码对应的第二代码类型的代码文件。
在其中一个实施例中,所述通过所述第一代码类型语法树的过程部主入口,确定所述目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定所述目标代码的语句列表对应的第二代码类型语法树的步骤之前,所述方法还包括:
根据预设的关键字判断规则,确定所述第一代码类型语法树中包含的各数据库语句对应的语句类型,并基于所述语句类型,生成各数据库语句对应的初始元数据信息;
针对每一数据库语句,根据所述数据库语句的语句类型对应的元数据更新规则,对所述数据库语句对应的初始元数据信息进行更新,得到所述数据库语句对应的目标元数据信息;
通过各所述数据库语句的目标元数据信息,生成SQL执行语句。
在其中一个实施例中,所述语句类型为查询语句类型;所述根据所述数据库语句的语句类型对应的元数据更新规则,对所述数据库语句对应的初始元数据信息进行更新,得到所述数据库语句对应的目标元数据信息,包括:
在所述数据库语句是所述查询语句类型的情况下,通过解析所述数据库语句,获取所述查询语句类型对应的查询条件,以及所述数据库语句的字段名列表;
将所述查询条件、所述字段名列表对所述初始元数据信息进行更新,得到所述查询语句类型的数据库语句对应的目标元数据信息。
在其中一个实施例中,所述针对每一数据库语句,根据所述数据库语句的语句类型对应的元数据更新规则,对所述数据库语句对应的初始元数据信息进行更新,得到所述数据库语句对应的目标元数据信息之后,所述方法还包括:
根据各所述数据库语句对应的目标元数据信息,生成第二代码类型的语句对应的XML配置文件,所述XML配置文件用于调用所述第二代码类型的代码文件的数据库。
在其中一个实施例中,所述基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件的步骤之后,所述方法还包括:
在所述第二代码类型的代码文件对应的数据库中,获取所述第二代码类型的代码文件对应的平台表结构信息;
基于预设的主机表与平台表的字段名映射关系,以及所述平台表结构信息,确定所述第二代码类型的代码文件对应的实体类文件,所述实体类文件用于创建所述第二代码类型的代码文件对应的实体对象。
在其中一个实施例中,所述基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件的步骤之后,所述方法还包括:
在所述第一代码类型的目标代码对应的数据部中,获取所述第一代码类型的目标代码对应的文件结构信息;
基于所述文件结构信息,确定所述第二代码类型的代码文件对应的实体类文件,所述实体类文件用于创建所述第二代码类型的代码文件对应的实体对象。
在其中一个实施例中,所述基于第一代码类型对应的词法解析器和语法解析器,对所述第一代码类型的目标代码进行解析,确定所述目标代码对应的第一代码类型语法树之前,所述方法还包括:
根据所述第一代码类型的语法规则,获取所述第一代码类型的目标代码中各类型代码语句对应的关键字;
基于所述各类型代码语句对应的关键字以及所述关键字对应的正则表达式,确定所述第一代码类型对应的语法规则文件;
根据所述第一代码类型对应的语法规则文件以及预设的生成器工具,确定所述第一代码类型对应的词法解析器和语法解析器。
在其中一个实施例中,所述基于第一代码类型对应的词法解析器和语法解析器,对所述第一代码类型的目标代码进行解析,确定所述目标代码对应的第一代码类型语法树,包括:
通过所述词法解析器,确定所述目标代码包含的每一行代码的词标记信息;
基于所述目标代码包含的每一行代码的词标记信息以及所述语法解析器,确定所述目标代码对应的第一代码类型语法树。
第二方面,本申请还提供了一种代码转换装置。所述装置包括:
第一代码类型语法树确定模块,用于基于第一代码类型对应的词法解析器和语法解析器,对所述第一代码类型的目标代码进行解析,确定所述目标代码对应的第一代码类型语法树;
变量键值对确定模块,用于对所述第一代码类型语法树包含的数据部进行转换,得到所述目标代码对应的变量键值对;
第二代码类型语法树确定模块,用于通过所述第一代码类型语法树的过程部主入口,确定所述目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定所述目标代码的语句列表对应的第二代码类型语法树;
代码转换模块,用于基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件。
在其中一个实施例中,所述第二代码类型语法树确定模块,具体用于:
对COBOL语法树的过程部列表进行遍历,确定所述COBOL语法树的过程部主入口,以及所述COBOL对应的目标代码的数据操作类型;
根据所述过程部主入口,确定所述目标代码的语句列表,以及基于所述数据操作类型,确定所述目标代码对应的初始Java语法树;
基于COBOL语句与Java语句的映射关系,对所述目标代码的语句列表进行转换,得到Java语句列表,基于所述Java语句列表和所述初始Java语法树,得到所述目标代码的语句列表对应的目标Java语法树。
在其中一个实施例中,所述代码转换模块,具体用于:
基于所述第一代码类型的变量类型与第二代码类型的变量类型的映射关系,将所述目标代码对应的变量键值对转换为所述第二代码类型对应的变量键值对;
基于所述第二代码类型对应的变量键值对和所述第二代码类型语法树,生成所述目标代码对应的第二代码类型的代码文件。
在其中一个实施例中,所述装置还包括SQL执行语句生成模块,具体用于:
根据预设的关键字判断规则,确定所述第一代码类型语法树中包含的各数据库语句对应的语句类型,并基于所述语句类型,生成各数据库语句对应的初始元数据信息;
针对每一数据库语句,根据所述数据库语句的语句类型对应的元数据更新规则,对所述数据库语句对应的初始元数据信息进行更新,得到所述数据库语句对应的目标元数据信息;
通过各所述数据库语句的目标元数据信息,生成SQL执行语句。
在其中一个实施例中,所述SQL执行语句生成模块,具体还用于:
在所述数据库语句是所述查询语句类型的情况下,通过解析所述数据库语句,获取所述查询语句类型对应的查询条件,以及所述数据库语句的字段名列表;
将所述查询条件、所述字段名列表对所述初始元数据信息进行更新,得到所述查询语句类型的数据库语句对应的目标元数据信息。
在其中一个实施例中,所述装置还包括XML配置文件生成模块,具体用于:
根据各所述数据库语句对应的目标元数据信息,生成第二代码类型的语句对应的XML配置文件,所述XML配置文件用于调用所述第二代码类型的代码文件的数据库。
在其中一个实施例中,所述装置还包括第一实体类文件确定模块,具体用于:
在所述第二代码类型的代码文件对应的数据库中,获取所述第二代码类型的代码文件对应的平台表结构信息;
基于预设的主机表与平台表的字段名映射关系,以及所述平台表结构信息,确定所述第二代码类型的代码文件对应的实体类文件,所述实体类文件用于创建所述第二代码类型的代码文件对应的实体对象。
在其中一个实施例中,所述装置还包括第二实体类文件确定模块,具体用于:
在所述第一代码类型的目标代码对应的数据部中,获取所述第一代码类型的目标代码对应的文件结构信息;
基于所述文件结构信息,确定所述第二代码类型的代码文件对应的实体类文件,所述实体类文件用于创建所述第二代码类型的代码文件对应的实体对象。
在其中一个实施例中,所述装置还包括解析器确定模块,具体用于:
根据所述第一代码类型的语法规则,获取所述第一代码类型的目标代码中各类型代码语句对应的关键字;
基于所述各类型代码语句对应的关键字以及所述关键字对应的正则表达式,确定所述第一代码类型对应的语法规则文件;
根据所述第一代码类型对应的语法规则文件以及预设的生成器工具,确定所述第一代码类型对应的词法解析器和语法解析器。
在其中一个实施例中,所述第一代码类型语法树确定模块,具体用于:
通过所述词法解析器,确定所述目标代码包含的每一行代码的词标记信息;
基于所述目标代码包含的每一行代码的词标记信息以及所述语法解析器,确定所述目标代码对应的第一代码类型语法树。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述方法的步骤。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如第一方面所述方法的步骤。
上述代码转换方法、装置、计算机设备、存储介质和计算机程序产品,通过以下技术手段,基于第一代码类型对应的词法解析器和语法解析器,对所述第一代码类型的目标代码进行解析,确定所述目标代码对应的第一代码类型语法树;对所述第一代码类型语法树包含的数据部进行转换,得到所述目标代码对应的变量键值对;通过所述第一代码类型语法树的过程部主入口,确定所述目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定所述目标代码的语句列表对应的第二代码类型语法树;基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件。
可知,服务器可以通过第一代码类型的词法解析器和语法解析器,解析第一代码类型的目标代码,从而生成目标代码对应的第一代码类型语法树。基于此,服务器从第一代码类型语法树中获取变量键值对,此时,第一代码类型语法树可以表示目标代码中的语法结构,变量键值对可以表示目标代码中的变量名称和变量属性。相应的,从第一代码类型语法树的过程部主入口开始,遍历目标代码的语句列表,并根据第一代码类型语句与第二代码类型语句的映射关系,依次将语句列表映射成对应的第二代码类型的语法树。此时,目标代码对应的第一代码类型语法树已经转换为第二代码类型的语法树,基于此,再基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系,将变量键值对转换为第二代码类型对应的变量名称及变量属性,由此可以得到转换后的第二代码类型的代码文件,由于每个目标代码都可以通过该方法转化为其他类型的代码,因此该方法能够提升第一代码类型的目标代码转换为第二代码类型的代码的效率。
附图说明
图1为一个实施例中代码转换方法的应用环境图;
图2为一个实施例中代码转换方法的流程示意图;
图3为一个实施例中确定第二代码类型语法树的步骤的流程示意图;
图4为一个实施例中确定第二代码类型的代码文件步骤的流程示意图;
图5为一个实施例中生成SQL执行语句的步骤的流程示意图;
图6为一个实施例中确定目标元数据信息的步骤的流程示意图;
图7为一个实施例中确定实体类文件的步骤的流程示意图;
图8为另一个实施例中确定实体类文件的步骤的流程示意图;
图9为一个实施例中确定解析器的步骤的流程示意图;
图10为一个实施例中确定第一代码类型语法树的步骤的流程示意图;
图11为一个实施例中代码转换装置的流程示意图;
图12为一个实施例中第一代码类型的结构示意图;
图13为另一个实施例中代码转换装置的结构框图;
图14为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的代码转换方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信,终端102可以配置待转换的目标代码的文件路径,以及转换后的代码对应的输出路径和编码信息,服务器104可以从数据存储系统、终端102中获取所需的数据,并将数据进行转换处理,得到转换后的代码文件。数据存储系统可以存储服务器104需要处理的数据,例如已构建的第一代码类型对应的词法解析器和语法解析器的代码文件,以及第一代码类型的变量类型与第二代码类型的变量类型的映射关系对应的文本。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机和平板电脑。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种代码转换方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S202,基于第一代码类型对应的词法解析器和语法解析器,对第一代码类型的目标代码进行解析,确定目标代码对应的第一代码类型语法树。
其中,词法解析器用于解析目标代码中的每个词,得到目标代码的分词结果。语法解析器用于解析目标代码的语句,将多个语句转换为具有逻辑连接的树形结构。第一代码类型是待转换的目标代码的代码类型,每一种计算机语言可以表示一种代码类型,例如第一代码类型可以是C语言、Java、C++、Python等语言类型;第二代码类型可以包括C语言、Java、C++、Python等语言类型,且第二代码类型与第一代码类型不同。目标代码是第一代码类型的计算机语言构成的代码文件,代码文件中包含多行代码语句,目标代码是待转换的代码。第一代码类型语法树是目标代码的代码结构,代码结构可以包含目标代码的执行逻辑,并且代码结构可以以树结构表示。
具体地,服务器根据第一代码类型的语法结构,预先建立第一代码类型对应的词法解析器和语法解析器。服务器可以将待转换的目标代码输入至预先建立的词法解析器和语法解析器,以使词法解析器和语法解析器对目标代码进行解析,得到解析后的分词结果以及树形结构。服务器对词法解析器和语法解析器解析后的分词结果以及树形结构进行合并,得到目标代码对应的第一代码类型语法树,此时,第一代码类型语法树存储了目标代码的语法结构信息、执行语句信息和变量信息等。
在一个示例中,第一代码类型可以是COBOL,COBOL类型的代码文件可以包括标识部、环境部、数据部和过程部,并且每个部可以包括节、段、语句对应的语法结构,标识部通过唯一标识符,使服务器识别COBOL代码,环境部用于指定程序的输入和输出文件,数据部用于定义COBOL代码中变量,过程部中包含COBOL代码的多个执行语句。
在另一个示例中,在解析第一代码类型的目标代码之前,可以通过第一代码类型对应的语法规则文件以及预设的解析器生成工具,生成第一代码类型对应的词法解析器和语法解析器。服务器可以通过第一代码类型语法树确定该第一代码类型语法树对应的代码文件,也可以通过该第一代码类型语法树对应的代码文件确定第一代码类型语法树。
步骤S204,对第一代码类型语法树包含的数据部进行转换,得到目标代码对应的变量键值对。
其中,数据部用于定义目标代码中使用的变量,数据部中存储有目标代码所需的全部变量。变量键值对是目标代码中各变量的变量名和各变量名对应的变量属性,第一代码类型语法树包含的数据部是基于目标代码包含的数据部确定的。
具体地,服务器可以从第一代码类型语法树包含的数据部中获取全部变量的变量键值对。服务器可以解析第一代码语法树的数据部,确定数据部中定义的所有变量,并将变量转换为变量名为键,变量类型和长度为值的变量键值对。
在一个示例中,服务器可以解析第一代码语法树的数据部,确定数据部中定义的变量,并将变量转换为变量名为键,变量类型和长度为值的变量键值对,例如,变量键值对中,键为“姓名”,第一个值对应的变量类型为“string”,第二个值对应的长度为“16”。
步骤S206,通过第一代码类型语法树的过程部主入口,确定目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定目标代码的语句列表对应的第二代码类型语法树。
其中,过程部主入口是过程部列表中的具有程序入口的过程部,所述过程部主入口用于对过程部列表包含的过程部对应的语句进行遍历,并确定第一代码类型语法树中的语句列表。若目标代码需要调用过程部列表中的其他语句,过程部主入口会通过过程部主入口的逻辑控制语句,将过程部列表中所有语句串联起来,得到最终的语句列表。也就是说,过程部主入口是第一代码类型语法树的程序入口,通过过程部主入口可以按语句列表的排列顺序遍历第一代码类型语法树中的全部语句。第一代码类型语句与第二代码类型语句是不同类型的计算机语言对应的语句,服务器可以基于第一代码类型语句与第二代码类型语句的映射关系将两个代码类型语句进行关联,从而得到两个代码类型语句对应的转换逻辑。
具体地,由于第一代码类型的目标代码中可以包含过程部,过程部包含目标代码的多个执行语句,基于此,第一代码类型语法树中也包含过程部,服务器可以根据过程部的过程部主入口确定过程部包含的多个执行语句。服务器在过程部中确定过程部主入口,并基于过程部主入口,确定该第一代码类型语法树中的可以被计算机执行的语句列表。由于第一代码类型语句与第二代码类型语句的映射关系能够将第一代码语句转换为第二代码语句,因此,服务器可以通过该映射关系转换语句列表的全部语句,从而将语句列表转化为第二代码类型语法树对应的语句列表,从而得到第二代码类型语法树。
在一个示例中,第一代码类型语句可以是COBOL类型的语句,第二代码类型语句可以是Java类型的语句,在此基础上,两者都可以有赋值语句、条件语句、调用语句、写文件语句、读文件语句,两者的语句都具有各自的语法结构。例如,COBOL的赋值语句可以是MOVE语句,而Java的赋值语句可以是“=”符号。服务器可以通过COBOL语句与Java语句的映射关系,将COBOL的赋值语句转换为Java的赋值语句。
可选地,第一代码类型语句与第二代码类型语句的映射关系可以是通过经验预先设置的两个代码类型语句之间的映射关系。
步骤S208,基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及变量键值对,对第二代码类型语法树包含的变量进行转换,得到目标代码对应的第二代码类型的代码文件。
其中,第一代码类型的变量类型是目标代码的数据部中的变量对应的类型,第二代码类型的变量类型是将第一代码类型的变量类型转换后的变量类型。基于此,第一代码类型的变量类型与第二代码类型的变量类型的映射关系能够将第一代码类型语法树中的变量转化为第二代码类型语法树对应的变量。目标代码对应的第二代码类型的代码文件是目标代码转换后的代码类型所对应的代码文件。在一个示例中,服务器将一份COBOL代码文件,转换为对应的Java代码文件,COBOL代码文件则为目标代码对应的文件,Java代码文件则为第二代码类型的代码文件。
具体地,服务器可以从数据库中获取预先存储的第一代码类型的变量类型与第二代码类型的变量类型的映射关系,服务器可以获取服务器生成的目标代码对应的变量键值对。根据该第一代码类型的变量类型与第二代码类型的变量类型的映射关系,将目标代码对应的变量键值对转换为第二代码类型的变量类型对应的变量键值对,并将第二代码类型的变量类型对应的变量键值对与第二代码类型语法树合并,得到转换后的目标代码对应的第二代码类型的代码文件。
在一个示例中,第一代码类型的变量类型可以是COBOL的变量类型,第二代码类型的变量类型可以是Java的变量类型,在此基础上,COBOL的变量类型可以由PIC9、PICS、PICX表示变量的类型,Java的变量类型可以由long、int、short、String表示变量的类型,相应地,第一代码类型的变量类型与第二代码类型的变量类型的映射关系可以是PIC9与long、int、short的映射关系,以及PICX与String的映射关系。
上述代码转换方法,通过第一代码类型的词法解析器和语法解析器,解析第一代码类型的目标代码,生成目标代码对应的第一代码类型语法树,可使服务器从第一代码类型语法树中获取变量键值对,此时,第一代码类型语法树可以表示目标代码中的语法结构,变量键值对可以表示目标代码中的变量名和变量属性。相应的,从第一代码类型语法树的过程部主入口开始,遍历目标代码的语句列表,并根据第一代码类型语句与第二代码类型语句的映射关系,依次将语句列表映射成对应的第二代码类型的语法树,基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系,将变量键值对转换为第二代码类型对应的变量名及变量属性,得到转换后的第二代码类型的代码文件。
通过采用本方法,能够实现不同代码类型文件间的自动化转换,可以在保证准确率的情况下,保证转换的稳定性,并且提升不同代码类型间的代码的转换效率。
在一个实施例中,第一代码类型为COBOL,第二代码类型为Java,如图3所示,步骤“通过第一代码类型语法树的过程部主入口,确定目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定目标代码的语句列表对应的第二代码类型语法树”的具体实现过程,包括:
步骤S302,对COBOL语法树的过程部列表进行遍历,确定COBOL语法树的过程部主入口,以及COBOL对应的目标代码的数据操作类型。
其中,由于第一代码类型为COBOL,第二代码类型为Java,因此,第一代码类型语法树是COBOL语法树、第二代码类型语法树是Java语法树。COBOL对应的目标代码的数据操作类型可以包括读表操作类型、读文件操作类型,读表操作类型表示服务器根据目标代码对平台表中的数据进行读写操作,读文件操作类型标识服务器根据目标代码对文件中的数据进行读写操作。
具体地,服务器遍历COBOL语法树中的过程部列表,根据预设的主入口查询规则,确定过程部主入口。同时,在服务器遍历COBOL语法树中的过程部列表的过程中,通过预设的关键词确定目标代码的数据操作类型。
在一个示例中,服务器遍历COBOL语法树中的过程部列表,若过程部列表的语句中包含READ语句,则确定目标代码是读文件操作类型,并确定包含READ语句的过程部的段为主入口,停止后续段的遍历;若过程部列表的语句中包含FETCH语句,则确定目标代码是读表操作类型,并确定包含FETCH语句的过程部的段为主入口,停止后续段的遍历。
步骤S304,根据过程部主入口,确定目标代码的语句列表,以及基于数据操作类型,确定目标代码对应的初始Java语法树。
其中,初始Java语法树可以是读文件操作类型对应的语法树,也可以是读表操作类型对应的语法树,基于此,对于读文件操作类型,Java代码继承的是读文件操作类型的基类,该基类中封装了读文件的基本操作,由此可以作为读文件操作类型对应的语法树。对于读表操作类型,Java代码继承的是读表操作类型的基类,该基类中封装了读表的基本操作,由此可以作为读表操作类型对应的语法树。
具体地,服务器可以根据过程部主入口,进入COBOL语法树,得到COBOL语法树对应的语句列表。并服务器在确定具体的数据操作类型后,可以生成该数据操作类型对应的初始Java语法树。若服务器确定目标代码是读文件操作类型,则初始化读文件操作类型的Java语法树;若服务器确定目标代码是读表操作类型,则初始化读表操作类型的Java语法树。
步骤S306,基于COBOL语句与Java语句的映射关系,对目标代码的语句列表进行转换,得到Java语句列表,基于Java语句列表和初始Java语法树,得到目标代码的语句列表对应的目标Java语法树。
其中,COBOL语句与Java语句是不同类型的的计算机语言对应的具体语句,服务器可以通过COBOL语句与Java语句的映射关系将两个代码类型语句进行关联,从而得到两个代码类型语句对应的转换逻辑。Java语句列表是转换后的目标代码的语句列表对应的语句列表。
具体地,服务器从数据库中获取预设的COBOL语句与Java语句的映射关系,并基于该映射关系遍历目标代码的语句列表,并将目标代码的语句列表转换为Java语句列表。并将Java语句列表合并到初始Java语法树,得到转换完成的目标Java语法树。
本实施例中,通过COBOL语法树的过程部主入口,确定目标代码的初始Java语法树和目标代码的语句列表,并基于COBOL语句与Java语句的映射关系得到Java语句列表,从而将Java语句列表合并至初始Java语法树,得到转换后的目标Java语法树,能够快速地将COBOL语法树转换为目标Java语法树。
在一个实施例中,如图4所示,步骤“基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及变量键值对,对第二代码类型语法树包含的变量进行转换,得到目标代码对应的第二代码类型的代码文件”的具体实现过程,包括:
步骤S402,基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系,将目标代码对应的变量键值对转换为第二代码类型对应的变量键值对。
具体地,服务器可以从数据库中获取预先存储的第一代码类型的变量类型与第二代码类型的变量类型的映射关系,以及获取服务器生成的目标代码对应的变量键值对。服务器根据该第一代码类型的变量类型与第二代码类型的变量类型的映射关系,将目标代码对应的变量键值对转换为第二代码类型的变量类型对应的变量键值对。
步骤S404,基于第二代码类型对应的变量键值对和第二代码类型语法树,生成目标代码对应的第二代码类型的代码文件。
具体地,服务器将第二代码类型的变量类型对应的变量键值对存储至第二代码类型语法树中,并根据存储变量键值对后的第二代码类型语法树的语法结构,还原第二代码类型对应的代码语句,并将代码语句存储至第二代码类型的代码文件中。
在一个示例中,根据COBOL变量类型与Java变量类型的映射表,遍历COBOL变量类型对应的变量键值对,将COBOL变量类型对应的变量键值对转换为Java变量类型对应的变量键值对。
本实施例中,通过第一代码类型的变量类型与第二代码类型的变量类型的映射关系,确定第二代码类型对应的变量键值对,并将第二代码类型对应的变量键值对合并至第二代码类型语法树,得到第二代码类型的代码文件,能够达到将第一代码类型语法树转换为第二代码类型的代码文件的效果。
在一个实施例中,如图5所示,步骤“通过第一代码类型语法树的过程部主入口,确定目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定目标代码的语句列表对应的第二代码类型语法树”之后,代码转换方法的具体实现过程,还包括:
步骤S502,根据预设的关键字判断规则,确定第一代码类型语法树中包含的各数据库语句对应的语句类型,并基于语句类型,生成各数据库语句对应的初始元数据信息。
其中,第一代码类型语法树可以包含多个数据库语句,数据库语句是用于干对数据库进行操作的命令语句,通过数据库可以执行数据库语句,从而得到数据语句对应的执行结果。数据库语句可以包含多种语句类型,每种语句类型用于对数据库进行同一类型的操作,语句类型可以包括查询语句、新增语句、更新语句和删除语句。关键字判断规则通过关键词判定数据库语句的语句类型。初始元数据信息是各语句类型分别对应的原始元数据信息,同一语句类型的数据库语句对应的初始元数据信息相同。
具体地,服务器获取数据库中存储的关键字判断规则,并基于关键字判断规则,遍历第一代码类型语法树中的数据库语句,确定每个数据库语句的语句类型,并根据预设的语句类型对应的初始元数据信息生成规则,生成初始的元数据信息,每一种语句类型对应一种初始元数据信息生成规则。
在一个示例中,在第一代码类型语法树是COBOL语法树,第二代码类型语法树是Java语法树的情况下,服务器可以遍历COBOL语法树中的EXEC SQL语句,确定该EXEC SQL语句是SELECT语句、INSERT语句、UPDATE语句或DELETE语句的哪一种语句类型,并根据该语句类型确定初始元数据信息,初始元数据信息可以包括“语句类型”字段、“表名”字段和“语句ID”字段。
步骤S504,针对每一数据库语句,根据数据库语句的语句类型对应的元数据更新规则,对数据库语句对应的初始元数据信息进行更新,得到数据库语句对应的目标元数据信息。
其中,元数据更新规则可以根据数据库语句的语句类型,更新该数据库语句对应的元数据信息。
具体地,服务器遍历第一代码类型语法树的每一句数据库语句,并基于该数据库语句的语句类型,选取不同的元数据更新规则,根据该语句类型对应的元数据更新规则,从该数据库语句中解析得到该语句类型对应的字段名列表,并将字段名列表更新至初始元数据信息,最后得到该数据库语句对应的目标元数据信息。
在一个示例中,服务器可以将语句类型对应的字段名列表作为新的字段,添加至初始元数据信息中,得到目标元数据信息;在另一个示例中,服务器可以使用语句类型对应的字段名列表替换初始元数据信息对应的字段名列表,得到目标元数据信息。
步骤S506,通过各数据库语句的目标元数据信息,生成SQL执行语句。
具体地,目标元数据信息是第二代码类型的数据库可以调用的数据信息,基于此,服务器可以将数据库语句的目标源数据信息转换为第二代码类型的数据库能够执行的SQL执行语句,以使第二代码类型的代码文件在调用数据库时,可以通过SQL执行语句直接调用数据库。
可选地,在服务器生成各数据库语句对应的目标元数据信息之后,可以将数据库语句与目标元数据信息的对应关系,作为第一代码类型语句与第二代码类型语句的映射关系,以使将第一代码类型语法树转换为第二代码类型语法树,其中,第二代码类型语法树汇总包含各数据库语句对应的目标元数据信息。
本实施例中,通过解析第一代码类型语法树中包含的数据库语句,得到该数据库的语句类型,并生成该语句类型对应的初始元数据信息,并基于数据库语句的内容,将初始元数据信息更新得到第二代码类型的数据库能够直接执行的SQL执行语句,能够达到快速转换代码中的数据库语句,得到转换后的SQL执行语句的效果。
在一个实施例中,语句类型为查询语句类型,如图6所示,步骤“根据数据库语句的语句类型对应的元数据更新规则,对数据库语句对应的初始元数据信息进行更新,得到数据库语句对应的目标元数据信息”的具体实现过程,包括:
步骤S602,在数据库语句是查询语句类型的情况下,通过解析数据库语句,获取查询语句类型对应的查询条件,以及数据库语句的字段名列表。
其中,查询语句是用于查询数据库中某个数据,查询语句中需要表明所查询的字段名列表以及查询条件,基于字段名列表和查询条件,能够在整个数据库中得到符合查询条件的、以及该字段名列表包含的各个字段的数据。
具体地,服务器确定该数据库语句的语句类型,若确定该数据库语句的语句类型是查询语句类型,则解析该查询语句,获取查询语句中包含的字段名列表以及查询条件。
步骤S604,将查询条件、字段名列表对初始元数据信息进行更新,得到查询语句类型的数据库语句对应的目标元数据信息。
具体地,服务器将从查询语句中解析得到的查询条件和字段名列表添加至初始元数据信息,得到该数据库语句对应的目标元数据信息。
可选地,服务器确定各数据库语句的语句类型,若确定该数据库语句的语句类型为新增语句,则解析该新增语句,获取新增语句中包含的字段名列表,并将该字段名列表更新至该数据库语句对应的初始元数据信息中。若确定该数据库语句的语句类型为更新语句,则解析该更新语句,获取更新语句中包含的字段名列表以及更新条件,并将该字段名列表和更新条件更新至该数据库语句对应的初始元数据信息中。若确定该数据库语句的语句类型为删除语句,则解析该删除语句,获取更新语句中包含的删除条件,并将该删除条件更新至该数据库语句对应的初始元数据信息中。
本实施例中,通过解析第一代码类型语法树中包含的数据库语句,得到查询语句类型对应的查询条件,以及字段名列表,并将字段名列表更新至初始元数据信息中,能够得到该查询语句类型的数据库语句对应的目标元数据信息。
在一个实施例中,步骤“针对每一数据库语句,根据数据库语句的语句类型对应的元数据更新规则,对数据库语句对应的初始元数据信息进行更新,得到数据库语句对应的目标元数据信息”之后,代码转换方法的具体实现过程,还包括:
根据各数据库语句对应的目标元数据信息,生成第二代码类型的语句对应的可扩展标记语言XML(Extensible Markup Language)配置文件。
其中,XML配置文件用于调用第二代码类型的代码文件的数据库。
具体地,目标元数据信息是可以被第二代码类型的语句直接调用的,基于此,服务器可以选择将目标元数据信息映射为第二代码类型的语句可以使用的XML配置文件,当第二代码类型的代码文件在执行代码时,可以调用XML配置文件来调用第二代码类型的数据库中存放的数据。
在一个示例中,服务器可以基于第二代码类型的数据库类型,从第二代码类型的数据库语句中,解析获取第二代码类型对应的目标元数据信息,并根据每个目标元数据信息生成对应的XML配置项,例如,SELECT语句对于select标签、INSERT语句对应insert标签、UPDATE语句对应update标签、DELETE语句对应delete标签。
本实施例中,通过根据各数据库语句对应的目标元数据信息,生成第二代码类型的语句对应的XML配置文件,能够将目标代码中的数据库语句,转换为第二代码类型的语句能够直接调用的XML配置文件,从而使第二代码类型的语句直接调用该数据库语句。
在一个实施例中,如图7所示,步骤“基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及变量键值对,对第二代码类型语法树包含的变量进行转换,得到目标代码对应的第二代码类型的代码文件”之后,代码转换方法的具体实现过程,还包括:
步骤S702,在第二代码类型的代码文件对应的数据库中,获取第二代码类型的代码文件对应的平台表结构信息;
步骤S704,基于预设的主机表与平台表的字段名映射关系,以及平台表结构信息,确定第二代码类型的代码文件对应的实体类文件。
其中,实体类文件用于创建第二代码类型的代码文件对应的实体对象,平台表结构信息是第二代码类型的代码文件对应的数据库中各个平台表自身的数据结构。主机表是第一代码类型的目标代码对应的数据库中的表格,基于此,主机表与平台表的字段名映射关系可以表示第一代码类型的目标代码对应的数据库与第二代码类型的代码文件对应的数据库之间的字段名映射关系。
具体地,服务器可以获取存储在第二代码类型的代码文件对应的数据库中的平台表结构信息,并通过预设的主机表与平台表的字段名映射关系,确定平台表的字段名,服务器还可以根据第一代码类型的变量类型与第二代码类型的变量类型的映射关系,确定平台表的变量类型,基于此,服务器再根据平台表结构信息确定实体类的结构,将平台表的字段名、变量类型以及实体类的结构合并,确定实体类代码,并得到包含实体类代码的实体类文件。
本实施例中,通过平台表结构信息、主机表与平台表的字段名映射关系,能够生成第二代码类型的代码文件对应的实体类文件,以使计算机在执行第二代码类型的代码文件时,可以通过实体类文件直接创建数据对象。
在一个实施例中,如图8所示,步骤“基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及变量键值对,对第二代码类型语法树包含的变量进行转换,得到目标代码对应的第二代码类型的代码文件”之后,代码转换方法的具体实现过程,还包括:
步骤S802,在第一代码类型的目标代码对应的数据部中,获取第一代码类型的目标代码对应的文件结构信息。
步骤S804,基于文件结构信息,确定第二代码类型的代码文件对应的实体类文件。
其中,实体类文件用于创建第二代码类型的代码文件对应的实体对象,文件结构信息是从第一代码类型的目标代码对应的数据部的文件节获取到的信息,目标代码对应的文件结构信息包括目标代码的数据部中的各个文件节对应的数据结构。
具体地,服务器可以获取存储在第一代码类型的目标代码对应的数据部的文件节的文件结构信息,服务器可以获取目标代码包含的文件节对应的变量类型,并根据第一代码类型的变量类型与第二代码类型的变量类型的映射关系,将文件节对应的变量类型转换为的转换后的变量类型。基于此,服务器再根据文件结构信息确定实体类的结构,并将文件节转换后的变量类型以及实体类的结构合并,确定实体类代码,并得到包含实体类代码的实体类文件。
本实施例中,通过文件结构信息,能够生成第二代码类型的代码文件对应的实体类文件,以使计算机在执行第二代码类型的代码文件时,可以通过实体类文件直接创建数据对象,从而提升第二代码类型的代码文件的执行效率。
在一个实施例中,如图9所示,步骤“基于第一代码类型对应的词法解析器和语法解析器,对第一代码类型的目标代码进行解析,确定目标代码对应的第一代码类型语法树”之前,代码转换方法的具体实现过程,还包括:
步骤S902,根据第一代码类型的语法规则,获取第一代码类型的目标代码中各类型代码语句对应的关键字。
其中,第一代码类型的语法规则用于描述第一代码类型的语法,通过语法规则可以确定第一代码类型对应的语法规则文件。关键字是第一代码类型中各个语法对应的关键字,可以表示第一代码类型中语法的组成元素。各类型代码语句包括部类型的代码语句、节类型的代码语句、段类型的代码语句以及句子类型的代码语句。
具体地,服务器基于第一代码类型的语法规则中包含的各个关键字,确定目标代码中各类型的组成部分所对应的关键字,例如组成部分可以分为部、节、段、句子等,各组成部分都包含各自对应的关键字。目标代码可以指待转换的第一代码类型的目标代码,也可以是用户预先准备的用于确定词法解析器和语法解析器的模板代码,本申请在此不作具体限定。
步骤S904,基于各类型代码语句对应的关键字以及关键字对应的正则表达式,确定第一代码类型对应的语法规则文件。
具体地,服务器对各类型代码语句进行遍历,针对每一类型代码语句,确定语句的关键字,基于关键字建立该类型代码语句对应的关键字的正则表达式;服务器基于各类型代码语句的关键字的正则表达式,得到第一代码类型的语法规则树,基于语法树生成第一代码类型对应的语法规则文件。
步骤S906,根据第一代码类型对应的语法规则文件以及预设的生成器工具,确定第一代码类型对应的词法解析器和语法解析器。
具体地,服务器调用人工输入的词法解析器和语法解析器生成代码,通过预设的生成器工具,将第一代码类型对应的语法规则文件转换为第一代码类型对应的词法解析器和语法解析器。
可选地,服务器在第二代码类型的代码文件对应的数据库中,获取第二代码类型的代码文件对应的平台表结构信息;在第一代码类型的目标代码对应的数据部中,获取第二代码类型的代码文件对应的文件结构信息;服务器基于预设的主机表与平台表的字段名映射关系,以及平台表结构信息、文件结构信息,确定第二代码类型的代码文件对应的实体类文件。
本实施例中,通过第一代码类型的语法规则确定各类型代码语句对应的关键字,基于关键字和正则表达式,确定语法规则文件,从而使服务器基于语法规则文件生成词法解析器和语法解析器,从而使得后续再调用第一代码类型的目标代码时,可以直接使用已生成的词法解析器和语法解析器。
在一个实施例中,如图10所示,步骤“基于第一代码类型对应的词法解析器和语法解析器,对第一代码类型的目标代码进行解析,确定目标代码对应的第一代码类型语法树”的具体实现过程,包括:
步骤S1002,通过词法解析器,确定目标代码包含的每一行代码的词标记信息;
步骤S1004,基于目标代码包含的每一行代码的词标记信息以及语法解析器,确定目标代码对应的第一代码类型语法树。
其中,词法解析器用于将目标代码做分词处理,分词后能够得到每个单词的词标记信息。
具体地,服务器遍历目标代码的每一行代码,逐行读取代码内容,针对于每一行代码,通过词法解析器将代码解析为多个词标记信息,再将目标代码输入到语法解析器中,得到目标代码的语法结构。服务器基于各个行代码的词标记信息和语法结构,生成目标代码对应的第一代码类型语法树。
本实施例中,通过第一代码类型对应的词法解析器和语法解析器,能够将目标代码解析为对应的第一代码类型语法树,从而提升第一代码语法树的生成效率。
如图11所示,以下结合一个具体实施例,详细描述上述代码转换方法的具体执行过程,包括以下模块:输入模块、COBOL解析转换模块、平台代码生成模块,其中,COBOL解析转换模块可以包括COBOL语法树解析模块、COBOL语义转换模块以及SQL解析模块。
COBOL是公用面向商业语言,在传统的核心系统中,COBOL主要应用于编写主机批量应用程序,以及开发主机联机交易。COBOL代码的程序可以分为“标识部”、“环境部”、“数据部”和“过程部”四个部分,每部下分节,每节下分段,基于此,COBOL解析转换模块是对上述四个部分进行解析。
目前主机应用向平台转型,而转型后需要在基于Java的平台批量框架上开发,需要将原本的COBOL的程序转化为Java程序。而原本的COBOL程序主要为读文件操作类型和读表操作类型,Java对应的平台批量框架为这两类程序开发了基础模板。基于此,代码转换装置可以对COBOL代码进行解析,得到COBOL语法树。装置根据语法树先识别出COBOL代码所属的数据操作类别,转换的Java程序自动继承对应的基础模板,从而得到初始Java语法树。转换装置再进一步对COBOL语法树进行翻译转换,根据COBOL与Java的语法映射规则,生成Java对应的语法树,最终生成Java对应的代码文件。
输入模块可以接收由开发人员在界面录入,转换所需的参数和配置等信息,接收完成后,可以通过驱动装置开始进行代码转换,主要处理步骤如下。
步骤1:录入工程根路径、输出路径和文件编码信息。工程根路径为COBOL代码的根路径,输入模块会根据该路径递归扫描,获取需要转换的代码文件,即后缀名为.cbl文件,将代码文件加入转换队列中。输出路径为转换后存储Java代码的根路径。文件编码指转换后Java代码文件的码制。
步骤2:配置主机表与平台表对应关系。服务器可以通过主机表与平台表对应关系,确定主机表名称与平台表名称之间的映射关系。主机表名称与平台表名称之间的映射关系可以是,主机表中的数据表名称与平台表中的数据表名称一一对应的关系,当确定主机表的数据表名称后,可以通过映射关系确定该数据表在平台表中的数据表名称。
COBOL语法树解析模块是COBOL解析转换模块的子模块。
COBOL代码的从上至下可以分为部、节、段、语句,具体结构如图12所示。COBOL源程序可以分为标识部、环境部、数据部和过程部,标识部中可以包括多个段,环境部汇总可以包含多个节,每一节可以包含多个段。数据部可以包括多个节,每个节可以包含对应的描述体,基于描述体能够得到数据部的各子句。过程部中可以包括多个节,每一节可以包含多个段,每一段都可以包含多条语句。
针对COBOL的程序结构,模块可以使用开源的Antlr4语法分析器对COBOL程序进行语法解析。该模块从转换队列中获取COBOL代码文件,逐行扫描该文件,通过预设的词法解析器将代码内容解析出符合COBOL语法的单词,再通过预设的语法解析器将单词转换成COBOL语法树。词法解析器和语法分析器可以通过Antlr4提供的生成器工具jar包生成,该工具jar包需要依赖语法规则文件,因此需要事先根据COBOL的语法和Antlr4的规范编写语法规则文件。COBOL语法树解析模块的处理流程如下:
步骤1:编写语法规则文件,语法规则文件是Antlr4生成词法解析器和语法分析器的基础,语法规则文件需要按照COBOL语法和Antlr4规范进行编写,根据Antlr4要求,语法规则文件的后缀名为g4。语法规则文件主要是通过关键字和类似正则表达式的方法来描述程序语言的语法结构。
语法规则文件仅需生成一次,语法规则文件是用来描述COBOL的语法,通过语法规则文件生成COBOL的词法解析器和语法分析器,生成的词法解析器和语法分析器可以适配不同的COBOL程序。
步骤2:生成词法解析器和语法分析器。服务器通过语法规则文件和Antlr4提供的生成器工具,生成词法解析器和语法分析器,服务器通过用户输入对应的命令生成对应的Java代码,集成至代码转换装置的源代码工程中,并作为词法解析器和语法分析器。该步骤只需操作一次即可,若后续需要调整词法解析器和语法分析器,可以重新使用生成器工具的生成最新的词法解析器和语法解析器。
步骤3:获取需转换的COBOL程序文件。
服务器从转换队列中获取需要转换的COBOL程序文件,读取该文件的内容,作为词法解析器的输入源。
步骤4:COBOL语法树生成。
服务器逐行读取COBOL程序内容,通过词法解析器将其解析成单词,再通过语法解析器得到COBOL语法树。
SQL解析模块是对Cobol程序中访问数据库的SQL语句进行解析,将SQL语句转换成Java的持久层框架Mybatis所需的SQL Maps,处理流程如下。
步骤1:从COBOL语法树中获取EXEC SQL语句,根据关键字判断语句类型,确定是属于SELECT/INSERT/UPDATE/DELETE中的某一种语句类型;根据语句类型初始化转换MybatisSQL Maps对应的元数据信息。
四种语句类型包含的相同元数据信息包括“语句类型”、“表名”和Mybatis所需的“statementId(语句ID)”,后续服务器可以根据语句类型做对应解析,补充对应语句的元数据信息。
步骤2:解析SELECT语句。获取查询的字段名列表及查询条件,补充至对应的元数据信息中。
步骤3:解析INSERT语句。获取插入的字段名列表,补充至对应的元数据信息中。
步骤4:解析UPDATE语句。获取更新的字段名列表及更新条件,补充至对应的元数据信息中。
步骤5:解析DELETE语句。获取删除条件,补充至对应的元数据信息中。
语义转换模块,该模块主要是对解析出的Cobol语法树进行翻译,按照Cobol与Java的语法映射规则进行翻译。该模块的处理过程如下:
步骤1:从Cobol语法树中获取数据部,对数据部进行解析,Cobol中数据部主要是对变量的定义,通过对数据部的解析,将其转换成一个以变量名为KEY,变量类型和长度为VALUE的Map。
步骤2:从Cobol语法树中获取过程部列表,遍历过程部列表,找到主入口过程部,同时确定该程序是读文件处理数据还是读表处理数据的类型。
判断条件可以是,在遍历过程部中查看是否有READ语句(Cobol中表示读文件的语句)或FETCH游标语句(Cobol中表示遍历表数据的语句)。若有READ语句,则认为是读文件处理数据的类型,同时该过程部的段为主入口,初始化对应类型的Java语法树,停止后续段的遍历;若有FETCH游标语句,则认为是读表处理数据的类型,同时该段为主入口,初始化对应类型的Java语法树,停止后续段的遍历。
步骤3:获取过程部主入口的语句列表,遍历该语句列表,按照如表1所示规则进行翻译。从而对各Cobol语句按该规则进行递归翻译,转换成Java语法树。COBOL语句与Java语句的映射关系如下表1所示:
表1
平台代码生成模块,该模块主要是根据转换的Java语法树和解析数据部获取的变量Map生成平台批量框架的作业代码,同时根据解析获取的Mybatis SQL Maps映射成其对应的XML配置文件,最后再根据配置信息获取主机表与平台表的映射关系,通过平台数据库直接获取对应表的表结构信息,转换成对应的实体类;对于文件,则根据COBOL中定义的文件结构,直接转换成对应的实体类。该模块的处理过程如下。
步骤1:生成平台批量作业代码。
根据Java语法树和通过解析数据部获取的变量Map生成平台批量作业代码。在Cobol中,变量都为全局变量,因此对应的变量都将转换成Java类中的成员变量。转换过程通过遍历变量Map实现,Cobol变量类型与Java变量类型的映射关系可以如表2所示。
表2
步骤2:生成Mybatis映射的xml配置文件。
根据SQL解析模块中解析获取的Mybaits SQL Maps的元数据信息,逐个生成对应的xml配置。SELECT语句对应select标签、INSERT语句对应insert标签、UPDATE语句对应update标签、DELETE语句对应delete标签。其余的配置信息通过对应语句的元数据中获取。
步骤3:生成平台表或文件映射所需的实体类代码。
根据面向对象的设计原则,装置会自动根据平台表结构和文件结构生成对应的实体类代码。平台批量作业的代码在访问平台表数据或操作文件数据时则直接使用对应的实体类进行操作。平台表结构通过数据库直接获取,文件结构通过Cobol程序中数据部的文件节获取。实体类的属性名根据平台表的字段名或文件结构的字段名映射,按照Java的驼峰规则进行转换,数据类型参照上述中的表格进行映射。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的代码转换方法的代码转换装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个代码转换装置实施例中的具体限定可以参见上文中对于代码转换方法的限定,在此不再赘述。
在一个实施例中,如图13所示,提供了一种代码转换装置1300,包括:第一代码类型语法树确定模块1301、变量键值对确定模块1302、第二代码类型语法树确定模块1303和代码转换模块1304,其中:
第一代码类型语法树确定模块1301,用于基于第一代码类型对应的词法解析器和语法解析器,对第一代码类型的目标代码进行解析,确定目标代码对应的第一代码类型语法树;
变量键值对确定模块1302,用于对第一代码类型语法树包含的数据部进行转换,得到目标代码对应的变量键值对;
第二代码类型语法树确定模块1303,用于通过第一代码类型语法树的过程部主入口,确定目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定目标代码的语句列表对应的第二代码类型语法树;
代码转换模块1304,用于基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及变量键值对,对第二代码类型语法树包含的变量进行转换,得到目标代码对应的第二代码类型的代码文件。
进一步地,第二代码类型语法树确定模块1303,具体用于:对COBOL语法树的过程部列表进行遍历,确定COBOL语法树的过程部主入口,以及COBOL对应的目标代码的数据操作类型;根据过程部主入口,确定目标代码的语句列表,以及基于数据操作类型,确定目标代码对应的初始Java语法树;基于COBOL语句与Java语句的映射关系,对目标代码的语句列表进行转换,得到Java语句列表,基于Java语句列表和初始Java语法树,得到目标代码的语句列表对应的目标Java语法树。
进一步地,代码转换模块1304,具体用于:基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系,将目标代码对应的变量键值对转换为第二代码类型对应的变量键值对;基于第二代码类型对应的变量键值对和第二代码类型语法树,生成目标代码对应的第二代码类型的代码文件。
进一步地,装置还包括SQL执行语句生成模块,具体用于:根据预设的关键字判断规则,确定第一代码类型语法树中包含的各数据库语句对应的语句类型,并基于语句类型,生成各数据库语句对应的初始元数据信息;针对每一数据库语句,根据数据库语句的语句类型对应的元数据更新规则,对数据库语句对应的初始元数据信息进行更新,得到数据库语句对应的目标元数据信息;通过各数据库语句的目标元数据信息,生成SQL执行语句。
进一步地,SQL执行语句生成模块,具体还用于:在数据库语句是查询语句类型的情况下,通过解析数据库语句,获取查询语句类型对应的查询条件,以及数据库语句的字段名列表;将查询条件、字段名列表对初始元数据信息进行更新,得到查询语句类型的数据库语句对应的目标元数据信息。
进一步地,装置还包括XML配置文件生成模块,具体用于:根据各数据库语句对应的目标元数据信息,生成第二代码类型的语句对应的XML配置文件,XML配置文件用于调用第二代码类型的代码文件的数据库。
进一步地,装置还包括第一实体类文件确定模块,具体用于:在第二代码类型的代码文件对应的数据库中,获取第二代码类型的代码文件对应的平台表结构信息;基于预设的主机表与平台表的字段名映射关系,以及平台表结构信息,确定第二代码类型的代码文件对应的实体类文件,实体类文件用于创建第二代码类型的代码文件对应的实体对象。
进一步地,装置还包括第二实体类文件确定模块,具体用于:在第一代码类型的目标代码对应的数据部中,获取第一代码类型的目标代码对应的文件结构信息;基于文件结构信息,确定第二代码类型的代码文件对应的实体类文件,实体类文件用于创建第二代码类型的代码文件对应的实体对象。
进一步地,装置还包括解析器确定模块,具体用于:根据第一代码类型的语法规则,获取第一代码类型的目标代码中各类型代码语句对应的关键字;基于各类型代码语句对应的关键字以及关键字对应的正则表达式,确定第一代码类型对应的语法规则文件;根据第一代码类型对应的语法规则文件以及预设的生成器工具,确定第一代码类型对应的词法解析器和语法解析器。
进一步地,第一代码类型语法树确定模块1301,具体用于:通过词法解析器,确定目标代码包含的每一行代码的词标记信息;基于目标代码包含的每一行代码的词标记信息以及语法解析器,确定目标代码对应的第一代码类型语法树。
上述代码转换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图14所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储第一代码类型的目标代码、目标代码对应的变量键值对、第一代码类型语法树、第二代码类型语法树、第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及第二代码类型的代码文件。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码转换方法。
本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (14)
1.一种代码转换方法,其特征在于,所述方法包括:
基于第一代码类型对应的词法解析器和语法解析器,对所述第一代码类型的目标代码进行解析,确定所述目标代码对应的第一代码类型语法树;
对所述第一代码类型语法树包含的数据部进行转换,得到所述目标代码对应的变量键值对;
通过所述第一代码类型语法树的过程部主入口,确定所述目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定所述目标代码的语句列表对应的第二代码类型语法树;
基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件。
2.根据权利要求1所述的方法,其特征在于,所述第一代码类型为COBOL,所述第二代码类型为Java;所述通过所述第一代码类型语法树的过程部主入口,确定所述目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定所述目标代码的语句列表对应的第二代码类型语法树,包括:
对COBOL语法树的过程部列表进行遍历,确定所述COBOL语法树的过程部主入口,以及所述COBOL对应的目标代码的数据操作类型;
根据所述过程部主入口,确定所述目标代码的语句列表,以及基于所述数据操作类型,确定所述目标代码对应的初始Java语法树;
基于COBOL语句与Java语句的映射关系,对所述目标代码的语句列表进行转换,得到Java语句列表,基于所述Java语句列表和所述初始Java语法树,得到所述目标代码的语句列表对应的目标Java语法树。
3.根据权利要求1所述的方法,其特征在于,所述基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件,包括:
基于所述第一代码类型的变量类型与第二代码类型的变量类型的映射关系,将所述目标代码对应的变量键值对转换为所述第二代码类型对应的变量键值对;
基于所述第二代码类型对应的变量键值对和所述第二代码类型语法树,生成所述目标代码对应的第二代码类型的代码文件。
4.根据权利要求1所述的方法,其特征在于,所述通过所述第一代码类型语法树的过程部主入口,确定所述目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定所述目标代码的语句列表对应的第二代码类型语法树的步骤之前,所述方法还包括:
根据预设的关键字判断规则,确定所述第一代码类型语法树中包含的各数据库语句对应的语句类型,并基于所述语句类型,生成各数据库语句对应的初始元数据信息;
针对每一数据库语句,根据所述数据库语句的语句类型对应的元数据更新规则,对所述数据库语句对应的初始元数据信息进行更新,得到所述数据库语句对应的目标元数据信息;
通过各所述数据库语句的目标元数据信息,生成SQL执行语句。
5.根据权利要求4所述的方法,其特征在于,所述语句类型为查询语句类型;所述根据所述数据库语句的语句类型对应的元数据更新规则,对所述数据库语句对应的初始元数据信息进行更新,得到所述数据库语句对应的目标元数据信息,包括:
在所述数据库语句是所述查询语句类型的情况下,通过解析所述数据库语句,获取所述查询语句类型对应的查询条件,以及所述数据库语句的字段名列表;
将所述查询条件、所述字段名列表对所述初始元数据信息进行更新,得到所述查询语句类型的数据库语句对应的目标元数据信息。
6.根据权利要求4所述的方法,其特征在于,所述针对每一数据库语句,根据所述数据库语句的语句类型对应的元数据更新规则,对所述数据库语句对应的初始元数据信息进行更新,得到所述数据库语句对应的目标元数据信息之后,所述方法还包括:
根据各所述数据库语句对应的目标元数据信息,生成第二代码类型的语句对应的XML配置文件,所述XML配置文件用于调用所述第二代码类型的代码文件的数据库。
7.根据权利要求1所述的方法,其特征在于,所述基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件的步骤之后,所述方法还包括:
在所述第二代码类型的代码文件对应的数据库中,获取所述第二代码类型的代码文件对应的平台表结构信息;
基于预设的主机表与平台表的字段名映射关系,以及所述平台表结构信息,确定所述第二代码类型的代码文件对应的实体类文件,所述实体类文件用于创建所述第二代码类型的代码文件对应的实体对象。
8.根据权利要求1所述的方法,其特征在于,所述基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件的步骤之后,所述方法还包括:
在所述第一代码类型的目标代码对应的数据部中,获取所述第一代码类型的目标代码对应的文件结构信息;
基于所述文件结构信息,确定所述第二代码类型的代码文件对应的实体类文件,所述实体类文件用于创建所述第二代码类型的代码文件对应的实体对象。
9.根据权利要求1所述的方法,其特征在于,所述基于第一代码类型对应的词法解析器和语法解析器,对所述第一代码类型的目标代码进行解析,确定所述目标代码对应的第一代码类型语法树之前,所述方法还包括:
根据所述第一代码类型的语法规则,获取所述第一代码类型的目标代码中各类型代码语句对应的关键字;
基于所述各类型代码语句对应的关键字以及所述关键字对应的正则表达式,确定所述第一代码类型对应的语法规则文件;
根据所述第一代码类型对应的语法规则文件以及预设的生成器工具,确定所述第一代码类型对应的词法解析器和语法解析器。
10.根据权利要求1所述的方法,其特征在于,所述基于第一代码类型对应的词法解析器和语法解析器,对所述第一代码类型的目标代码进行解析,确定所述目标代码对应的第一代码类型语法树,包括:
通过所述词法解析器,确定所述目标代码包含的每一行代码的词标记信息;
基于所述目标代码包含的每一行代码的词标记信息以及所述语法解析器,确定所述目标代码对应的第一代码类型语法树。
11.一种代码转换装置,其特征在于,所述装置包括:
第一代码类型语法树确定模块,用于基于第一代码类型对应的词法解析器和语法解析器,对所述第一代码类型的目标代码进行解析,确定所述目标代码对应的第一代码类型语法树;
变量键值对确定模块,用于对所述第一代码类型语法树包含的数据部进行转换,得到所述目标代码对应的变量键值对;
第二代码类型语法树确定模块,用于通过所述第一代码类型语法树的过程部主入口,确定所述目标代码的语句列表,并基于第一代码类型语句与第二代码类型语句的映射关系,确定所述目标代码的语句列表对应的第二代码类型语法树;
代码转换模块,用于基于第一代码类型的变量类型与第二代码类型的变量类型的映射关系以及所述变量键值对,对所述第二代码类型语法树包含的变量进行转换,得到所述目标代码对应的第二代码类型的代码文件。
12.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述的方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
14.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311609647.XA CN117407002A (zh) | 2023-11-29 | 2023-11-29 | 代码转换方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311609647.XA CN117407002A (zh) | 2023-11-29 | 2023-11-29 | 代码转换方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117407002A true CN117407002A (zh) | 2024-01-16 |
Family
ID=89500007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311609647.XA Pending CN117407002A (zh) | 2023-11-29 | 2023-11-29 | 代码转换方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117407002A (zh) |
-
2023
- 2023-11-29 CN CN202311609647.XA patent/CN117407002A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6449620B1 (en) | Method and apparatus for generating information pages using semi-structured data stored in a structured manner | |
US6581062B1 (en) | Method and apparatus for storing semi-structured data in a structured manner | |
WO2021179722A1 (zh) | Sql语句解析方法、系统、计算机设备和存储介质 | |
CN112235311B (zh) | Ovsdb客户端代码自动生成方法、系统、设备及介质 | |
US10474435B2 (en) | Configuration model parsing for constraint-based systems | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
US10489024B2 (en) | UI rendering based on adaptive label text infrastructure | |
US10534592B2 (en) | Template expressions for constraint-based systems | |
CN113467785B (zh) | 一种拟态数据库的sql转译方法和系统 | |
CN113609158A (zh) | 一种sql语句的生成方法、装置、设备及介质 | |
CN111858645A (zh) | 一种数据库对象处理方法、装置、设备及存储介质 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN117033348A (zh) | Sql转换方法、装置、计算机设备和存储介质 | |
US20230049179A1 (en) | Self-organizing generalization hierarchy with bindings of propositions | |
CN113741864B (zh) | 基于自然语言处理的语义化服务接口自动设计方法与系统 | |
CN117407002A (zh) | 代码转换方法、装置、计算机设备和存储介质 | |
CN114880483A (zh) | 一种元数据知识图谱构建方法、存储介质及系统 | |
CN114115908A (zh) | 一种指令集生成、程序解析方法装置、设备以及存储介质 | |
CN117112538B (zh) | 数据库操作方法、装置、计算机设备和存储介质 | |
US12117996B2 (en) | Schema-free static query template | |
CN117372182B (zh) | 一种基于快速开发持久层代码辅助方法的保险管理系统 | |
CN116451795B (zh) | 一种量子线路图处理方法、装置及电子设备和存储介质 | |
CN111190917B (zh) | 一种数据处理方法及装置 | |
CN118395970A (zh) | 基于自然语言的单据处理方法、装置、计算机设备、存储介质 | |
CN117370339A (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 |