CN112988163B - 编程语言智能适配方法、装置、电子设备和介质 - Google Patents

编程语言智能适配方法、装置、电子设备和介质 Download PDF

Info

Publication number
CN112988163B
CN112988163B CN202110358681.9A CN202110358681A CN112988163B CN 112988163 B CN112988163 B CN 112988163B CN 202110358681 A CN202110358681 A CN 202110358681A CN 112988163 B CN112988163 B CN 112988163B
Authority
CN
China
Prior art keywords
language
grammar
target
source language
tree
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.)
Active
Application number
CN202110358681.9A
Other languages
English (en)
Other versions
CN112988163A (zh
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 CN202110358681.9A priority Critical patent/CN112988163B/zh
Publication of CN112988163A publication Critical patent/CN112988163A/zh
Application granted granted Critical
Publication of CN112988163B publication Critical patent/CN112988163B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F8/427Parsing
    • 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)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供一种编程语言智能适配方法,包括:将接收到的源语言文件转换为源语言文本,提取源语言和目标语言各自所处的运行环境数据;根据接收到的源语言对应的语法解析规则,结合源语言文本和运行环境数据,构建源语言语法树;根据预先创建的智能适配表,对源语言语法树进行语法语义翻译转换,构建目标语言语法树,其中,智能适配表用于基于不同目标语言的运行环境数据,预判出不同的影响翻译转换的关键因素;以及,基于目标语言语法树,生成目标语言文件。本发明还提供一种编程语言智能适配装置、电子设备和介质。本发明提出一种由于目标运行环境不同导致影响翻译决策的智能适配方法,提高软件系统跨编程语言系统迁移的人力成本。

Description

编程语言智能适配方法、装置、电子设备和介质
技术领域
本发明涉及计算机编程技术领域,具体涉及一种编程语言智能适配方法、装置、电子设备和介质。
背景技术
软件开发领域,编程语言众多,很多语言是无法像Java编程语言一样可以任意跨平台使用的,例如C语言、PLSQL数据库语言、COBOL主机语言等编程语言都有平台强依赖性。
对于软件系统需要转换编程语言的情况,目前常规做法主要有两种:手工重构和基于语法树的简单转换工具。其中,手工重构成本较高,对于大型业务系统需要投入大量人力才能够完成。基于语法树的简单转换工具存在局限性,针对源语言和目标语言的运行环境的差异的支持不够完善,没有自动适配处理流程,仅能满足当前软件系统场景的局部转换,无法推广至其他系统转换场景。
因此,在实现本发明构思的过程中,发明人发现相关技术中至少存在如下问题:现有技术中大多数编程语言所处的软件系统的灵活性和可移植性有待提高,需要一种基于语法分析树的编程语言转换方法,将特定语言编写的程序转换为另一种更具通用性和可移植性的编程语言编写的程序。
发明内容
(一)要解决的技术问题
有鉴于此,本发明提供了一种编程语言智能适配方法、装置、电子设备和介质,以解决现有技术中的不同编程语言之间转换成本高、无法智能适配不同目标环境等问题。
(二)技术方案
本发明一方面提供了一种编程语言智能适配方法,用于将源语言转换为目标语言,包括:将接收到的源语言文件转换为源语言文本,提取源语言和目标语言各自所处的运行环境数据;根据接收到的源语言对应的语法解析规则,结合源语言文本和运行环境数据,构建源语言语法树;根据预先创建的智能适配表,对源语言语法树进行语法语义翻译转换,构建目标语言语法树,其中,智能适配表用于基于不同目标语言的运行环境数据,预判出不同的影响翻译转换的关键因素;以及,基于目标语言语法树,生成目标语言文件。
在一些实施例中,关键因素包括:目标语言的数据库类型,和/或目标数据库内置函数的转换需求。
在一些实施例中,构建源语言语法树,包括:采用antlr开源工具将源语言生成为源语言语法树。
在一些实施例中,对源语言语法树进行语法语义翻译转换之前,还包括:将运行环境数据以HashMap形式存储。
在一些实施例中,对源语言语法树进行语法语义翻译转换之前,还包括:接收源语言与目标语言之间的对照关系文件,分析对照关系文件中的源语言和目标语言的语法语义对照关系,将语法语义对照关系以HashMap形式存储。
在一些实施例中,对源语言语法树进行语法语义翻译转换,包括:采用深度优先遍历源语言语法树的各个节点,根据以HashMap形式存储的语法语义对照关系,将各个节点对应的代码文本进行语法语义翻译转换。
在一些实施例中,基于目标语言语法树,生成目标语言文件,包括:以目标语言语法树的树根作为起点,采用前序遍历方式递归遍历目标语言语法树的各个节点,生成目标文件。
在一些实施例中,采用前序遍历方式递归遍历目标语言语法树的各个节点,还包括递归执行以下步骤:遍历目标语言语法树的各个节点,判断当前节点是否为叶子结点;若当前节点是叶子结点,则将当前节点翻译为对应的节点文本;否则,若当前节点不是叶子结点,继续遍历当前节点的孩子节点,得到孩子节点的翻译结果,并结合孩子节点的翻译结果,将当前节点的内容翻译为对应的节点文本。
本发明的另一方面提供了一种编程语言智能适配装置,包括:预处理模块,用于将接收到的源语言文件转换为源语言文本,提取源语言和目标语言各自所处的运行环境数据;语法解析模块,用于根据接收到的源语言对应的语法解析规则,结合源语言文本和运行环境数据,构建源语言语法树;翻译转换模块,用于根据预先创建的智能适配表,对源语言语法树进行语法语义翻译转换,构建目标语言语法树,其中,智能适配表用于基于不同目标语言的运行环境数据,预判出不同的影响翻译转换的关键因素;以及,目标生成模块,用于基于目标语言语法树,生成目标语言文件。
在一些实施例中,关键因素包括:目标语言的数据库类型,和/或目标数据库内置函数的转换需求。
在一些实施例中,对源语言语法树进行语法语义翻译转换之前,还包括:接收源语言与目标语言之间的对照关系文件,分析对照关系文件中的源语言和目标语言的语法语义对照关系,将语法语义对照关系以HashMap形式存储。
在一些实施例中,对源语言语法树进行语法语义翻译转换,包括:采用深度优先遍历源语言语法树的各个节点,根据以HashMap形式存储的语法语义对照关系,将各个节点对应的代码文本进行语法语义翻译转换。
本发明的另一方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现上述根据本公开实施例的方法。
本发明的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,上述指令在被处理器执行时用于实现根据本发明实施例上述的方法。
(三)有益效果
本发明提供的编程语言智能适配方法、装置、电子设备和介质,至少具有以下有益效果:
(1)本发明的编程语言转换装置,提供了一种通用处理方式将源编程语言编写的源程序构建为语法分析树,遍历树的各个节点,并翻译为目标编程语言编写的目标程序并输出,进而,本发明提出了一种面向编程语言转换场景的通用处理流程方案,提出不同编程语言相互转换的核心是语法树的转换;
(2)本发明的实施例中的装置可以极大的提高软件系统跨编程语言系统迁移的人力成本。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本发明实施例的编程语言智能适配方法及装置的系统架构;
图2示意性示出了根据本发明实施例的编程语言智能适配方法的流程图;
图3示意性示出了根据本发明实施例的目标语言文件生成过程的递归遍历方法的流程图;
图4示意性示出了根据本发明实施例的目标语言文件生成过程的递归遍历方法的操作流程图;
图5示意性示出了根据本发明实施例的编程语言智能适配装置的框图;
图6示意性示出了根据本发明实施例的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
在详细描述本发明的具体实施例之前,首先对技术术语进行阐释,以便于更好地理解本发明。
抽象语法树(abstract syntax tree,AST),简称语法树(syntax tree),是对编程语言源程序的语法结构的一种树形表示形式,这里特指编程语言的源代码。语法树上的每个节点都代表源代码中的一种结构。每个具体的单词(由词法分析得到的)都在一个叶子节点上。根据抽象语法树的定义及规则,可以得到这个语句对应的语法树。
本发明提供了一种编程语言智能适配方法,用于将源语言转换为目标语言。该方法例如可以包括以下操作:将接收到的源语言文件转换为源语言文本,提取源语言和目标语言各自所处的运行环境数据;根据接收到的源语言对应的语法解析规则,结合源语言文本和运行环境数据,构建源语言语法树;根据预先创建的智能适配表,对源语言语法树进行语法语义翻译转换,构建目标语言语法树,其中,智能适配表用于基于不同目标语言的运行环境数据,预判出不同的影响翻译转换的关键因素;基于目标语言语法树,生成目标语言文件。
图1示意性示出了根据本发明实施例的编程语言智能适配方法及装置的系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,如图1所示,根据该实施例的系统架构可以包括源语言文件101、目标语言文件102和用于编程语言智能适配的装置103。其中,源语言文件101和目标语言文件102分别是同一应用的运行于不同编程语言软件平台的程序。通过根据本公开实施例的用于编程语言智能适配的装置103,可以将源语言文件101转换为目标语言文件102。
源语言文件101运行于第一平台,目标语言文件102运行于第二平台,其中,第一平台和第二平台分别为基于源编程语言的软件平台和目标编程语言的软件平台。
根据本公开的一些实施例,第一平台和第二平台为应用的不同宿主应用。例如,该源语言文件101和目标语言文件102对应的应用产品可以是一个小程序应用(例如,话费充值)。第一平台和/或第二平台例如可以是支付宝、微信、微博、或者淘宝等宿主应用。该话费充值的小程序是接入宿主应用第三方应用。
根据本公开的实施例,用于编程语言智能适配的装置103可以解析源语言文件101的代码,得到源语言文件101对应的源语言抽象语法树,然后根据第二平台的框架逻辑或源代码语言结构,将源语言抽象语法树中对应节点(例如,模板、接口、组件库或运行时)的内容进行替换,从而得到目标语言抽象语法树,然后再基于目标抽象语法树生成目标语言文件102。
本发明实施例中,通过将源语言文件经过一系列处理后,转换为不同目标语言的程序文件,解决了不同编程语言之间转换成本高、无法智能适配不同目标环境等问题,降低了不同平台的代码开发和维护成本。
下面,以源语言为PLSQL语言,目标语言为Java语言为例,来具体描述本发明的编程语言智能适配方法的一个具体实施例。
图2示意性示出了根据本发明实施例的编程语言智能适配方法的流程图。
如图2所示,该编程语言智能适配方法可以包括操作S201~操作S204。
在操作S201,将接收到的源语言文件转换为源语言文本,提取源语言和目标语言各自所处的运行环境数据。
由于源语言在转换为目标语言时,一般需要源语言和目标语言所处的运行环境数据才能进行后续转换处理。例如,处理源语言为PLSQL数据库语言时,需先访问PLSQL数据库运行环境读取环境信息和数据对象信息,同时按照用户配置的目标语言运行环境确定转换模式。
其中,运行环境数据包括:数据库对象、服务器类型,数据库和服务器之间的连接协议。该连接协议例如可以包括Java数据库连接和FTP(File Transfer Protocol,即文件传输协议)文件服务器连接。数据库对象例如可以包括包、表、序列号等。
可以理解的是,Java数据库连接(Java Database Connectivity,简称JDBC),是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了例如查询和更新数据库中数据的方法。FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。
目标语言所处的运行环境数据对编程语言翻译转换具有重要影响。例如,使用MySQL数据还是Oracle数据库,使用64位JVM(Java Virtual Machine,Java虚拟机)还是32位JVM,这些因素都会影响编程语言翻译转换的效果。
在操作S202,根据接收到的源语言对应的语法解析规则,结合源语言文本和运行环境数据,构建源语言语法树。
各种编程语言均有对应的语法解析规则,需要将接收到的源语言对应的语法解析规则转换为语法解析规则文本,以供后续使用。
例如,以源语言为PLSQL语言为例,其语法解析规则表现为.g4文件。具体地,if-else语法解析规则文本(PLSQLParser.g4)的代码如下:
结合接收到的源语言对应的语法解析规则、运行环境数据和源语言文本后,采用antlr开源工具将源语言生成为源语言语法树。
继续以源语言为PLSQL语言为例,源语言语法树的生成方式的代码如下:
CharStreaminputStream=CharStreams.fromString(源语言文本);
CaseChangingCharStream upperStream=
new CaseChangingCharStream(inputStream,true);
PLSQLLexer lexer=new PLSQLLexer(upperStream);
CommonTokenStream tokens=new CommonTokenStream(lexer);
PLSQLParser parser=new PLSQLParser(tokens);
ParseTree tree=parser.sql_script();
由此,本发明通过解析源语言文件的代码,得到了源语言抽象语法树。
在操作S203,根据预先创建的智能适配表,对源语言语法树进行语法语义翻译转换,构建目标语言语法树,其中,智能适配表用于基于不同目标语言的运行环境数据,预判出不同的影响翻译转换的关键因素。
本实施例中,在对源语言语法树进行语法语义翻译转换之前,包括:将运行环境数据以HashMap形式存储。例如,继续以源语言为PLSQL语言为例,存储方式如以下代码示例所示:
<PCKG_TRANSFER,PACKAGE>
<TYPE_POST_PND_INIERFACE,PROCEDURE>
<UTL_FILE.PUT_LINE,FUNCTION>
其中,HashMap是一种基于哈希表的Map接口的实现,此实现提供所有可选的映射操作,并允许使用null值和null键。
本实施例中,在对源语言语法树进行语法语义翻译转换之前,还包括:接收源语言与目标语言之间的对照关系文件,分析对照关系文件中的源语言和目标语言的语法语义对照关系,将语法语义对照关系以HashMap形式存储。
对照关系文件中,配置有源语言与目标语言之间的语法语义对照关系。本实施例中,以HashMap形式存储该语法语义对照关系,以供后续翻译转换使用。例如,以源语言是PLSQL语言、目标语言是Java语言为例,以HashMap形式存储的语法语义对照关系的代码如下:
<PACKAGE,class>
<PROCEDURE,$functionname()>
<IF,if{>
<THEN,>
<ELSEIF,elseif{>
<ENDIF,}>
本实施例中,采用深度优先遍历源语言语法树的各个节点,根据语法语义对照关系,将各个节点对应的代码文本进行语法语义翻译转换。具体来说,在遍历到中间某个节点时,读取该节点的代码段文本,同时读取以HashMap形式存储的运行环境数据和源语言与目标语言之间的语法语义对照关系,将该节点的代码段文本进行替换处理。例如,PLSQL中包PCKG_TRANSFER定义节点会翻译转换为class PCKG_TRANSFER,IF-END语句翻译转换为if(...){.....},直至遍历源语言语法树的所有节点,完整地实现将源语言语法树进行语法语义翻译转换。
特别地,基于不同目标语言的运行环境数据,本发明预先创建了智能适配表,用于预判出不同的影响翻译转换的关键因素。其中,该关键因素可以包括:目标语言的数据库类型,和/或目标数据库内置函数的转换需求。
例如,在PLSQL源语言翻译为Java目标语言时,目标应用运行使用的数据库类型可以作为影响翻译转换的关键因素,如果目标数据库继续使用Oracle数据库,则翻译转换过程中无需处理Oracle内置函数,也就无需对Oracle内置函数进行替换处理。但是,如果目标数据库为MySQL,则翻译转换过程中需将Oracle内置函数与其他结构化查询语言(Structured Query Language,SQL)分离,再将Oracle内置函数翻译为Java语言函数,此时需要对Oracle内置函数进行替换处理。
由此可见,基于智能适配表,本发明实施例可以提高基于不同目标语言运行环境的智能适配能力。
在操作S204,基于目标语言语法树,生成目标语言文件。
本实施例中,以目标语言语法树的树根作为起点,采用前序遍历方式递归遍历所述目标语言语法树的各个节点,生成目标文件。
由此,由于抽象语法树的节点可能会包含孩子节点,例如用于实现函数之间的调用等。本发明通过采用自顶向下递归遍历方式,对目标语言语法树上的各个节点进行遍历,以此避免遗漏目标语言语法树中的任一节点,能够更准确地获知该目标语言语法树的语法,便于获取后续的目标语言文件。
图3示意性示出了根据本发明实施例的目标语言文件生成过程的递归遍历方法的流程图。图4示意性示出了根据本发明实施例的目标语言文件生成过程的递归遍历方法的操作流程图。
结合图3和图4,具体地,采用前序遍历方式递归遍历所述目标语言语法树的各个节点,还可以包括递归执行以下操作S301~S302。
在操作S301,遍历目标语言语法树的各个节点,判断当前节点是否为叶子结点。
在操作S302,若当前节点是叶子结点,则将当前节点翻译为对应的节点文本;若当前节点不是叶子结点,继续遍历当前节点的孩子节点,得到孩子节点的翻译结果,并结合孩子节点的翻译结果,将当前节点的内容翻译为对应的节点文本。
可以理解的是,叶子节点是抽象语法树中的没有子结点(即度为0)的结点。孩子节点是指节点的子树的根。
通过本发明的实施例,在遍历抽象语法树的节点,将抽象语法树中的各个节点进行翻译转换的过程中,如果当前节点还存在子节点,则先遍历子节点,得到子节点的翻译结果后再结合子节点的翻译结果来翻译当前节点,因此,结合子节点的内容来翻译当前节点,可降低对节点内容翻译不完善导致翻译结果出错的概率。可以理解的是,对于没有子节点的当前节点,则将当前节点翻译之后再进行下一节点的翻译,直至抽象语法树上的所有节点内容都被翻译,避免遗漏抽象语法树上节点的内容,实现准确地翻译出目标语言文件。
通过上述实施例,本发明提供了一种编程语言智能适配方法、装置、电子设备和介质,克服了不同编程语言之间转换成本高、无法智能适配不同目标环境等问题,采用一种通用处理方式将源编程语言编写的源程序构建为语法分析树,遍历树的各个节点,并翻译为目标编程语言编写的目标程序并输出。本发明提出了一种面向编程语言转换场景的处理方法,同时提出一种由于目标运行环境不同导致影响翻译决策的智能适配解决方案,可以极大的提高软件系统跨编程语言系统迁移的人力成本。
图5示意性示出了根据本发明实施例的编程语言智能适配装置的框图。
如图5所示,编程语言智能适配装置500可以包括预处理模块510、语法解析模块520、翻译转换模块530和目标生成模块540。
预处理模块510,用于将接收到的源语言文件转换为源语言文本,提取源语言和目标语言各自所处的运行环境数据;
语法解析模块520,用于根据接收到的源语言对应的语法解析规则,结合源语言文本和运行环境数据,构建源语言语法树;
翻译转换模块530,用于根据预先创建的智能适配表,对源语言语法树进行语法语义翻译转换,构建目标语言语法树,其中,智能适配表用于基于不同目标语言的运行环境数据,预判出不同的影响翻译转换的关键因素;以及
目标生成模块540,用于基于目标语言语法树,生成目标语言文件。
需要说明的是,本公开的实施例中编程语言智能适配装置部分与本公开的实施例中编程语言智能适配方法部分是相对应的,编程语言智能适配装置部分的描述具体参考编程语言智能适配方法部分,在此不再赘述。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,预处理模块510、语法解析模块520、翻译转换模块530和目标生成模块540中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,预处理模块510、语法解析模块520、翻译转换模块530和目标生成模块540中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,预处理模块510、语法解析模块520、翻译转换模块530和目标生成模块540中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图6示意性示出了根据本发明实施例的电子设备的框图。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600包括处理器610、计算机可读存储介质620。该电子设备600可以执行根据本公开实施例的方法。
具体地,处理器610例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器610还可以包括用于缓存用途的板载存储器。处理器610可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质620,例如可以是非易失性的计算机可读存储介质,具体示例包括但不限于:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;等等。
计算机可读存储介质620可以包括计算机程序621,该计算机程序621可以包括代码/计算机可执行指令,其在由处理器610执行时使得处理器610执行根据本公开实施例的方法或其任何变形。
计算机程序621可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序621中的代码可以包括一个或多个程序模块,例如包括621A、模块621B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器610执行时,使得处理器610可以执行根据本公开实施例的方法或其任何变形。
根据本公开的实施例,预处理模块510、语法解析模块520、翻译转换模块530和目标生成模块540中的至少一个可以实现为参考图6描述的计算机程序模块,其在被处理器610执行时,可以实现上面描述的相应操作。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被处理器执行时,实现根据本公开实施例的方法。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (7)

1.一种编程语言智能适配方法,用于将源语言转换为目标语言,其特征在于,包括:
将接收到的源语言文件转换为源语言文本,提取所述源语言和目标语言各自所处的运行环境数据;
根据接收到的源语言对应的语法解析规则,结合所述源语言文本和运行环境数据,构建源语言语法树;
根据预先创建的智能适配表,对所述源语言语法树进行语法语义翻译转换,构建目标语言语法树,其中,所述智能适配表用于基于不同目标语言的运行环境数据,预判出不同的影响翻译转换的关键因素,所述关键因素包括:目标语言的数据库类型,和/或目标数据库内置函数的转换需求;以及
基于所述目标语言语法树,生成目标语言文件;
其中,所述对所述源语言语法树进行语法语义翻译转换之前,还包括:
接收所述源语言与目标语言之间的对照关系文件,分析所述对照关系文件中的源语言和目标语言的语法语义对照关系,将所述语法语义对照关系以HashMap形式存储;
所述对所述源语言语法树进行语法语义翻译转换,包括:
采用深度优先遍历所述源语言语法树的各个节点,根据以HashMap形式存储的所述语法语义对照关系,将所述各个节点对应的代码文本进行语法语义翻译转换;
所述基于所述目标语言语法树,生成目标语言文件,包括:
以目标语言语法树的树根作为起点,采用前序遍历方式递归遍历所述目标语言语法树的各个节点,生成目标文件。
2.根据权利要求1所述的编程语言智能适配方法,其特征在于,所述构建源语言语法树,包括:
采用antlr开源工具将所述源语言生成为源语言语法树。
3.根据权利要求1所述的编程语言智能适配方法,其特征在于,所述对所述源语言语法树进行语法语义翻译转换之前,还包括:
将所述运行环境数据以HashMap形式存储。
4.根据权利要求1所述的编程语言智能适配方法,其特征在于,所述采用前序遍历方式递归遍历所述目标语言语法树的各个节点,还包括递归执行以下步骤:
遍历所述目标语言语法树的各个节点,判断当前节点是否为叶子结点;
若所述当前节点是叶子结点,则将当前节点翻译为对应的节点文本;
否则,若所述当前节点不是叶子结点,继续遍历当前节点的孩子节点,得到孩子节点的翻译结果,并结合所述孩子节点的翻译结果,将当前节点的内容翻译为对应的节点文本。
5.一种编程语言智能适配装置,其特征在于,包括:
预处理模块,用于将接收到的源语言文件转换为源语言文本,提取所述源语言和目标语言各自所处的运行环境数据;
语法解析模块,用于根据接收到的源语言对应的语法解析规则,结合所述源语言文本和运行环境数据,构建源语言语法树;
翻译转换模块,用于根据预先创建的智能适配表,对所述源语言语法树进行语法语义翻译转换,构建目标语言语法树,其中,所述智能适配表用于基于不同目标语言的运行环境数据,预判出不同的影响翻译转换的关键因素,所述关键因素包括:目标语言的数据库类型,和/或目标数据库内置函数的转换需求;以及
目标生成模块,用于基于所述目标语言语法树,生成目标语言文件;
所述对所述源语言语法树进行语法语义翻译转换之前,还包括:
接收所述源语言与目标语言之间的对照关系文件,分析所述对照关系文件中的源语言和目标语言的语法语义对照关系,将所述语法语义对照关系以HashMap形式存储;
所述对所述源语言语法树进行语法语义翻译转换,包括:
采用深度优先遍历所述源语言语法树的各个节点,根据以HashMap形式存储的所述语法语义对照关系,将所述各个节点对应的代码文本进行语法语义翻译转换;
所述基于所述目标语言语法树,生成目标语言文件,包括:
以目标语言语法树的树根作为起点,采用前序遍历方式递归遍历所述目标语言语法树的各个节点,生成目标文件。
6.一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至4中任一项所述的方法。
7.一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被处理器执行时用于实现权利要求1至4中任一项所述的方法。
CN202110358681.9A 2021-04-01 2021-04-01 编程语言智能适配方法、装置、电子设备和介质 Active CN112988163B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110358681.9A CN112988163B (zh) 2021-04-01 2021-04-01 编程语言智能适配方法、装置、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110358681.9A CN112988163B (zh) 2021-04-01 2021-04-01 编程语言智能适配方法、装置、电子设备和介质

Publications (2)

Publication Number Publication Date
CN112988163A CN112988163A (zh) 2021-06-18
CN112988163B true CN112988163B (zh) 2024-02-02

Family

ID=76338964

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110358681.9A Active CN112988163B (zh) 2021-04-01 2021-04-01 编程语言智能适配方法、装置、电子设备和介质

Country Status (1)

Country Link
CN (1) CN112988163B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115390852A (zh) * 2022-08-26 2022-11-25 支付宝(杭州)信息技术有限公司 一种生成统一抽象语法树与程序分析的方法和装置
CN115951890B (zh) * 2023-03-10 2023-05-12 成都数之联科技股份有限公司 一种不同前端框架间的代码转换方法及系统及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651165A (zh) * 2020-05-18 2020-09-11 深圳市大富网络技术有限公司 编程语言的集成方法、编程软件系统和电子装置
CN112104709A (zh) * 2020-08-28 2020-12-18 腾讯科技(深圳)有限公司 智能合约的处理方法、装置、介质及电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959477B2 (en) * 2011-10-21 2015-02-17 Sap Se Scripting language for business applications
CA3074370A1 (en) * 2019-03-04 2020-09-04 Next Pathway Inc. System and method for source code translation using stream expressions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651165A (zh) * 2020-05-18 2020-09-11 深圳市大富网络技术有限公司 编程语言的集成方法、编程软件系统和电子装置
CN112104709A (zh) * 2020-08-28 2020-12-18 腾讯科技(深圳)有限公司 智能合约的处理方法、装置、介质及电子设备

Also Published As

Publication number Publication date
CN112988163A (zh) 2021-06-18

Similar Documents

Publication Publication Date Title
US11334692B2 (en) Extracting a knowledge graph from program source code
CN106227668B (zh) 数据处理方法和装置
US9122540B2 (en) Transformation of computer programs and eliminating errors
CN110442330B (zh) 列表组件转换方法、装置、电子设备及存储介质
CN110502227B (zh) 代码补全的方法及装置、存储介质、电子设备
CN112988163B (zh) 编程语言智能适配方法、装置、电子设备和介质
CN111078729B (zh) 医疗数据溯源方法、装置、系统、存储介质以及电子设备
CN111221842A (zh) 大数据处理系统及方法
CN113901083B (zh) 基于多解析器的异构数据源操作资源解析定位方法和设备
CN113504900A (zh) 一种编程语言转换方法和装置
CN115509514B (zh) 一种前端数据模拟方法、装置、设备及介质
CN111309751A (zh) 大数据处理方法及装置
CN108563561B (zh) 一种程序隐性约束提取方法及系统
US11573790B2 (en) Generation of knowledge graphs based on repositories of code
CN113391817B (zh) 基于antlr4的头文件替换方法及装置
WO2021259290A1 (zh) 存储过程转换方法、装置、设备和存储介质
US11500619B1 (en) Indexing and accessing source code snippets contained in documents
CN114780100A (zh) 编译方法、电子设备及存储介质
US10642714B2 (en) Mapping dynamic analysis data to source code
CN117008920A (zh) 引擎系统、请求处理方法、装置、计算机设备及存储介质
CN113467828B (zh) 一种异构众核处理器中编程语言转换方法和系统
CN115221047A (zh) 测试用例自动生成方法及电子设备
CN115292347A (zh) 一种基于规则的主动式sql算法性能检查装置及方法
CN112035416A (zh) 数据血缘分析方法、装置、电子设备及存储介质
Grigorev et al. String-embedded language support in integrated development environment

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
GR01 Patent grant
GR01 Patent grant