一种编译方法和相关设备技术

技术编号:46624584 阅读:2 留言:0更新日期:2025-10-14 21:20
本申请提供了一种编译方法和相关设备。该方法包括:接收第一代码块,该第一代码块用于指示在第一编译器的第一阶段之后新增的编译规则,该第一编译器用于对根据宿主语言编写的代码文件进行编译;根据第一代码块和第一编译器,生成第二编译器,该第二编译器用于对根据第一语言编写的代码文件进行编译,第一语言和宿主语言不同,第一语言属于领域特定语言。该方法可以在宿主语言的编译器的编译阶段中增加自定义的编译规则,从而实现第一语言到宿主语言的转换,或者对使用第一语言编写的代码进行约束和优化,进而减少宿主语言对第一语言的限制,提高第一语言的灵活表达能力。

【技术实现步骤摘要】

本申请涉及计算机领域,并且更具体地,涉及一种编译方法、计算装置、计算设备集群、芯片系统、计算机程序产品、计算机可读存储介质。


技术介绍

1、目前的领域特定语言(domain specific language,dsl)包括外部dsl和内部dsl。外部dsl基于领域独立设计语法,独立实现编译器、工具链等,创建工作量大。换句话说,外部dsl需要语言开发者基于领域的特性独立开发一种编程语言,并开发该编程语言的编译器,使得普通开发者可以使用该编程语言和编译器开发具有特定功能的代码文件。内部dsl基于宿主语言和领域进行设计,例如借助宿主语言的dsl能力(例如语法糖等)进行设计,同时借助宿主语言的编译器等工具链实现编译运行,创建工作量小。换句话说,内部dsl需要语言开发者基于宿主语言的规则开发特定的代码语句,并基于宿主语言的编译器进行编译,即内部dsl的语言开发者无需开发独立的编译器。由于内部dsl语言需要借助宿主语言的编译器进行编译,导致在内部dsl语言开发者在开发该内部dsl语言时,或者在普通开发者在使用该内部dsl编写代码时受到的限制较大,无法实现内部dsl的灵本文档来自技高网...

【技术保护点】

1.一种编译方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述第一阶段包括以下编译阶段中的一个或两个:词法分析阶段、语法分析阶段、语义分析阶段、中间表达形式IR转换阶段。

3.根据权利要求1或2所述的方法,其特征在于,所述根据所述第一代码块和所述第一编译器,生成第二编译器,包括:

4.根据权利要求1至3中任一项所述的方法,其特征在于,所述编译规则包括以下至少一项:所述第一语言与所述宿主语言之间的词法转换规则、所述第一语言与所述宿主语言之间的语法转换规则、所述第一语言或所述宿主语言的约束条件、所述宿主语言的优化规则;

5...

【技术特征摘要】

1.一种编译方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述第一阶段包括以下编译阶段中的一个或两个:词法分析阶段、语法分析阶段、语义分析阶段、中间表达形式ir转换阶段。

3.根据权利要求1或2所述的方法,其特征在于,所述根据所述第一代码块和所述第一编译器,生成第二编译器,包括:

4.根据权利要求1至3中任一项所述的方法,其特征在于,所述编译规则包括以下至少一项:所述第一语言与所述宿主语言之间的词法转换规则、所述第一语言与所述宿主语言之间的语法转换规则、所述第一语言或所述宿主语言的约束条件、所述宿主语言的优化规则;

5.根据权利要求4所述的方法,其特征在于,所述词法转换规则增加至所述第一编译器的词法分析阶段和语法分析阶段之间,或者所述词法转换规则增加至所述第一编译器的词法分析阶段和语义分析阶段之间;或者,

6.根据权利要求4或5所述的方法,其特征在于,所述约束条件包括以下至少一项:针对根据所述第一语言编写的代码文件中的数据的类型的约束、针对所述ir中的数据流和/或控制流的约束。

7.根据权利要求2或5所述的方法,其特征在于,所述词法分析阶段用于将根据所述宿主语言编写的代码文件分解为至少一个词组token,所述语法分析阶段用于根据所述至少一个词组生成无类型的ast,所述语义分析阶段用于根据所述至少一个词组或所述无类型的ast生成有类型的ast,所述ir转换阶段用于根据所述有类型的ast生成ir。

8.根据权利要求1至7中任一项所述的方法,其特征在于,所述第一代码块根据所述宿主语言编写,所述第一代码块中包括用于导入目标代码库的代码语句,所述目标代码库中包括根据所述宿主语言编写的、且用于对根据所述宿主语言编写的代码进行编译的至少一个代码语句。

9.根据权利要求1至8中任一项所述的方法,其特征在于,所述接收第一代码块,包括:

10.根据权利要求1至8中任一项所述的方法,其特征在于,在所述接收第一代码块之前,所...

【专利技术属性】
技术研发人员:刘军唐培津王晓毅纪清晨董鑫
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1