代码转换方法及装置制造方法及图纸

技术编号:24330591 阅读:23 留言:0更新日期:2020-05-29 19:28
本发明专利技术实施例公开了一种代码转换方法及装置,其中,该方法包括:获取源代码文件;根据所述源代码文件的语法结构信息将所述源代码文件编译成抽象语法树AST,其中,所述语法结构信息至少包括:所述源代码文件的语法,所述源代码文件的格式,所述源代码文件的标签;将所述AST发送至目标平台,其中,所述目标平台用于将所述AST转换为所述目标平台的目标代码。通过本发明专利技术实施例,解决了相关技术中不同平台的代码不兼容的技术问题,从而降低了不同平台代码开发、维护成本。

Code conversion method and device

【技术实现步骤摘要】
代码转换方法及装置
本专利技术涉及计算机领域,具体而言,涉及一种代码转换方法及装置。
技术介绍
目前,不同操作系统或者平台下的可执行文件格式可能不同,导致通用的业务代码无法在不同操作系统或者平台上运行,增加了代码开发成本和维护成本。相关技术中,通过设计一种开源的小程序框架,将一套代码转化成不同小程序端和客户端的框架;执行对应的打包命令之后,执行多端的代码编译;在编译过程中,首先将代码解析成抽象语法树,然后对抽象语法树进行遍历和替换,最后生成新的抽象语法树来适配各种平台,然而该方法只能针对特定的平台,没有通用性。还有的通过嵌入代码转换工具,将特定的高版本语法转换成低版本平台支持的语法,该方法不仅增加了平台的耦合性和负荷,也没有通用性。针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。
技术实现思路
为了解决相关技术中不同平台的代码不兼容的技术问题,本专利技术提供了一种代码转换方法及装置。根据本专利技术的一个实施例,提供了一种代码转换方法,包括:获取源代码文件;根据所述源代码文件的语法结构信息将所述源代码文件编译成抽象语法树AST,其中,所述语法结构信息至少包括:所述源代码文件的语法,所述源代码文件的格式,所述源代码文件的标签;将所述AST发送至多个目标平台,其中,所述目标平台用于将所述AST转换为所述目标平台的目标代码。可选的,根据所述源代码文件的语法结构信息将所述源代码文件编译成抽象语法树AST包括:识别所述源代码文件的语法结构信息;根据所述语法结构信息构建所述AST。可选的,识别所述源代码文件的语法结构信息包括:根据预设环境变量在所述源代码文件的config配置文件夹中选择目标配置文件夹,其中,所述config配置文件夹至少包括:开发环境配置文件夹,产品环境配置文件夹,测试环境配置文件夹;读取所述目标配置文件夹中的依赖文件中的字符串;根据所述字符串的字符特征识别所述源代码文件的语法结构信息。可选的,根据所述语法结构信息构建所述AST包括:在启动编译所述源代码文件的编译命令时,确定起始文件,其中,所述编译命令携带有所述目标平台的平台名称;从所述起始文件开始构建所述AST。可选的,确定起始文件包括:执行所述源代码文件中目标配置文件夹的配置文件,以查找所述配置文件中的索引文件;将所述索引文件作为所述起始文件。可选的,从所述起始文件开始构建所述AST包括:将所述起始文件作为依赖进行编译,以查找所述源代码文件中除所述起始文件之外的依赖文件;将所述依赖文件中语法结构信息的字符串转换为Token序列,其中,所述Token序列中的每个字符串对应一个树节点;将所述Token序列转换成所述AST,其中,所述AST中的每个树节点对应所述目标代码中的一个字符串。根据本专利技术的另一个实施例,提供了一种代码转换方法,包括:接收源平台发送的抽象语法树AST,其中,所述AST是由所述源平台基于源代码文件的语法结构信息编译而成,所述语法结构信息至少包括:所述源代码文件的语法,所述源代码文件的格式,所述源代码文件的标签;将所述AST转换为目标平台的目标代码。可选的,将所述AST转换为目标平台的目标代码包括:读取所述AST的字符串;根据所述字符串的字符特征比较所述AST与所述目标平台之间的语法差异信息,其中,所述语法差异信息至少包括:所述目标平台的语法标签,所述目标平台的语法属性,所述目标平台的语法格式;根据所述语法差异信息将所述AST转换为所述目标平台适用的目标代码。根据本专利技术的一个实施例,提供了一种代码转换装置,包括:获取模块,用于获取源代码文件;转换模块,用于根据所述源代码文件的语法结构信息将所述源代码文件编译成抽象语法树AST,其中,所述语法结构信息至少包括:所述源代码文件的语法,所述源代码文件的格式,所述源代码文件的标签;发送模块,用于将所述AST发送至多个目标平台,其中,所述目标平台用于将所述AST转换为所述目标平台的目标代码。可选的,所述转换模块,具体用于:识别所述源代码文件的语法结构信息;根据所述语法结构信息构建所述AST。可选的,所述转换模块用于识别所述源代码文件的语法结构信息时,具体用于:根据预设环境变量在所述源代码文件的config配置文件夹中选择目标配置文件夹,其中,所述config配置文件夹至少包括:开发环境配置文件夹,产品环境配置文件夹,测试环境配置文件夹;读取所述目标配置文件夹中的依赖文件中的字符串;根据所述字符串的字符特征识别所述源代码文件的语法结构信息。可选的,所述转换模块用于根据所述语法结构信息构建所述AST时,具体用于:在启动编译所述源代码文件的编译命令时,确定起始文件,其中,所述编译命令携带有所述目标平台的平台名称;从所述起始文件开始构建所述AST。可选的,所述转换模块用于确定起始文件时,具体用于:执行所述源代码文件中目标配置文件夹的配置文件,以查找所述配置文件中的索引文件;将所述索引文件作为所述起始文件。可选的,所述转换模块用于从所述起始文件开始构建所述AST时,具体用于:将所述起始文件作为依赖进行编译,以查找所述源代码文件中除所述起始文件之外的依赖文件;将所述依赖文件中语法结构信息的字符串转换为Token序列,其中,所述Token序列中的每个字符串对应一个树节点;将所述Token序列转换成所述AST,其中,所述AST中的每个树节点对应所述目标代码中的一个字符串。根据本专利技术的另一个实施例,提供了一种代码转换装置,包括:接收模块,用于接收源平台发送的抽象语法树AST,其中,所述AST是由所述源平台基于源代码文件的语法结构信息编译而成,所述语法结构信息至少包括:所述源代码文件的语法,所述源代码文件的格式,所述源代码文件的标签;转换模块,用于将所述AST转换为目标平台的目标代码。可选的,所述转换模块,具体用于:读取所述AST的字符串;根据所述字符串的字符特征比较所述AST与所述目标平台之间的语法差异信息,其中,所述语法差异信息至少包括:所述目标平台的语法标签,所述目标平台的语法属性,所述目标平台的语法格式;根据所述语法差异信息将所述AST转换为所述目标平台适用的目标代码。根据本专利技术的又一个实施例,还提供了一种代码转换系统,包括:源平台和多个目标平台,其中,所述源平台包括:获取模块,用于获取源代码文件;第一转换模块,用于根据所述源代码文件的语法结构信息将所述源代码文件编译成抽象语法树AST,其中,所述语法结构信息至少包括:所述源代码文件的语法,所述源代码文件的格式,所述源代码文件的标签;发送模块,用于将所述AST发送至多个目标平台;所述目标平台包括:接收模块,用于接收所述AST;第二转换模块,用于将所述AST转换为所述目标平台的目标代码。根据本专利技术的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。根据本专利技术的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存本文档来自技高网...

【技术保护点】
1.一种代码转换方法,其特征在于,包括:/n获取源代码文件;/n根据所述源代码文件的语法结构信息将所述源代码文件编译成抽象语法树AST,其中,所述语法结构信息至少包括:所述源代码文件的语法,所述源代码文件的格式,所述源代码文件的标签;/n将所述AST发送至多个目标平台,其中,所述目标平台用于将所述AST转换为所述目标平台的目标代码。/n

【技术特征摘要】
1.一种代码转换方法,其特征在于,包括:
获取源代码文件;
根据所述源代码文件的语法结构信息将所述源代码文件编译成抽象语法树AST,其中,所述语法结构信息至少包括:所述源代码文件的语法,所述源代码文件的格式,所述源代码文件的标签;
将所述AST发送至多个目标平台,其中,所述目标平台用于将所述AST转换为所述目标平台的目标代码。


2.根据权利要求1所述的方法,其特征在于,根据所述源代码文件的语法结构信息将所述源代码文件编译成抽象语法树AST包括:
识别所述源代码文件的语法结构信息;
根据所述语法结构信息构建所述AST。


3.根据权利要求2所述的方法,其特征在于,识别所述源代码文件的语法结构信息包括:
根据预设环境变量在所述源代码文件的config配置文件夹中选择目标配置文件夹,其中,所述config配置文件夹至少包括:开发环境配置文件夹,产品环境配置文件夹,测试环境配置文件夹;
读取所述目标配置文件夹中的依赖文件中的字符串;
根据所述字符串的字符特征识别所述源代码文件的语法结构信息。


4.根据权利要求2所述的方法,其特征在于,根据所述语法结构信息构建所述AST包括:
在启动编译所述源代码文件的编译命令时,确定起始文件,其中,所述编译命令携带有所述目标平台的平台名称;
从所述起始文件开始构建所述AST。


5.根据权利要求4所述的方法,其特征在于,确定起始文件包括:
执行所述源代码文件中目标配置文件夹的配置文件,以查找所述配置文件中的索引文件;
将所述索引文件作为所述起始文件。


6.根据权利要求4所述的方法,其特征在于,从所述起始文件开始构建所述AST包括:
将所述起始文件作为依赖进行编译,以查找所述源代码文件中除所述起始文件之外的依赖文件;
将所述依赖文件中语法结构信息的字符串转换为Token序列,其中,所述Token序列中的每个字符串对应一个树节点;
将所述Token序列转换成所述AST,其中,所述AST中的每个树节点对应所述目标代码中的一个字符串。


7.一种代码转换方法,其特征在于,包括:
接收源平台发送的抽象语法树AST,其中,所述AST是由所述源平台基于源代码文件的语法结构信息编译而成,所述语法结构信息至少包括:所述源代码文件的语法,所述源代码文件的格式,所述源代码文件的标签;
将所述AST转换为目标平台的目标代码。


8.根据权利要求7所述的方法,其特征在于,将所述AST转换为目标平台的目标代码包括:
读取所述AST的字符串;
根据所述字符串的字符特征比较所述AST与所述目标平台之间的语法差异信息,其中,所述语法差异信息至少包括:所述目标平台的语法标签,所述目标平台的语法属性,所述目标平台的语法格式;
根据所述语法差异信息将所述AST转换为所述目标平台适用的目标代码。


9.一种代码转换装置,其特征在于,包括:
获取模块,用于获取源代码文件;
转换模块,用于根据所述源代码文件的语法结构信息将所述源代码文件编译成抽象语法树AST,其中,所述语法结构信息至少包括:所述源代码文件的语法,所述源代码文件的格式,所述源代码文件的标签;
发送模块,用于将所...

【专利技术属性】
技术研发人员:刘恒
申请(专利权)人:北京健康之家科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1