一种跨语言编译方法、系统及可读存储介质技术方案

技术编号:37875490 阅读:12 留言:0更新日期:2023-06-15 21:04
本发明专利技术涉及编程技术领域,具体提供了一种跨语言编译方法、系统及可读存储介质,所述方法包括:获取程序代码,其中,所述程序代码至少包括第一代码和第二代码,所述第一代码和第二代码分别由第一语言和第二语言编写;基于第一代码和第二代码生成中间程序代码,其中,中间程序代码包括第一代码和第二代码,所述第一代码和第二代码前均设置有语言指示器语句用以指示该段程序代码由何种语言编写,用于编译程序代码时采用相同类型的AST解析器解析;本发明专利技术实施例公开的跨语言编译方法能够使得不同语言编写的程序代码可以在同一项目中应用以实现跨语言编译的目的。实现跨语言编译的目的。实现跨语言编译的目的。

【技术实现步骤摘要】
一种跨语言编译方法、系统及可读存储介质


[0001]本专利技术涉及编程
,尤其涉及一种跨语言编译方法、系统及可读存储介质。

技术介绍

[0002]随着编程技术的发展,编程用的语言越多越多,例如C语言、C++语言、Java语言等,不同的语言不能共用,这就造成编程过程中造成很多麻烦。
[0003]例如,对于需要合作的项目而言,开发人员所掌握的编程语言是重要的,它决定了相关技术选型,具体实施方案,维护方案。如人员A掌握语言A,人员B掌握语言B,此时有项目采用语言A编写,则人员A可以参与研发,而人员B无法参与,在人员B比人员A更加适合该项目时,选择人员A参加该项目不如人员B,则对于项目的开展无法达到最优的效果。
[0004]又如,对于一种编程语言而言,是具有时效性的,当更好的编程语言面世时,旧的语言将被淘汰,但是由旧的语言开发的项目依然存在,并且出于各种原因无法被重写,也很难直接将新的语言用在之前的项目中,对于项目的维护产生困难。
[0005]基于上述原因,本申请提出了一种跨语言编译方法、系统及可读存储介质。

技术实现思路

[0006]本专利技术的目的在于提供一种跨语言编译方法、系统及可读存储介质,以解决目前的编程过程中不同的语言无法共用的问题。
[0007]为实现上述目的,本专利技术提供如下技术方案:一种跨语言编译方法,所述方法包括:获取程序代码,其中,所述程序代码至少包括第一代码和第二代码,所述第一代码和第二代码分别由第一语言和第二语言编写;基于第一代码和第二代码生成中间程序代码,其中,中间程序代码包括第一代码和第二代码,所述第一代码和第二代码前均设置有语言指示器语句用以指示该段程序代码由何种语言编写,用于编译程序代码时采用相同类型的AST解析器解析。
[0008]进一步的,还包括以下步骤:获取中间语言代码;基于中间语言代码中语言指示器语句获取下一段程序代码的语言类型;选取与下一段程序代码相对应的AST解析器解析该段程序代码,其中,在解析该段程序代码时,引用上一段程序代码的AST信息以共享上一段程序代码的内容。
[0009]进一步的,在获取第一代码和第二代码前,还包括以下步骤:获取操作系统类型及CPU架构类型;基于操作系统类型选取该操作系统下的用户界面及SDK框架。
[0010]进一步的,若第一代码或第二代码包含字节码语言,则生成中间程序代码前包括以下步骤:将包含字节码的第一代码或第二代码编译成字节码;
对于字节码进行解析,将其编译成原生代码,其中,原生代码是基于操作系统并且由CPU直接执行的代码;基于原生代码生成中间程序代码。
[0011]进一步的,若第一代码或第二代码包含Java字节码,则生成中间程序代码前包括以下步骤:通过J2CL将包含Java字节码的第一代码或第二代码转换为JavaScript语言的程序代码;基于JavaScript语言的程序代码生成中间程序代码。
[0012]优选的,在转换为JavaScript语言的程序代码时,若存在转换失败的内容,则输出编译失败。
[0013]本专利技术还公开了一种跨语言编译系统,所述系统包括:获取单元,用于获取程序代码;编译单元,用于生成中间程序代码。
[0014]进一步的,所述系统还包括:数据单元,用于存储程序代码内包含的内容以便于解析程序代码时引用。
[0015]进一步的,所述系统还包括:判断单元,用于判断操作系统类型和CPU架构类型。
[0016]本专利技术还公开了,一种可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器在运行计算机程序时实现上述任意一项所述的跨语言编译方法的步骤。
[0017]综上所述,本专利技术与现有技术相比具有以下有益效果:1、本专利技术实施例公开的跨语言编译方法通过将不同语言编写的程序代码合并成中间程序代码,并通过语言指示器语句指出程序代码由何种语言编写以用于在编译程序代码时采用相同类型的AST解析器解析,使得不同语言编写的程序代码可以在同一项目中应用以实现跨语言编译的目的。
[0018]2、本专利技术实施例公开的跨语言编译方法在编译中间程序代码时,将上一段程序代码的AST信息导入下一段程序代码的AST解析器中,使得上一段程序代码中的函数、变量和定义的方法等内容可以被下一段程序代码所引用,提高了不同语言之间的共用性。
附图说明
[0019]图1为本专利技术公开的跨语言编译方法的流程示意图。
[0020]图2为本专利技术公开的跨语言编译方法其中一个实施例的流程示意图。
[0021]图3为本专利技术公开的跨语言编译方法其中一个子程序的流程示意图。
[0022]图4为本专利技术公开的跨语言编译方法另一个子程序的流程示意图。
[0023]图5为本专利技术公开的跨语言编译方法又一个子程序的流程示意图。
[0024]图6为本专利技术公开的跨语言编译系统的结构框图。
具体实施方式
[0025]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例,基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0026]实施例1如图1所示,本专利技术的一个实施例提供的一种跨语言编译方法,所述方法包括:步骤S100、获取程序代码,其中,所述程序代码至少包括第一代码和第二代码,所述第一代码和第二代码分别由第一语言和第二语言编写;本申请实施例中所述的第一语言和第二语言泛指两种不同语言,所述第一代码指通过第一语言编写的程序代码,第二代码指的是通过第二语言编写的程序代码,需要说明的是,本申请中,所述程序代码还可以包括由第三语言编写的第三代码、由第四语言编写的第四代码等;在本申请实施例中,在进行编程时,首先获取程序代码,该程序代码由工作人员通过编程工具编写,程序代码以文本的方式存在或者由工作人员在用户界面输入;作为本实施例中一种优选的实施方式,在本实施例中,在获取程序代码前,还包括以下步骤:步骤S110、获取操作系统类型及CPU架构类型;步骤S120、基于操作系统类型选取该操作系统下的用户界面及SDK框架;工作人员在进行工作时是在终端设备上输入程序代码,因此,在获取程序代码时需要首先获取终端设备的系统类型及CPU架构类型,然后选取适配于该操作系统的用户界面框架及SDK框架,若不获取系统指定的用户界面框架及SDK框架,需要转换更多的代码,带来较高的成本,因此,在编程前,根据操作系统的类型以及CPU架构类型选取合适的用户界面以及SDK框架便于工作人员输入程序代码;在一些示例中,操作系统包括内核、硬件抽象层(hardware abstraction layer,HAL)、库和运行时(librariesand runtime)以及框架(framework)。其中,内核用于提供底层系统组件和服务,例如:电源管理、内存管理、线程管理、硬件驱动程序等;硬件驱动程序包括Wi本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种跨语言编译方法,其特征在于,所述方法包括:获取程序代码,其中,所述程序代码至少包括第一代码和第二代码,所述第一代码和第二代码分别由第一语言和第二语言编写;基于第一代码和第二代码生成中间程序代码,其中,中间程序代码包括第一代码和第二代码,所述第一代码和第二代码前均设置有语言指示器语句用以指示该段程序代码由何种语言编写,用于编译程序代码时采用相同类型的AST解析器解析。2.根据权利要求1所述的跨语言编译方法,其特征在于,还包括以下步骤:获取中间语言代码;基于中间语言代码中语言指示器语句获取下一段程序代码的语言类型;选取与下一段程序代码相对应的AST解析器解析该段程序代码,其中,在解析该段程序代码时,引用上一段程序代码的AST信息以共享上一段程序代码的内容。3.根据权利要求1或2所述的跨语言编译方法,其特征在于,在获取第一代码和第二代码前,还包括以下步骤:获取操作系统类型及CPU架构类型;基于操作系统类型选取该操作系统下的用户界面及SDK框架。4.根据权利要求1或2所述的跨语言编译方法,其特征在于,若第一代码或第二代码包含字节码语言,则生成中间程序代码前包括以下步骤:将包含字节码的第一代码或第二代码编译成字节码;对于字节码进行解析,将其编译成原生代码,...

【专利技术属性】
技术研发人员:何晓杰宋杨秦钢
申请(专利权)人:杭州指令集智能科技有限公司
类型:发明
国别省市:

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

1