一款PL/0编译器的设计与实现开题报告

 2021-08-08 20:28:59

1. 研究目的与意义

编译器是一种相当复杂的系统程序,其代码的长度可从几千行到几百万行不等,所以编写甚至读懂这样的一个程序都不是一件容易的事。绝大多数的计算机专业人员不会去编写一个完整的编译器,但是,几乎所有形式的计算均要用到编译器,所以任何一个与计算机打交道的专业人员都应该多少掌握编译器的基本结构和操作。除此之外,计算机应用程序中经常遇到的一个任务就是有关命令解释程序和界面程序的开发,这比编译器的开发规模要小,但使用的却是很类似的技术。因此,掌握编译器的开发技术具有非常重大的实际意义。

编译器的设计的原理和技术还可以用于编译器设计之外的众多领域。因此,这些原理和技术通常会在一个计算机科学家的职业生涯中多次被用到。研究编译器的编写将涉及程序设计语言、计算机体系结构、形式语言理论、算法和软件工程。

2. 国内外研究现状分析

编译器的开发具有极高的实用价值和意义,高级语言编译器的性能决定了基于该语言平台所开发出的软件的质量。所以国内外很多大学的科研和技术人员也在积极地开展这方面的技术探索和项目实践。他们大多是以特定的软件项目为背景来进行一些与编译器开发相关或类似的研究分析,他们的研究目标大多是基于某种实验型高级语言的编译器开发和优化改进,然后把有价值的研究成果移植或运用到产品级的编译器开发中(比如.net平台编译器)。

最近十年以来,国外关于编译器设计的发展动态主要体现在:首先,编译器采用了大量的更加复杂的算法,主要用于推断或简化程序中的信息,这又与更为复杂的程序设计语言的发展结合在一起,其中典型的有用于函数语言编译的hindley-milner类型检查的统一算法。其次,编译器已越来越成为基于窗口的可视化交互开发环境(interactive development environment,ide)的一部分,该环境还包括了智能编辑器、连接程序、调试程序以及项目管理程序等,已经成为了事实上的编译器行业标准。另一方面,尽管国内外的专家学者们近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计算机科学课程中的中心环节之一。

在九十年代,作为gnu项目或其它开放源代码项目的一部分,许多免费的编译器或编译器构造工具被开发出来。这些工具可用来编译数种程序设计语言的源程序(典型的就是gcc)。它们中的一些项目被认为是高质量的,而且对现代编译理论感兴趣的人都可以较容易地得到它们的免费源代码。典型的是在1999年,sgi公布了他们的一个工业化的并行优化编译器pro64的源代码,随后被全世界多个编译器研究小组用做研究平台,并命名为open64。open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。

剩余内容已隐藏,您需要先支付后才能查看该篇文章全部内容!

3. 研究的基本内容与计划

在通常情况下,一个编译器应由一系列的阶段组成,这些阶段从要编译的源程序的字符序列开始,依次对一个给定形式的程序进行分析,并得到一种新的表示形式,在大多数情况下最终产生一个可以与其他目标代码链接,并装入一台机器的存储器中执行的可重定位目标模块。这一编译过程一般由如下6个阶段构成:

(1) 扫描程序(scanner)

(2) 语法分析程序(parser)

剩余内容已隐藏,您需要先支付后才能查看该篇文章全部内容!

4. 研究创新点

为了提高软件开发的效率和保证开发质量,人们除了要遵循软件工程中对软件开发过程的规范化或标准化之外,还应尽量使用先进的软件开发技术和相应的软件工具,而大部分软件工具的开发,常常要用到编译技术和方法。实际上编译程序本身也是一种软件开发工具。为了提高编程效率,缩短调试时间,软件工作人员研制了不少对源程序处理的工具,这些工具的开发不同程度地用到编译程序各个部分的技术和方法,典型的有下面几种:

(1) 语言的结构化编辑器:结构化编辑器是引导用户在语言的语法制导下编制程序,能自动地提供关键字和与其匹配的关键字,这样可以减少语法上的错误,加快对源程序的输入和调试,提高效率和质量。现在的可视化开发工具基本都具备了这个功能。

(2) 语言程序的调试工具:调试是软件开发过程中一个重要环节,凡是对算法的实现错误或程序没能反映算法的功能等错误就需用调试器来协助解决。调试器的功能越强则实现越复杂,它必须与语法分析、语义处理有紧密联系。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付