《编译原理》期末试题(五)
一、单项选择题
(共 10
小题,每小题
2 分,共
20 分)
1.语言是
A.句子的集合
B.产生式的集合
C.符号串的集合
D.句型的集合
2.编译程序前三个阶段完成的工作是
A.词法分析、语法分析和代码优化
B.代码生成、代码优化和词法分析
C.词法分析、语法分析、语义分析和中间代码生成
D.词法分析、语法分析和代码优化
3.一个句型中称为句柄的是该句型的最左
A.非终结符号B.短语C.句子D.直接短语
4.下推自动机识别的语言是
A.0 型语言
C. 2 型语言
B. 1 型语言
D. 3 型语言
5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即
A. 字符
B.单词
C.句子
D.句型
6.对应 Chomsky 四种文法的四种语言之间的关系是
A. L0L1L2L3B. L3L2L1
L0
C. L3=L2
L1
L0
D. L0
L1
L2=L3
7.词法分析的任务是
A.识别单词
B.分析句子的含义
C.识别句子
D.生成目标代码
8.常用的中间代码形式不含
A.三元式B.四元式
C.逆波兰式
D.语法树
9. 代码优化的目的是
A.节省时间
B.节省空间
C.节省时间和空间D.把编译程序进行等价交换
10.代码生成阶段的主要任务是
A.把高级语言翻译成汇编语言
B.把高级语言翻译成机器语言
C.把中间代码变换成依赖具体机器的目标代码
D.把汇编语言翻译成机器语言
二、填空题(本大题共5 小题,每小题 2 分,共 10 分)
1.编译程序首先要识别出源程序中每个(单词 ),然后再分析每个(句子 )并翻译其意义。
2.编译器常用的语法分析方法有(自底向上 )和 (自顶向下 )两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序
的(分析 ),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合 )。
4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即存储分配 )方案和 (动态存储分配 )方案。
(静态
5.对编译程序而言,输入数据是
(源程序
),输出结果是
(目标程序
)。
三、名词解释题 (共 5 小题,每小题4 分,共 20 分)
1. 法分析
法分析的主要任 是从左向右 描每行源程序的符号,按照 法
从构成源程序的字符串中 出一个个具有独立意 的最小 法 位,
并 成 一的内部表示(token) ,送 法分析程序。
2.LL(1)文法
若文法的任何两个 生式A
(1) FIRST()FIRST() =;
(2)若*,那么 FIRST(
)
|
都 足下面两个条件:
FOLLOW(A ) =。
我 把 足 两个条件的文法叫做LL(1)文法 ,其中的第一个L 代表从左
向右 描 入,第二个L 表示 生最左推 ,1 代表在决定分析器的每步
作 向前看一个 入符号。除了没有公共左因子外,LL(1)文法 有一
些明 的性 ,它不是二 的,也不含左 。
3. 法
句子的 构表示法称 法 ( 法分析 或 法推 )。 定文法 G=(VN, VT, P,S), 于 G 的任何句型都能构造与之关 的 法 。 棵 具有下列特征:
(1)根 点的 是开始符号S。
(2)每个 点的 都是V 中的一个符号。
(3)若一棵子 的根 点 A,且其所有直接子 的 从左向右的排列次序 A1A2?AR,那么 A A1A2?AR一定是 P 中的一条 生式。
(4)若一 A 的 点至少有一个除它以外的子 , AVN。
(5)若 的所有叶 点上的 从左到右排列 字符串w, w 是文法
的句型;若w 中 含 符号, w 文法 G 所 生的句子。
G
4.LR(0)分析器
所 LR(0)分析,是指从左至右 描和自底向上的 法分析,且在分析的
每一步,只 根据分析 当前已移 和 出的全部文法符号,并至多再
向前 看 0 个 入符号,就能确定相 于某一 生式左部符号的句柄是否
已在分析 的 部形成,从而也就可以确定当前所 采取的分析 作
移 是按某一 生式 行 等)。
(是
5. 言和文法
文法就是 言 构的定 和描述,是有 非空的 生式集合。
文法 G 定 四元 的形式:
G=(VN, VT, P, S)
其中: VN 是非空有 集合,称 非 符号集合;
VT 是非空有 集合,
称 符号集合;
P 是 生式的集合 (非空 ); S是开始