编译原理习题集与答案解析(整理后) 下载本文

精品

d. 杂凑技术 e.线性表和排序二叉树

3、源程序中的错误一般有 。 a. 词法错误 d. 编译错误

三、填空题

1、符号表中名字栏内容有两种填写方式,它们是 填写和 填写。 2、词法分析阶段的错误主要是 ,可通过 的办法纠正错误。 3、符号表中名字的有关信息在 和 过程中陆续填入。 4、在目标代码生成阶段,符号表是 的依据。 四、问答题:

1、在编译过程中为什么要建立符号表? 单选解答:1、b 2、d 3、b 4、c

多选解答:1、a 、c 2、a、b、c 3、a、b、c、e

填空解答:1、标识符 标识符地址及长度2、拼写错误 最小距离匹配 3、词法分析 语法语义分析

4、地址分配 问答题解答:

在编译过程中始终要涉及到对一些语法符号的处理,这就需要用到语法符号的相关属性。为了在需要时能找到这些语法成分及其相关属性,就必须使用一些表格来保存这些语法成分及其属性,这些表格就是符号表。

b. 语法错误

c. 语义错误

e. 违反环境限制的错误

第九章

一、单项选择题

1、程序所需的数据空间在程序运行前可确定,称为 管理技术。 a. 动态存储 b. 栈式存储 c. 静态存储 d. 堆式存储

2、堆式动态分配申请和释放存储空间遵守 原则。 a. 先请先放 b. 先请后放 c. 后请先放 d. 任意 3、静态分配允许程序出现 。

a. 递归过程 b. 可变体积的数据项目 c. 静态变量 d. 待定性质的名字 4、在编译方法中,动态存储分配的含义是 。

a. 在运行阶段对源程序中的数组、变量、参数等进行分配

感谢下载载

精品

b. 在编译阶段对源程序中的数组、变量、参数进行分配

c. 在编译阶段对源程序中的数组、变量、参数等进行分配,在运行时这些数组、变量、参数的地址可根据需要改变 d. 以上都不正确

5、在编译时有传名功能的高级程序语言是 。 a. Fortran b. Basic c. Pascal d. ALGOL 6、栈式动态分配与管理在过程返回时应做的工作有 。 a. 保护SP b. 恢复SP c.保护TOP d. 恢复TOP 二、多项选择题

1、下面 需要在运行阶段分配存储空间。 a. 数组 b. 指针变量 c.动态数组 d. 静态变量 e. 动态变量 2、栈式动态分配允许 。 a. 递归过程 b. 分程序结构 c. 动态变量 d. 动态数组 e. 静态数组

3、动态存储分配可采用的分配方案有 。 a. 队式存储分配 b.栈式存储分配 c.链式存储分配 d. 堆式存储分配 e.线性存储分配

4、栈式动态分配与管理因调用而进入过程之后,要做的工作是 。 a. 定义新的活动记录的SP b. 保护返回地址 c. 传递参数值 d. 建立DISPLAY表 e. 定义新的活动记录的TOP 5、静态分配不允许程序出现 。 a.递归过程 b. 静态数组 c.可变体积的数据项目 d. 待定性质的名字 e. 静态变量 6、活动记录包括 。 a. 局部变量 b. 连接数据 c. 形式单元 d. 局部数组的内情变量 e. 临时工作单元

三、填空题

1、FORTRAN语言采用了 存储空间分配方案,其程序所需的存储空间在 时确定。 2、一个函数的活动记录体积在 时确定,数组内情向量表的体积在 时确定, 3、目标程序运行的动态分配策略中,含有 和 分配策略

4、在Pascal中,由于允许用户动态地申请与释放内存空间,所以必须采用 存储分配技术。

5、如果两个临时变量名 不相交,则它们可分配在同一单元中。 6、堆式动态分配策略允许用户动态的 和 存储空间。 单选解答1、c 2、d 3、c 4、a 5、d 6、b 多选解答 1、c e 2、a b d e 3、b d 4、abde 5、acd 6、abcde 填空解答

1、静态 编译 2、编译 编译 3、栈式 堆式 4、堆式 5、作用域 6、申请 释放

第十章

一、单项选择题

1、优化可生成

的目标代码。

感谢下载载

精品

a.运行时间较短 b.占用存储空间较小 c.运行时间短但占用内存空间大 d.运行时间短且占用存储空间小 2、下列 优化方法不是针对循优化进行的。 a.强度削弱 b.删除归纳变量 c.删除多余运算 d.代码外提 3、基本块内的优化为 。 a.代码外提,删除归纳变量 b.删除多余运算,删除无用赋值

c.强度削弱,代码外提 d.循环展开,循环合并 4、关于必经结点的二元关系,下列叙述中不正确的是 。 a.满足自反性 b.满足传递性 c.满足反对称性 d.满足对称性 5、对一个基本块来说, 是正确的。 a.只有一个入口语句和一个出口语句 b.有一个入口语句和多个出口语句

c.有多个入口语句和一个出口语句 d.有多个入口语句和多个出口语句 6、在程序流图中,我们称具有下述性质 的结点序列为一个循环。 a.它们是非连通的且只有一个入口结点 b.它们是强连通的但有多个入口结点

c.它们是非连通的但有多个入口结点 d.它们是强连通的且只有一个入口结点 7、 不可能是目标代码。 a.汇编指令代码 b.可重定位指令代码 c.绝对指令代码 d.中间代码 二、多项选择题

1、根据优化所涉及的范围,可将优化分为 。 a.局部优化 b.过程优化 c.全局优化

d.循环优化 e.四元式优化 2、下列优化中,属于循环优化的有 。 a.强度削弱 b.合并已知量 c.删除无用赋值

d.删除归纳变量 e.代码外提

3、如果a→b是程序流图中的一条边,则由这条回边构成的循环由 结点组成。 a.a b.b c.有通路到达b的结点 d.有通路到达a且该通路上不经过b的结点 e.有通路到达b且该通路上不经过a的结点 4、采用无环有向图(DAG),可以实现的优化有 。 a.合并已知量 b.删除公共子表达式 c.强度削弱

d.删除无用赋值 e.删除归纳变量

5、编译程序的输出结果可以是 。

a.目标代码

b.汇编语言代码 e.可重定位代码

c.中间代码

d.优化后的中间代码

三、填空题

1、局部优化是

范围内进行的一种优化。

2、在一个基本块内,可实行3种优化方法,即合并已知量、 3、优化就是对程序进行各种 4、在优化中,可把循环中的

变换,使之能生成更有效的

提到循环外面去,这种方法称为 。

单选[解答]

1、优化的目的是使目标程序运行时间短、占用存储空间小,故选d。

2、删除多余运算属基本块优化,故选c。

3、基本块优化包括:合并已知量、删除无用赋值及删除多余运算,故选b。 4、必经结点满足自反性、传递性和反对称性关系,故选d。 5、选a。 6、选d。 7、选d。

感谢下载载

精品

多选[解答]

1、选a、c、d。

2、循环优化包括:代码外提、强度削弱、删除归纳变量、循环展开和循环合并,故选a、b、e。

3、如果a→b是回边,则该回边的构成的循环由结点a、b和能够到达a但通路不经过b的结点组成;故选a、b、d。

4、DAG图可进行基本块范围内的优化,故选a、b、d。 5、选b、c、d、e。 填空[解答] 1、基本块

2、删除无用赋值 3、等价

删除多余运算

目标代码

代码外提

4、不变运算

您好,欢迎您阅读我的文章,WORD文档可编辑修改,希望您提出保贵的意见或建议,让我们共同进步。感谢下载载

精品

感谢下载!

欢迎您的下载,资料仅供参考

感谢下载载