编译原理 第1章习题解答

2022-07-15 13:19:20   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《编译原理 第1章习题解答》,欢迎阅读!
习题,编译,解答,原理

第一章 习题解答

1.1 简述计算机程序设计语言的发展过程。 1.2 高级程序设计语言有哪些特点?

1.3 高级程序设计语言为何需要翻译程序?

1.4 高级程序设计语言有哪两种翻译方式?分别介绍它们的特点。 1.5 编译程序具有哪些特点?

1.6 编译程序包括哪几个主要组成部分?分别阐述各个组成部分的主要任务。 1.7 试叙述编译程序的结构和组织方式。

1.8 简述编译程序的自展技术、移植、自动化以及可再入性。 1.9 何谓翻译程序的编写系统? 1.10 并行编译程序有什么特点?

参考答案

1.1 答:最早的计算机程序设计语言是机器语言(指令系统),机器语言中的指令都是用二进制代码直接表示的。随后出现了符号语言和汇编语言等程序设计语言,它们比机器语言虽前进了一步,但仍属计算机低级语言,编写程序效率很低。程序设计语言发展的第三阶段是计算机高级程序设计语言的诞生。随着1954年第一种高级语言FORTRAN I语言的问世,计算机高级程序设计语言从此以后如雨后春笋,不断涌现。作为高级程序设计语言的一种发展,目前流行的面向对象程序设计语言是对传统的面向过程程序设计语言的一种挑战。

1.2 答:高级程序设计语言具有以下的特点:独立于机器、接近自然语言、编写效率高、编写出的程序易读、易理解、易修改、易移植等。

1.3 答:由于计算机不能直接执行用高级语言编写的程序,只能直接执行机器语言程序。以,用高级语言编写的程序必须由一个翻译程序翻译成机器语言程序。

1.4答:翻译有两种方式,一种是编译方式,另一种是解释方式。

编译方式是先将源程序翻译成汇编语言程序或机器语言程序(称为目标程序)然后

再执行它。它一般包括词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、表格处理程序和出错处理程序。编译过程可由一遍或多遍完成。和编译方式不同,解释方式并不先产生目标程序然后再执行之,而是对源程序边翻译边执行。二者的根本区别在于是否生成目标代码,而不是是否进行翻译。

1.5 答:编译程序具有以下的一些特点:

模块性。对于较大的软件系统,一般都将其划分为若干个模块,由编译程序分别

对这些模块进行编译。然后再由连接装配程序将编译出的各个目标模块连接成一个完整的目标程序。

动态解释和静态解释。在设计和编写编译程序时,应该记住源语句序列(静态解

)与运行时的程序(动态解释)之间的区别。

机器无关性。编译程序应该能适应多种不同的机器结构,能够以极小的开销从一

台机器移植到另一台具有不同结构的机器上。


语言标准化。程序语言的可携带性应该通过对语言本身的标准化来实现,标准化

的方法和途径包括:出版物、共同接受的标准文件以及政府的法规。

程序语言特征。编译程序作为程序语言的实现者应该具备程序语言具备的特征。

在可能的情况下,还应提供一个适当的程序设计开发环境。

1.6 答:编译程序包括以下的主要组成部分:

词法分析程序(又称扫描器)。依据语言词法规则,分析由字符组成的源程序,把

它识别为一个一个具有独立意义的最小语法单位,“单词”并识别出与其相关的属性(是标识符,是界限符,还是数,等等)以供其它部分使用。

语法分析程序。依据语言的语法规则,逐一地分析词法分析时得到的单词,以确

定它们是怎样组成说明和语句的,以及说明和语句是怎样组成程序的。分析时如发现有不合语法规则的地方,便把这些出错的地方及出错性质打印输出报告给程序员;如无语法错误,则以另一种内部表示(如语法分析树或其它中间表示)给出正确的语法结构,供下一阶段分析使用。

语义分析和中间代码生成程序。依据语言的语义规则对语法分析得到的语法结构

进行静态语义检查(确定类型、类型和运算合法性检查、识别含义与相应的语义处理及其它一些静态语义检查),并用另一种内部形式表示出来,或者直接用目标语言表示出来。

代码生成程序如果语义分析时把源程序表示成内部形式而不是表示成目标指令,则由本部分完成从内部形式到目标指令的生成工作。如果语义分析时,已直接生成目标指令,则无需做代码生成工作。如果目标代码是:

a 绝对指令代码,则目标代码可立即运行; b 汇编指令代码,则需要经汇编之后才可运行; c 可重新定位的指令代码,则必须借助于一个连接装配程序把各个目标模块连接在一起,确定程序变量(或常数)在主存中的位置,确定装入内存中指定的起始地址,使之成为一个可以独立运行的绝对指令代码程序。

代码优化程序。依据程序的等价变换规则,尽量压缩目标程序运行所需的时间和所占的存储空间,以提高目标程序的质量。

1.7 答:编译过程往往分为前端和后端。前端包括词法分析、语法分析、语义分析(或中间代码生成)和中间代码优化,主要依赖于源程序;后端包括目标代码生成,依赖于计算机硬件系统和机器指令系统。这种组织方式,便于编译程序的移植,若要将编译程序移植到不同类型的机器,只需修改编译程序的后端即可。

根据编译程序在完成翻译任务的过程中需要对源程序或其中间语言程序扫描的遍数,以把编译程序分为单遍扫描的编译程序(只需扫描一遍)和多遍扫描的编译程序(需扫描多)

在单遍扫描的编译程序中,往往以语法分析程序为中心,词法分析程序作为语法分析的一个子程序,当语法分析需要一个新单词时,便调用词法分析程序,当它识别出一个语法成分时,就调用语义分析程序。

典型的编译程序结构如图1.3所示。

在需要外存空间辅助编译的时候。首先在内存中开辟三个覆盖区(共享区):一个存放最大的Comp1;一个存放输入对象(扫描对象);一个存放加工结果(部分处理结果)。然后在外存开辟编译程序的暂存区和输入对象/加工结果的存放区。并且由“编译总控程序”负责控制和调度编译程序的各遍。


1.8 答:高级语言具有自编译性,即可用这个语言来编写自己的编译程序。具有自编译性的高级语言可采用自展技术构造自身的编译程序。所谓自展技术,简单来说就是把源语言L分解成一个核心部分L0与扩充部分L1L2,…,Ln,使得对核心部分L0进行一次或多次扩充之后得到源语言L

一个具有自编译性的高级语言在宿主机上的编译程序可以移植到目标机上。 在编译程序自动化进程中,目前应用的最多的是词法分析程序生成器和语法分析程序生成器。

当这个程序正在执行时,可以随时中断它的执行进程,也可随时从中断点恢复其原

来的执行进程;而且可以再中断时间里,又从该程序的头上开始一个新的执行进程。这样的程序是可再入的。

1.9 答:我们将有助于减轻编写翻译程序(包括编译程序、汇编程序、解释程序)工作的任何软件系统或工具包,统称为翻译程序编写系统TWS产生式语言的编译程序和自动分析算法的构造程序都是TWS

TWS可分为三类。第一类为自动产生编译程序的“编译程序的编译程序”。第二类为面向语法的符号加工程序。第三类TWS是由可扩充语言组成的集合。



1.10 答:并行编译程序的最大特点是其具有的并行处理功能。与传统的串行编译程序只需将源程序转化为目标程序不同,并行编译程序要把串行的源程序或尚未充分并行化的并行源程序,自动转换成并行计算机系统上运行的并行目标程序或它所能接收的并行源程序。




本文来源:https://www.dywdw.cn/7a072a5ff724ccbff121dd36a32d7375a517c649.html

相关推荐
推荐阅读