编译复习例题Word格式文档下载.docx
《编译复习例题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《编译复习例题Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
9.表达式a-(-b)*c的逆波兰表示(@为单目减)为。
[A]a-b@c*[B]ab@c*-[C]ab@-[D]ab@c-*
10.过程的DISPLAY表是用于存取过程的。
b
1
-
a
2
+
[A]非局部变量[B]嵌套层次[C]返回地址[D]入口地址
11.已知右图所示自动机M,请问下列哪个字符串不是M所能识别的。
[A]bbaa[B]abba[C]abab[D]aabb
12.若状态k含有项目“A→α.”,且仅当输入符号a∈FOLLOW(A)时,才用规则“A→α”归约的语法分析方法是。
[A]LALR分析法[B]LR(0)分析法
[C]LR
(1)分析法[D]SLR
(1)分析法
13.有一语法制导翻译如下所示:
(第8章)
S->
bAb{print“1”}
A->
(B{print“2”}
a{print“3”}
B->
Aa){print“4”}
若输入序列为b(((aa)a)a)b,则采用自下而上的分析方法,则输出是。
[A]32224441[B]34242421
[C]12424243[D]34442212
14.局部优化是对进行的优化。
[A]表达式 [B]部分代码
[C]循环体 [D]基本块
15.削减运算强度是对的一种优化。
[A]表达式 [B]过程 [C]基本块 [D]循环
二填空题
1.词法分析阶段的任务式从左到右扫描 ,从而逐个识别 。
2.对于文法G[E]:
E→T|E+TT→F|T*FF→P^F|PP→(E)|i,句型T+T*F+i的句柄是 。
3.最右推导的逆过程称为,也称为。
4.符号表的信息栏中登记了每个名字的有关属性,如、、和等。
5.一个确定有穷自动机由五部分组成:
、、、和。
6.最常用的两类语法分析方法是 和 分析法。
7.单词的三种描述工具:
、和互相之间具有等价性。
8.在PL/0的目标代码解释执行时,寄存器B总是指向当前执行过程活动记录的 ,而寄存器T总是指向 。
9.LR(0)分析法的名字中”L”表示,”R”表示,“0”表示。
10.两种常用的动态存储分配办法是动态分配和动态分配。
三判断题(认为正确的填“T”,错的填“F”)
【】1.同心集的合并有可能产生“归约/归约”冲突。
【】2.一个文法所有句子的集合构成该文法定义的语言。
【】3.非终结符可以有综合属性,但不能有继承属性。
【】4.逆波兰表示法表示表达式时无需使用括号。
【】5.一个确定有穷自动机有且只有一个终态。
【】6.若过程p第k次被调用,则p的DISPLAY表中就有k+1个元素。
四解答题
1.给定文法G和句型(T+F)*i+T,
G:
E→E+T|TT→T*F|FF→(E)|i
(1)画出句型的语法树;
(2)写出句型的全部短语、简单短语和句柄。
解:
(略)
2.设有文法G:
S→S+S|S*S|i|(S)。
(1)对于输入串i+i*i给出一个最左推导;
(2)该文法是否是二义性文法?
请证明你的结论。
(1)i+i*i的最左推导:
S=>
S+S=>
i+S=>
i+S*S=>
i+i*S=>
i+i*i
(2)该文法是二义性的。
因为对于句子i+i*i可以画出两棵语法树(语法树略)。
3.给出语言{ambmcn|m≥1,n≥0}的上下文无关文法(2型)。
G:
S→AB|A
A→aAb|ab
B→cB|c
4.给出语言{akbmcn|k,m,n≥1}的正规文法(3型)。
A→aA|aB
B→bB|bC
C→cC|c
5.将文法G改写成等价的正规文法(3型)。
S→dAB
A→aA|a
B→bB|b
S→dA
A→aA|aB
6.设有字母表{a,b}上的正规式R=(ab|a)*。
(1)构造R的相应有限自动机;
3
ε
(2)构造R的相应确定有限自动机;
将
(1)所得的非确定有限自动机确定化
Ia
Ib
-+013
123
+123
13
+13
-+
(3)构造R的相应最小确定有限自动机;
对
(2)得到的DFA化简,合并状态0和2为状态2:
(4)构造与R等价的正规文法
令状态1和2分别对应非终结符B和A
A→aB|a|ε
B→aB|bA|a|b|ε
可化简为:
A→aB|ε
B→aB|bA|ε
7.已知正规文法G[S]:
S→aS|aA|a
A→aS
(1)构造与之等价的自动机NFAM
(2)将NFAM确定化为DFAM’
I
-0
S
SZ
A
+1
8.有穷自动机M接受字母表={0,1}上所有满足下述条件的串:
串中至少包含两个连续的0或两个连续的1。
请写出与M等价的正规式。
(0|1)*(00|11)(0|1)*
9.对右图所示的有限自动机
(1)若是确定的,则写出其转换矩阵;
若不是,则将其确定化;
(2)最小化。
(注:
确定化和最小化均应给出转换矩阵和图示)。
(1)
符号
状态
-1
4
+3
5
+4
6
(2)首先将状态按终态和非终态分成两个集合{1,2,5,6}和{3,4}
检查子集{1,2,5,6},由于f(1,a)=2,f(2,a)=1,f(5,a)=4,f(6,a)=3,所以子集{1,2,5,6}可进一步划分为{1,2}和{5,6}
检查子集{3,4},由于f(3,a)=2,f(4,a)=1以及f(3,b)=5,f(4,b)=6,所以不用进一步划分了。
检查子集{1,2},由于f(1,a)=2,f(2,a)=2以及f(1,b)=3,f(2,b)=4,所以不用进一步划分了。
检查子集{5,6},由于f(5,a)=4,f(6,a)=3以及f(5,b)=¢,f(6,b)=¢,所以不需要进一步划分了。
因此最终划分的结果是{1,2}、{3,4}和{5,6},重新命名状态,令{1,2}为1,{3,4}为3和{5,6}为5,则得到化简后的DFA为
10.写出在{a,b}上,不以a开头,但以aa结尾的字符串集合的正规式(并构造与之等价的最简DFA)。
依题意,“不以a开头”,则必以b开头,又要“以aa结尾”,故正规式为:
b(a|b)*aa
(构造与之等价的最简DFA,此略)
11.写一个LL
(1)文法G,使其语言是
L(G)={ambnc2n|m>
=0,n>
0}
并证明文法是LL
(1)。
文法G(S):
SaS|E
EbE’
E’Ecc|cc
Select(SaS)∩Select(SE)=Ф
Select(E’Ecc)∩Select(E’cc)=Ф
故文法为LL
(1)的
12.将文法G改写成等价的LL
(1)文法,并构造预测分析表。
G:
S→S*aT|aT|*aT
T→+aT|+a
(编写递归下降子程序)
消除左递归后的文法G’:
S→aTS’|*aTS’
S’→*aTS’|ε
T→+aT|+a
提取左公因子得文法G’’:
S→aTS’|*aTS’
T→+aT’
T’→T|ε
Select(S→aTS’)={a}
Select(S→*aTS’)={*}
Select(S→aTS’)∩Select(S→*aTS’)=Ф
Select(S’→*aTS’)={*}
Select(S’→ε)=Follow(s’)={#}
Select(S’→*aTS’)∩Select(S’→ε)=Ф
Select(T→+aT’)={+}
Select(T’→T)=First(T)={+}
Select(T’→ε)=Follow(T’)={*,#}
Select(T’→T)∩Select(T’→ε)=Ф
所以该文法是LL
(1)文法。
预测分析表:
*
#
S’Ta,N
TS’T,N
S’
ε,P
T
T’a,N
T’
T,P
ε,N
OK
(递归下降子程序,略)
13.对文法G[S]:
S→aSb|P
P→bPc|bQc
Q→Qa|a
构造简单优先关系表。
该文法是否是简单优先文法?
简单优先关系矩阵如下:
P
Q
c
=
<
>
>
=<
由于矩阵中有元素存在多种优先关系,故不是简单优先文法。
14.考虑文法G:
S→AS|b
A→SA|a
(1)构造文法的可归前缀图(活前缀的DFA);
(2)判断文法是否是LR(0)文法,并说明理由。
(1)可归前缀图
(2)因为存在冲突,所以不是LR(0)文法。
15.已知文法G[S]:
S→Uta|Tb
T→S|Sc|d
U→US