论文部分内容阅读
语言机制作为提供抽象的核心手段,在计算机技术飞速发展的今天并没有同样地高速发展,给软件的编写,维护带来很多困难。用户期望对领域抽象、优化技巧进行描述,加快软件(包括编译器本身)的开发。因此我们设计了可扩展的编译系统,目标是支持用户扩展语言机制,编码领域抽象、优化技巧。 本文首先介绍了可扩展编译系统的组织结构--X体系结构,然后介绍一些方便用户编写语言扩展的语言机制,我们称所有这种语言机制的集合为X语言。最后介绍一个作者研制的原型系统和实现语言扩展的过程。该系统的特征是: 提供一个可扩展的基础语言,允许该语言的程序访问程序的多个视图(如AST、类图、类型、上下文等)。用户可用该语言进行语言扩展,逐步提高该语言的抽象能力,最终得到表现力强,而又能生成高效代码的定制编译系统。 本文的主要贡献在于 ◆ 将语言定义为一组语言机制的集合,语言的语义由语言机制的语义分立定义。指出了当前语言中抽象能力的缺陷,提出了抽象需求,语言和编译系统的扩展一致性目标和X语言的编程模型。 ◆ 提出了镜像模型。镜像是计算系统的多种视图(如源程序,AST等)。而X语言的程序能够访问计算系统镜像(包含程序自身和编译系统),是X语言可扩展性的源泉。 ◆ 定义了开放的编译系统结构。我们在X体系结构的设计中,平衡考虑了执行效率和抽象表现力需求,从而将增加编译器代码的可重用性。 ◆ 定义了一个基本语言机制集合,提出了多态传参,多态联合类型,增量式定义数据结构和算法等新的语言机制。支持多视图的、基于规则的及增量式的编程风格,方便用户编写语言扩展,进行编译器的增量式开发。 ◆ 我们展现了X语言功能增强的一个循环过程,表现了X体系结构良好的可扩充性。 ◆ 提供了一个C++程序员可用的语言扩展集,使大多数程序员能够操作程序,使用函数式语言、元语言程序设计和编译领域的成果。 X语言环境作为一种软件工程工具,支持更多用户参与编译器的实现,简化编译开发。而这些用户提供的领域抽象和编码技巧会增加程序的表现力和可重用性。最终提供越来越强大的、越来越标准的、可重用的语言机制集合,简化程序员的开发任务。 我们认为开发可扩展的语言环境是降低软件开发代价的一种有效的途径。