CN114489670A - 数据处理方法、装置、设备及存储介质 - Google Patents
数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114489670A CN114489670A CN202210042645.6A CN202210042645A CN114489670A CN 114489670 A CN114489670 A CN 114489670A CN 202210042645 A CN202210042645 A CN 202210042645A CN 114489670 A CN114489670 A CN 114489670A
- Authority
- CN
- China
- Prior art keywords
- target
- source code
- code file
- nodes
- syntax 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.)
- Pending
Links
Images
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/427—Parsing
Abstract
本公开提供一种数据处理方法、装置、设备及存储介质。在本公开的一些实施例中,对原始源代码文件进行语法结构解析,得到抽象语法树;遍历抽象语法树,得到多个语法节点的名称和数据类型;利用多个语法节点的名称和数据类型,自动将原始源代码文件转换为目标源代码文件,本公开将当前源代码文件自动转换成所需的目标源代码文件,避免了手动编写目标语言代码耗时耗力的问题,提高了源代码文件的开发效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。
背景技术
随着互联网技术的快速发展,各个系统应运而生。
目前,对于Android项目中的网络数据模型类,将其改造为其他语言项目时,需要根据现有Android中定义的网络数据模型类手动编写相应语言的网络数据模型类,当网络接口返回的数据中包含海量字段时,对于现有Android系统的代码将其映射为对应语言的模型代码时,需要手动编写对应语言的代码,源代码文件的开发效率低下。
发明内容
本公开提供一种数据处理方法、装置、设备及存储介质,以至少解决现有重复手动编写语言的数据模型类效率较低的问题。本公开的技术方案如下:
本公开实施例提供一种数据处理方法,包括:
获取原始源代码文件;
对所述原始源代码文件进行语法结构解析,得到抽象语法树,其中,所述抽象语法树包括多个语法节点;
遍历所述抽象语法树,得到所述多个语法节点的名称和数据类型;
根据所述多个语法节点的名称和数据类型,将所述原始源代码文件转换为目标源代码文件。
可选地,所述获取原始源代码文件,包括:
接收用户终端发送的代码转换请求;
解析代码转换请求中携带的报文信息,得到所述原始源代码文件的存储位置;
向所述用户终端发送数据获取请求,以供用户终端根据所述数据获取请求,查询所述原始源代码文件,其中,所述数据获取请求携带有所述原始源代码文件的存储位置;
接收用户终端返回的所述原始源代码文件。
可选地,所述对所述原始源代码文件进行语法结构解析,得到抽象语法树,包括:
调用预设函数读取所述源代码文件,得到多个字符;
将所述多个字符与预设字符进行比较,得到多个标记序列;
对所述多个标记序列进行语法分析,得到多个原始代码结构;
确定所述多个标记序列在所述源代码文件中的序列位置;
根据所述序列位置对所述多个原始代码结构进行节点关系构建,得到所述抽象语法树。
可选地,所述原始源代码文件为java源文件,所述对所述原始源代码文件进行语法结构解析,得到抽象语法树,包括:
利用开源IntelliJ IDEA开发集成环境平台中的Psi插件进行语法结构解析,得到所述抽象语法树。
可选地,所述根据所述多个语法节点的名称和数据类型,将所述原始源代码文件转换为目标源代码文件,包括:
获取所述目标源代码文件的语言类型;
根据所述目标源代码文件的语言类型、所述多个语法节点的名称和所述多个语法节点的数据类型,确定所述目标源代码文件对应的目标代码结构;
根据所述目标代码结构对所述抽象语法树进行处理,得到目标语法树;
对所述目标语法树进行代码转换操作,得到所述目标源代码文件。
可选地,根据所述目标源代码文件的语言类型、所述多个语法节点的名称和所述多个语法节点的数据类型,确定所述目标源代码文件对应的目标代码结构,包括:
从所述抽象语法树中获取与所述原始源代码文件对应的原始代码结构;
根据所述目标源代码文件的语言类型、所述多个语法节点的名称和所述多个语法节点的数据类型,查询预设的所述目标源代码文件与所述原始源代码文件的语言类型、语法节点的名称、语法节点的数据类型和代码字段的映射关系,得到所述原始代码结构中的代码字段对应的目标字段;
利用所述目标字段替换所述原始代码结构中的代码字段,得到所述目标代码结构。
可选地,根据所述目标代码结构对所述抽象语法树进行处理,得到目标语法树,包括:
确定所述目标代码结构在抽象语法树中的目标位置;
将所述目标代码结构写入所述抽象语法树中的所述目标位置,得到所述目标语法树。
可选地,对所述目标语法树进行代码转换操作,得到所述目标源代码文件,包括:
获取所述目标语法树的多个目标节点;
对所述多个目标节点进行代码化操作,得到所述多个目标节点对应的代码片段;
根据所述多个目标节点在所述目标语法树中的位置,对所述多个目标节点对应的代码片段进行拼接,得到所述目标源代码文件。
本公开实施例提供一种数据处理装置,包括:
获取模块,用于获取原始源代码文件;
解析模块,用于对所述原始源代码文件进行语法结构解析,得到抽象语法树,其中,所述抽象语法树包括多个语法节点;
遍历模块,用于遍历所述抽象语法树,得到所述多个语法节点的名称和数据类型;
转换模块,用于根据所述多个语法节点的名称和数据类型,将所述原始源代码文件转换为目标源代码文件。
可选地,所述获取模块,包括:第一接收子模块,解析子模块,查询子模块和第二接收子模块;
所述第一接收子模块,用于接收用户终端发送的代码转换请求;
所述解析子模块,用于解析代码转换请求中携带的报文信息,得到所述原始源代码文件的存储位置;
所述查询子模块,用于向所述用户终端发送数据获取请求,以供用户终端根据所述数据获取请求,查询所述原始源代码文件,其中,所述数据获取请求携带有所述原始源代码文件的存储位置;
所述第二接收子模块,接收用户终端返回的所述原始源代码文件。
可选地,所述解析模块,包括:调用子模块,比较子模块,分析子模块,第一确定子模块和构建子模块;
所述调用子模块,用于调用预设函数读取所述源代码文件,得到多个字符;
所述比较子模块,用于将所述多个字符与预设字符进行比较,得到多个标记序列;
所述分析子模块,用于对所述多个标记序列进行语法分析,得到多个原始代码结构;
所述第一确定子模块,用于确定所述多个标记序列在所述源代码文件中的序列位置;
所述构建子模块,用于根据所述序列位置对所述多个原始代码结构进行节点关系构建,得到所述抽象语法树。
可选地,所述原始源代码文件为java源文件,所述解析模块,在对所述原始源代码文件进行语法结构解析得到抽象语法树时,用于利用开源IntelliJ IDEA开发集成环境平台中的Psi插件进行语法结构解析时,得到所述抽象语法树。
可选地,所述转换模块,包括:获取子模块,第二确定子模块,处理子模块和转换子模块;
所述获取子模块,用于获取所述目标源代码文件的语言类型;
所述第二确定子模块,用于根据所述目标源代码文件的语言类型、所述多个语法节点的名称和所述多个语法节点的数据类型,确定所述目标源代码文件对应的目标代码结构;
所述处理子模块,用于根据所述目标代码结构对所述抽象语法树进行处理,得到目标语法树;
所述转换子模块,用于对所述目标语法树进行代码转换操作,得到所述目标源代码文件。
可选地,所述第二确定子模块,在根据所述目标源代码文件的语言类型、所述多个语法节点的名称和所述多个语法节点的数据类型,确定所述目标源代码文件对应的目标代码结构时,用于从所述抽象语法树中获取与所述原始源代码文件对应的原始代码结构;根据所述目标源代码文件的语言类型、所述多个语法节点的名称和所述多个语法节点的数据类型,查询预设的所述目标源代码文件与所述原始源代码文件的语言类型、语法节点的名称、语法节点的数据类型和代码字段的映射关系,得到所述原始代码结构中的代码字段对应的目标字段;利用所述目标字段替换所述原始代码结构中的代码字段,得到所述目标代码结构。
可选地,所述处理子模块,在根据所述目标代码结构对所述抽象语法树进行处理,得到目标语法树时,用于:确定所述目标代码结构在抽象语法树中的目标位置;将所述目标代码结构写入所述抽象语法树中的所述目标位置,得到所述目标语法树。
可选地,所述转换子模块,在对所述目标语法树进行代码转换操作,得到所述目标源代码文件时,用于获取所述目标语法树的多个目标节点;对所述多个目标节点进行代码化操作,得到所述多个目标节点对应的代码片段;根据所述多个目标节点在所述目标语法树中的位置,对所述多个目标节点对应的代码片段进行拼接,得到所述目标源代码文件。
本公开实施例还提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述所述方法中的各步骤。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
在本公开的一些实施例中,对原始源代码文件进行语法结构解析,得到抽象语法树;遍历抽象语法树,得到多个语法节点的名称和数据类型;利用多个语法节点的名称和数据类型,自动将原始源代码文件转换为目标源代码文件,本公开将当前源代码文件自动转换成所需的目标源代码文件,避免了手动编写目标语言代码耗时耗力的问题,提高了源代码文件的开发效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1为本公开示例性实施例提供的一种数据处理方法的流程示意图;
图2为本公开示例性实施例提供的一种抽象语法树生成方法的流程示意图;
图3为本公开示例性实施例提供的一种代码文件转换方法的流程示意图;
图4为本公开示例性实施例提供的另一种数据处理方法的流程示意图;
图5a为本公开示例性实施例提供的一种数据处理装置的结构示意图;
图5b为本公开示例性实施例提供的另一种数据处理装置的结构示意图;
图5c为本公开示例性实施例提供的另一种数据处理装置的结构示意图;
图5d为本公开示例性实施例提供的另一种数据处理装置的结构示意图;
图6为本公开示例性实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
当网络接口返回的数据中包含海量字段时,对于现有Android系统的代码将其映射为对应语言的模型代码时,需要手动编写对应语言的代码,源代码文件的开发效率低下。
针对上述存在的技术问题,在本公开的一些实施例中,获取原始源代码文件;对原始源代码文件进行语法结构解析,得到抽象语法树,其中,抽象语法树包括多个语法节点;遍历抽象语法树,得到多个语法节点的名称和数据类型;根据多个语法节点的名称和数据类型,将原始源代码文件转换为目标源代码文件,从而将网络对象类自动转换为目标语言类,避免了手动编写目标语言代码耗时耗力的问题,提高了源代码文件的开发效率。
以下结合附图,详细说明本公开各实施例提供的技术方案。
图1为本公开示例性实施例提供的一种数据处理方法的流程示意图。如图1所示,该方法包括:
S101:获取原始源代码文件;
S102:对原始源代码文件进行语法结构解析,得到抽象语法树,其中,抽象语法树包括多个语法节点;
S103:遍历抽象语法树,得到多个语法节点的名称和数据类型;
S104:根据多个语法节点的名称和数据类型,将原始源代码文件转换为目标源代码文件。
在本实施例中,上述数据处理方法应用于一个或者多个电子设备中,电子设备是一种能够按照事先设定或存储的计算机可读指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
需要说明的是,电子设备可以是任何一种可与用户进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、游戏机、交互式网络电视(Internet Protocol Television,IPTV)、智能穿戴式设备等。
电子设备可以包括网络设备和/或用户设备。其中,网络设备包括,但不限于单个网络电子设备、多个网络电子设备组成的电子设备组或基于云计算(Cloud Computing)的由大量主机或网络电子设备构成的云。
电子设备所处的网络包括,但不限于:互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
需要说明的是,源代码文件是指需要进行代码转换的程序代码。
需要说明的是,抽象语法树(abstract syntax tree,AST),简称语法树(syntaxtree),是对编程语言源程序的语法结构的一种树形表示形式,这里特指编程语言的源代码。语法树上的每个节点都代表源代码中的一种结构。每个具体的单词(由词法分析得到的)都在一个叶子节点上。根据抽象语法树的定义及规则,可以得到这个语句对应的语法树。
需要说明的是,语法节点的名称为所有源代码中对应的成员变量,数据类型包括基本类型和引用类型。
在上述实施例中,获取原始源代码文件,一种可实现的方式为接收用户终端发送的代码转换请求;解析代码转换请求中携带的报文信息,得到原始源代码文件的存储位置;向用户终端发送数据获取请求,以供用户终端根据数据获取请求,查询原始源代码文件,其中,数据获取请求携带有原始源代码文件的存储位置;接收用户终端返回的原始源代码文件。其中,报文信息中包括存储位置等,存储位置是指触发终端上的任意路径。
用户终端是指触发代码转换请求生成的终端,用户终端上存储有源代码文件。
例如,用户终端包括一电子显示屏,用户终端响应于用于通过电子显示屏发起的代码转换操作,向电子设备发送代码转换请求;电子设备接收代码转换请求,解析代码转换请求中携带的报文信息,得到原始源代码文件的存储位置;电子设备向用户终端发送数据获取请求,用来让用户终端根据数据获取请求查询原始源代码文件。
通过上述实施方式,由于解析报文信息中的源代码文件的存储位置的相应字段,获取原始源代码文件的存储位置,能够提高报文信息的获取效率,进而得到原始源代码文件的存储位置,此外,由于用户终端与存储位置能够唯一确定文件,因此,能够准确确定出源代码文件。
在上述实施例中,对原始源代码文件进行语法结构解析,得到抽象语法树,一种可实现的方式为调用预设函数读取源代码文件,得到多个字符;将多个字符与预设字符进行比较,得到多个标记序列;对多个标记序列进行语法分析,得到多个原始代码结构;确定多个标记序列在源代码文件中的序列位置;根据序列位置对多个原始代码结构进行节点关系构建,得到抽象语法树。
其中,预设函数是自定义的适用函数;多个字符是指从源代码文件中读取到的字符。
预设字符是指预先定义好的函数等,例如,预设字符为select;多个标记序列是指源代码文件中的每行代码。
原始代码结构是指源代码文件中的语法关系。
序列位置是指多个标记序列在源代码文件中的具体位置。
通过对源代码文件中的字符进行逐个读取,并且对多个标记序列进行语法分析,能够准确得到多个原始代码结构,进而通过多个标记序列在源代码文件中的序列位置,能够准确生成抽象语法树。
在本公开的至少一个实施例中,原始源代码文件可以为java源文件,对原始源代码文件进行语法结构解析,得到抽象语法树,包括:利用开源IntelliJ IDEA开发集成环境平台中的Psi插件进行语法结构解析,得到抽象语法树。
在上述实施例中,遍历抽象语法树,得到多个语法节点的名称和数据类型。其中,数据类型包括基本类型和引用类型。基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。基本数据类型,例如,Number、String、Boolean、Null和Undefined。引用数据类型,例如,Object、Array、Function、Data。
一种可选实施例为,电子设备利用已有的遍历算法对抽象语法树进行遍历,例如,电子设备采用广度优先遍历算法遍历抽象语法树,或者,电子设备采用深度优先遍历算法遍历抽象语法树。电子设备利用已有的遍历算法对抽象语法树包括的所有语法节点进行遍历,得到各语法节点的名称和数据类型。
在上述实施例中,根据多个语法节点的名称和数据类型,将原始源代码文件转换为目标源代码文件,一种可实现的方式为获取目标源代码文件的语言类型;根据目标源代码文件的语言类型、多个语法节点的名称和多个语法节点的数据类型,确定目标源代码文件对应的目标代码结构;根据目标代码结构对抽象语法树进行处理,得到目标语法树;对目标语法树进行代码转换操作,得到目标源代码文件。
其中,目标语法树是指与目标源代码文件对应的语法树;目标源代码文件是指进行代码转换后得到的程序代码文件。
例如,java中的源文件是classModel{string a;string b;}
经过转换目标语言为TS的时候就是interface Model{a:string;b:string}。
在一种示例性实施例中,根据目标源代码文件的语言类型、多个语法节点的名称和多个语法节点的数据类型,确定目标源代码文件对应的目标代码结构,一种可实现的方式为从抽象语法树中获取与原始源代码文件对应的原始代码结构;根据目标源代码文件的语言类型、多个语法节点的名称和多个语法节点的数据类型,查询预设的目标源代码文件与原始源代码文件的语言类型、语法节点的名称、语法节点的数据类型和代码字段的映射关系,得到原始代码结构中的代码字段对应的目标字段;利用目标字段替换原始代码结构中的代码字段,得到目标代码结构。其中,通过查询预设的目标源代码文件与原始源代码文件的语言类型、语法节点的名称、语法节点的数据类型和代码字段的映射关系,得到原始代码结构中的代码字段对应的目标字段,进而能够准确确定目标代码结构。
在另一种示例性实施例中,根据目标代码结构对抽象语法树进行处理,得到目标语法树,一种可实现的方式为确定目标代码结构在抽象语法树中的目标位置;将目标代码结构写入抽象语法树中的目标位置,得到目标语法树。通过对目标语法树进行重新构建,提高目标语法树的生成效率。
在另一种示例性实施例中,对目标语法树进行代码转换操作,得到目标源代码文件,一种可实现的方式为获取目标语法树的多个目标节点;对多个目标节点进行代码化操作,得到多个目标节点对应的代码片段;根据多个目标节点在目标语法树中的位置,对多个目标节点对应的代码片段进行拼接,得到目标源代码文件。其中,获取目标语法树包括的所有目标节点,对所有目标节点对应的代码片段进行反编译操作,得到所有目标节点对应的代码片段;根据所有目标节点对应的目标语法树中的位置,对所有目标节点对应的代码片段按照所有目标节点的逻辑顺序进行拼接,得到目标源代码文件。
在本公开的一些实施例中,对原始源代码文件进行语法结构解析,得到抽象语法树;遍历抽象语法树,得到多个语法节点的名称和数据类型;利用多个语法节点的名称和数据类型,自动将原始源代码文件转换为目标源代码文件,本公开将当前源代码文件自动转换成所需的目标源代码文件,避免了手动编写目标语言代码耗时耗力的问题,提高了源代码文件的开发效率。
基于上述各实施例的描述,图2为本公开示例性实施例提供的一种抽象语法树生成方法的流程示意图,如图2所示,该方法包括:
S201:调用预设函数读取源代码文件,得到多个字符;
S202:将多个字符与预设字符进行比较,得到多个标记序列;
S203:对多个标记序列进行语法分析,得到多个原始代码结构;
S204:确定多个标记序列在源代码文件中的序列位置;
S205:根据序列位置对多个原始代码结构进行节点关系构建,得到抽象语法树;
在本公开的一些实施例中,对原始源代码文件进行语法结构解析,得到抽象语法树;遍历抽象语法树,得到多个语法节点的名称和数据类型;利用多个语法节点的名称和数据类型,自动将原始源代码文件转换为目标源代码文件,本公开将当前源代码文件自动转换成所需的目标源代码文件,避免了手动编写目标语言代码耗时耗力的问题,提高了源代码文件的开发效率。
基于上述各实施例的描述,图3为本公开示例性实施例提供的一种代码文件转换方法的流程示意图。如图3所示,该方法包括:
S301:获取目标源代码文件的语言类型;
S302:根据目标源代码文件的语言类型、多个语法节点的名称和多个语法节点的数据类型,确定目标源代码文件对应的目标代码结构;
S303:根据目标代码结构对抽象语法树进行处理,得到目标语法树;
S304:对目标语法树进行代码转换操作,得到目标源代码文件。
在本公开的一些实施例中,对原始源代码文件进行语法结构解析,得到抽象语法树;遍历抽象语法树,得到多个语法节点的名称和数据类型;利用多个语法节点的名称和数据类型,自动将原始源代码文件转换为目标源代码文件,本公开将当前源代码文件自动转换成所需的目标源代码文件,避免了手动编写目标语言代码耗时耗力的问题,提高了源代码文件的开发效率。
基于上述各实施例的描述,图4为本公开示例性实施例提供的另一种数据处理方法的流程示意图,如图4所示,该方法包括:
S401:接收用户终端发送的原始源代码文件;
S402:对原始源代码文件进行语法结构解析,得到抽象语法树,其中,抽象语法树包括多个语法节点;
S403:遍历抽象语法树,得到多个语法节点的名称和数据类型;
S404:根据多个语法节点的名称和数据类型,将原始源代码文件转换为目标源代码文件。
在本公开的一些实施例中,对原始源代码文件进行语法结构解析,得到抽象语法树;遍历抽象语法树,得到多个语法节点的名称和数据类型;利用多个语法节点的名称和数据类型,自动将原始源代码文件转换为目标源代码文件,本公开将当前源代码文件自动转换成所需的目标源代码文件,避免了手动编写目标语言代码耗时耗力的问题,提高了源代码文件的开发效率。
图5a为本公开示例性实施例提供的一种数据处理装置50的结构框图。如图5a所示,该数据处理装置50包括:获取模块51,解析模块52,遍历模块53和转换模块54。
获取模块51,用于获取原始源代码文件;
解析模块52,用于对原始源代码文件进行语法结构解析,得到抽象语法树,其中,抽象语法树包括多个语法节点;
遍历模块53,用于遍历抽象语法树,得到多个语法节点的名称和数据类型;
转换模块54,用于根据多个语法节点的名称和数据类型,将原始源代码文件转换为目标源代码文件。
可选地,图5b为本公开示例性实施例提供的另一种数据处理装置的结构框图,如图5b所示,获取模块51包括:第一接收子模块511,解析子模块512,查询子模块513和第二接收子模块514;
第一接收子模块511,用于接收用户终端发送的代码转换请求;
解析子模块512,用于解析代码转换请求中携带的报文信息,得到原始源代码文件的存储位置;
查询子模块513,用于向用户终端发送数据获取请求,以供用户终端根据数据获取请求,查询原始源代码文件,其中,数据获取请求携带有原始源代码文件的存储位置;
第二接收子模块514,接收用户终端返回的原始源代码文件。
可选地,图5c为本公开示例性实施例提供的一种数据处理装置的结构框图,如图5c所示,解析模块52包括:调用子模块521,比较子模块522,分析子模块523,第一确定子模块524和构建子模块525;
调用子模块521,用于调用预设函数读取源代码文件,得到多个字符;
比较子模块522,用于将多个字符与预设字符进行比较,得到多个标记序列;
分析子模块523,用于对多个标记序列进行语法分析,得到多个原始代码结构;
第一确定子模块524,用于确定多个标记序列在源代码文件中的序列位置;
构建子模块525,用于根据序列位置对多个原始代码结构进行节点关系构建,得到抽象语法树。
可选地,原始源代码文件为java源文件,解析模块52在对原始源代码文件进行语法结构解析得到抽象语法树时,用于利用开源IntelliJ IDEA开发集成环境平台中的Psi插件进行语法结构解析时,得到抽象语法树。
可选地,图5d为本公开示例性实施例提供的一种数据处理装置的结构框图,如图5d所示,转换模块54包括:获取子模块541,第二确定子模块542,处理子模块543和转换子模块544;
获取子模块541,用于获取目标源代码文件的语言类型;
第二确定子模块542,用于根据目标源代码文件的语言类型、多个语法节点的名称和多个语法节点的数据类型,确定目标源代码文件对应的目标代码结构;
处理子模块543,用于根据目标代码结构对抽象语法树进行处理,得到目标语法树;
转换子模块544,用于对目标语法树进行代码转换操作,得到目标源代码文件。
可选地,第二确定子模块542,在根据目标源代码文件的语言类型、多个语法节点的名称和多个语法节点的数据类型,确定目标源代码文件对应的目标代码结构时,用于从抽象语法树中获取与原始源代码文件对应的原始代码结构;根据目标源代码文件的语言类型、多个语法节点的名称和多个语法节点的数据类型,查询预设的目标源代码文件与原始源代码文件的语言类型、语法节点的名称、语法节点的数据类型和代码字段的映射关系,得到原始代码结构中的代码字段对应的目标字段;利用目标字段替换原始代码结构中的代码字段,得到目标代码结构。
可选地,处理子模块543在根据目标代码结构对抽象语法树进行处理,得到目标语法树时,用于:确定目标代码结构在抽象语法树中的目标位置;将目标代码结构写入抽象语法树中的目标位置,得到目标语法树。
可选地,转换子模块544,在对目标语法树进行代码转换操作,得到目标源代码文件时,用于获取目标语法树的多个目标节点;对多个目标节点进行代码化操作,得到多个目标节点对应的代码片段;根据多个目标节点在目标语法树中的位置,对多个目标节点对应的代码片段进行拼接,得到目标源代码文件。
图6为本公开示例性实施例提供的一种电子设备的结构示意图。如图6所示,该电子设备包括:存储器601和处理器602。另外,该电子设备还包括电源组件603、通信组件604和显示屏605等必要组件。
存储器601,用于存储计算机程序,并可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于电子设备上操作的任何应用程序或方法的指令。
存储器601,可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
通信组件604,用于与其他设备进行数据传输。
处理器602,可执行存储器601中存储的计算机指令,以用于:
获取原始源代码文件;
对原始源代码文件进行语法结构解析,得到抽象语法树,其中,抽象语法树包括多个语法节点;
遍历抽象语法树,得到多个语法节点的名称和数据类型;
根据多个语法节点的名称和数据类型,将原始源代码文件转换为目标源代码文件。
可选地,处理器602在获取原始源代码文件,用于:
接收用户终端发送的代码转换请求;
解析代码转换请求中携带的报文信息,得到原始源代码文件的存储位置;
向用户终端发送数据获取请求,以供用户终端根据数据获取请求,查询原始源代码文件,其中,数据获取请求携带有原始源代码文件的存储位置;
接收用户终端返回的原始源代码文件。
可选地,处理器602在对原始源代码文件进行语法结构解析,得到抽象语法树,用于:
调用预设函数读取源代码文件,得到多个字符;
将多个字符与预设字符进行比较,得到多个标记序列;
对多个标记序列进行语法分析,得到多个原始代码结构;
确定多个标记序列在源代码文件中的序列位置;
根据序列位置对多个原始代码结构进行节点关系构建,得到抽象语法树。
可选地,原始源代码文件为java源文件,处理器602在对原始源代码文件进行语法结构解析得到抽象语法树时,用于利用开源IntelliJ IDEA开发集成环境平台中的Psi插件进行语法结构解析时,得到抽象语法树。
可选地,处理器602在根据多个语法节点的名称和数据类型,将原始源代码文件转换为目标源代码文件,用于:
获取目标源代码文件的语言类型;
根据目标源代码文件的语言类型、多个语法节点的名称和多个语法节点的数据类型,确定目标源代码文件对应的目标代码结构;
根据目标代码结构对抽象语法树进行处理,得到目标语法树;
对目标语法树进行代码转换操作,得到目标源代码文件。
可选地,处理器602在根据目标源代码文件的语言类型、多个语法节点的名称和多个语法节点的数据类型,确定目标源代码文件对应的目标代码结构时,用于:
从抽象语法树中获取与原始源代码文件对应的原始代码结构;
根据目标源代码文件的语言类型、多个语法节点的名称和多个语法节点的数据类型,查询预设的目标源代码文件与原始源代码文件的语言类型、语法节点的名称、语法节点的数据类型和代码字段的映射关系,得到原始代码结构中的代码字段对应的目标字段;
利用目标字段替换原始代码结构中的代码字段,得到目标代码结构。
可选地,处理器602在根据目标代码结构对抽象语法树进行处理,得到目标语法树,用于:
确定目标代码结构在抽象语法树中的目标位置;
将目标代码结构写入抽象语法树中的目标位置,得到目标语法树。
可选地,处理器602在对目标语法树进行代码转换操作,得到目标源代码文件,包括:
获取目标语法树的多个目标节点;
对多个目标节点进行代码化操作,得到多个目标节点对应的代码片段;
根据多个目标节点在目标语法树中的位置,对多个目标节点对应的代码片段进行拼接,得到目标源代码文件。
相应地,本公开实施例还提供一种存储有计算机程序的计算机可读存储介质。当计算机可读存储介质存储计算机程序,且计算机程序被一个或多个处理器执行时,致使一个或多个处理器执行图1方法实施例中的各步骤。
相应地,本公开实施例还提供一种计算机程序产品,计算机程序产品包括计算机程序/指令,计算机程序/指令被处理器执行图1的方法实施例中的各步骤。
上述图6中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述图6中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述图6中的显示屏包括屏幕,其屏幕可以包括液晶显示屏(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
上述电子设备还包括音频组件。
音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
在本公开的上述装置、设备、存储介质和程序产品实施例中,数据处理装置对原始源代码文件进行语法结构解析,得到抽象语法树;遍历抽象语法树,得到多个语法节点的名称和数据类型;利用多个语法节点的名称和数据类型,自动将原始源代码文件转换为目标源代码文件,本公开将当前源代码文件自动转换成所需的目标源代码文件,避免了手动编写目标语言代码耗时耗力的问题,提高了源代码文件的开发效率。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
获取原始源代码文件;
对所述原始源代码文件进行语法结构解析,得到抽象语法树,其中,所述抽象语法树包括多个语法节点;
遍历所述抽象语法树,得到所述多个语法节点的名称和数据类型;
根据所述多个语法节点的名称和数据类型,将所述原始源代码文件转换为目标源代码文件。
2.根据权利要求1所述的方法,其特征在于,所述获取原始源代码文件,包括:
接收用户终端发送的代码转换请求;
解析代码转换请求中携带的报文信息,得到所述原始源代码文件的存储位置;
向所述用户终端发送数据获取请求,以供用户终端根据所述数据获取请求,查询所述原始源代码文件,其中,所述数据获取请求携带有所述原始源代码文件的存储位置;
接收用户终端返回的所述原始源代码文件。
3.根据权利要求1所述的方法,其特征在于,所述对所述原始源代码文件进行语法结构解析,得到抽象语法树,包括:
调用预设函数读取所述源代码文件,得到多个字符;
将所述多个字符与预设字符进行比较,得到多个标记序列;
对所述多个标记序列进行语法分析,得到多个原始代码结构;
确定所述多个标记序列在所述源代码文件中的序列位置;
根据所述序列位置对所述多个原始代码结构进行节点关系构建,得到所述抽象语法树。
4.根据权利要求1所述的方法,其特征在于,所述根据所述多个语法节点的名称和数据类型,将所述原始源代码文件转换为目标源代码文件,包括:
获取所述目标源代码文件的语言类型;
根据所述目标源代码文件的语言类型、所述多个语法节点的名称和所述多个语法节点的数据类型,确定所述目标源代码文件对应的目标代码结构;
根据所述目标代码结构对所述抽象语法树进行处理,得到目标语法树;
对所述目标语法树进行代码转换操作,得到所述目标源代码文件。
5.根据权利要求4所述的方法,其特征在于,根据所述目标源代码文件的语言类型、所述多个语法节点的名称和所述多个语法节点的数据类型,确定所述目标源代码文件对应的目标代码结构,包括:
从所述抽象语法树中获取与所述原始源代码文件对应的原始代码结构;
根据所述目标源代码文件的语言类型、所述多个语法节点的名称和所述多个语法节点的数据类型,查询预设的所述目标源代码文件与所述原始源代码文件的语言类型、语法节点的名称、语法节点的数据类型和代码字段的映射关系,得到所述原始代码结构中的代码字段对应的目标字段;
利用所述目标字段替换所述原始代码结构中的代码字段,得到所述目标代码结构。
6.根据权利要求4所述的方法,其特征在于,根据所述目标代码结构对所述抽象语法树进行处理,得到目标语法树,包括:
确定所述目标代码结构在抽象语法树中的目标位置;
将所述目标代码结构写入所述抽象语法树中的所述目标位置,得到所述目标语法树。
7.根据权利要求4所述的方法,其特征在于,对所述目标语法树进行代码转换操作,得到所述目标源代码文件,包括:
获取所述目标语法树的多个目标节点;
对所述多个目标节点进行代码化操作,得到所述多个目标节点对应的代码片段;
根据所述多个目标节点在所述目标语法树中的位置,对所述多个目标节点对应的代码片段进行拼接,得到所述目标源代码文件。
8.一种数据处理装置,其特征在于,包括:
获取模块,用于获取原始源代码文件;
解析模块,用于对所述原始源代码文件进行语法结构解析,得到抽象语法树,其中,所述抽象语法树包括多个语法节点;
遍历模块,用于遍历所述抽象语法树,得到所述多个语法节点的名称和数据类型;
转换模块,用于根据所述多个语法节点的名称和数据类型,将所述原始源代码文件转换为目标源代码文件。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-7中任一项所述的方法中的各步骤。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法中的各步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210042645.6A CN114489670A (zh) | 2022-01-14 | 2022-01-14 | 数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210042645.6A CN114489670A (zh) | 2022-01-14 | 2022-01-14 | 数据处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114489670A true CN114489670A (zh) | 2022-05-13 |
Family
ID=81512582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210042645.6A Pending CN114489670A (zh) | 2022-01-14 | 2022-01-14 | 数据处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114489670A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115390852A (zh) * | 2022-08-26 | 2022-11-25 | 支付宝(杭州)信息技术有限公司 | 一种生成统一抽象语法树与程序分析的方法和装置 |
CN115795547A (zh) * | 2022-12-09 | 2023-03-14 | 京信数据科技有限公司 | 用于查询数据的方法、装置、终端及计算机存储介质 |
CN116954622A (zh) * | 2023-09-18 | 2023-10-27 | 北京云枢创新软件技术有限公司 | 抽象语法树和源代码坐标的关联方法、电子设备和介质 |
-
2022
- 2022-01-14 CN CN202210042645.6A patent/CN114489670A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115390852A (zh) * | 2022-08-26 | 2022-11-25 | 支付宝(杭州)信息技术有限公司 | 一种生成统一抽象语法树与程序分析的方法和装置 |
CN115795547A (zh) * | 2022-12-09 | 2023-03-14 | 京信数据科技有限公司 | 用于查询数据的方法、装置、终端及计算机存储介质 |
CN116954622A (zh) * | 2023-09-18 | 2023-10-27 | 北京云枢创新软件技术有限公司 | 抽象语法树和源代码坐标的关联方法、电子设备和介质 |
CN116954622B (zh) * | 2023-09-18 | 2023-12-15 | 北京云枢创新软件技术有限公司 | 抽象语法树和源代码坐标的关联方法、电子设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114489670A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN106569800B (zh) | 前端界面生成方法及装置 | |
CN111666526A (zh) | 页面生成方法、装置、设备及存储介质 | |
US20190147059A1 (en) | Method and apparatus for generating to-be-played multimedia content | |
CN104346127A (zh) | 语音输入的实现方法、装置及终端 | |
CN105701122A (zh) | 一种日志收集方法、装置及系统 | |
CN109255209A (zh) | 一种数据处理方法、装置、设备和存储介质 | |
CN111090582A (zh) | 错误代码定位方法、装置、存储介质及电子设备 | |
US20120204161A1 (en) | Automated Code Map Generation for an Application Programming Interface of a Programming Language | |
CN113434134B (zh) | 组件处理方法、装置、电子设备及存储介质 | |
CN110399384B (zh) | Udf适配方法、数据处理方法、设备及存储介质 | |
CN114095405A (zh) | 车辆功能单元测试方法、装置、电子设备及存储介质 | |
CN113162977B (zh) | 一种信息处理方法及装置、设备、存储介质 | |
CN114547514A (zh) | 组件动态渲染方法、装置、设备及介质 | |
CN110007922B (zh) | 基于人工智能的图形化源代码的编译方法、装置和设备 | |
CN113138796A (zh) | 代码生成方法及装置、电子设备和存储介质 | |
CN110716914A (zh) | 数据库配置方法、系统、计算机可读存储介质及终端设备 | |
CN116701601A (zh) | 人机交互的方法 | |
Hamza et al. | TCAIOSC: application code conversion | |
CN110659020A (zh) | 用于在多仓库环境下动态构建项目架构的实现方法、操作方法及装置 | |
CN113626321B (zh) | 桥接测试方法、装置、系统及存储介质 | |
CN115982204A (zh) | 查询语句转换方法、装置、电子设备和存储介质 | |
CN114385128A (zh) | 数据处理方法、设备、装置、存储介质及程序产品 | |
CN112559293B (zh) | 应用程序包的监控方法及装置 | |
CN111124721B (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 |