广工编译原理复习例题(有客观题的答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

+123 123
+13
123
0 1 2 a a b a -+ + + (3)构造R的相应最小确定有限自动机; 解:对(2)得到的DFA化简,合并状态0和2 为状态2: 1 2 a a b -+ + (4)构造与R等价的正规文法 解:令状态1和2分别对应非终结符B和A G: A→aB|a|ε B→aB|bA|a|b|ε 可化简为: G: A→aB|ε B→aB|bA|ε 7.已知正规文法G[S]: S → aS | bA | a A → aS (1)构造与之等价的自动机NFA M
编译原理复习例题
一 选择题
1.编译的各阶段工作都涉及 B 。 [A]词法分析 [B]表格管理 [C]语法分析 [D] 语义分析 2. D 型文法也称为正规文法。 [A] 0 [B] 1 [C] 2 [D] 3 3. D 文法不是LL(1)的。 [A]递归 [B]右递归 [C]2型 [D]含有公 共左因子的 4.文法E→E+E|E*E|i的句子i*i+i*i有 C 棵不同的语法 树。 [A] 1 [B] 3 [C] 5 [D] 7 5.文法 S→aaS|abc 定义的语言是 C 。 [A]{a2kbc|k>0} [B]{akbc|k>0} [C]{a2k-1bc|k>0} [D]{akakbc|k>0} 6.若B为非终结符,则 A→.B 为 D 。 [A]移进项目 [B]归约项目 [C]接受项目 [D]待约项目 7.同心集合并可能会产生新的 D 冲突。 [A]二义 [B]移进/移进 [C]移进/归约 [D]归约/归 约 8.代码优化时所依据的是 C 。 [A]语法规则 [B]词法规则 [C]等价变换规则 [D]语义规则 9.表达式a-(-b)*c的逆波兰表示(@为单目减)为 B 。 [A]a-b@c* [B]ab@c*[C]ab@[D]ab@c-* 10.过程的DISPLAY表是用于存取过程的 B 。 [A]非局部变量 [B]嵌套层次 [C]返回地址 [D]入口地址 b 0

判断题(认为正确的填“T”,错的填“F”)
【 T 】1.同心集的合并有可能产生“归约/归 约”冲突。 【 T 】2.一个文法所有句子的集合构成该文法定 义的语言。 【 F 】3.非终结符可以有综合属性,但不能有继 承属性。 【 T 号。 【 F 态。 【 F 】4.逆波兰表示法表示表达式时无需使用括 】5.一个确定有穷自动机有且只有一个终 】6.若过程p第k次被调用,则p的DISPLAY表中就有k+1个元 素。
[C]
基本
,从而逐个 P→(E)|i,句
最左规约
4.符号表的信息栏中登记了每个名字的有关属性,如 符号名 、符号的类型、符号的存储类别和符号的作用域及可视性等。 5. 一个确定有穷自动机由五部分组成: 有穷状态集 、 有穷字母 表 、 转换函数 、初态和 终态集 。 6. 最常用的两类语法分析方法是 自顶向下 上 分析法。 7. 单词的三种描述工具: 正规文法 、 有穷自动机 互相之间具有等价性。 8. 和 自底向 正规式 和
13.对文法G[S]: S → aSb | P P → bPc | bQc Q → Qa | a 构造简单优先关系表。该文法是否是简单优先文法? 解:简单优先关系矩阵如下: S a b P Q c
S a b 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 | e (1) 试判断G是LR(0),SLR(1),LALR(1)还是LR(1),说明理 由。 (2) 构造相应的分析表。 解: (1) 首先拓广文法为G',增加产生式S'→S (0) S'→S (1) S→UTa (2) S→Tb (4) T→Sc (5) T→d (6) U→US G′的LR(0)项目集族及识别活前缀的DFA如下图所示:
(2)将NFA M确定化为DFA M’
I -0 +1 2 S SZ A
Ia SZ SZ S
Ib A A
8. 有穷自动机M接受字母表={0,1}上所有满足下述条件的串:串中 至少包含两个连续的0或两个连续的1。请写出与M等价的正规式。 解:(0|1)*(00|11)(0|1)* 9.对右图所示的有限自动机 (1)若是确定的,则写出其转换矩阵;若不是,则将其确定化; (2)最小化。 (注:确定化和最小化均应给出转换矩阵和图示)。 解: (1) 符号 a b 状态 -1 2 +3 +4 5 2 1 2 1 5 3 4 5 6 5

解答题
1.给定文法G和句型(T+F)*i+T, G: E→E+T | T T→T*F | F F→(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
14. 局部优化是对 [A] 表达式 [C] 循环体 15. 削减运算强度是对
ቤተ መጻሕፍቲ ባይዱ
D
进行的优化。 [B] 部分代码 [D] 基本块 D 的一种优化。
[A] 表达式 [B] 过程 块 [D] 循环 二 填空题
1.词法分析阶段的任务式从左到右扫描 源程序 识别 单词 。 2.对于文法G[E]:E→T|E+T 型T+T*F+i的句柄是 T 3.最右推导的逆过程称为 规范规约 。 T→F|T*F 。 F→P^F|P ,也称为
T→+aT|+a (编写递归下降子程序) 解:消除左递归后的文法G’: S→aTS’|*aTS’ S’→*aTS’|ε T→+aT|+a 提取左公因子得文法G’’:S→aTS’|*aTS’ S’→*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)文法。 预测分析表: * + a # S T T’ ε, a # (递归下降子程序,略) P S’Ta, N T’a, N T, P ε, N OK ε, P TS’T, N ε, P S’ S’Ta, N
6 6 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为 符号 a b 状态 -1 +3 5 1 1 5 3 5 5
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):S aS | E E bE’ E’ Ecc | cc Select(S aS)∩Select (S E)= Ф Select(E’ Ecc)∩Select (E’ cc) =Ф 故文法为LL(1)的 12.将文法G改写成等价的LL(1)文法,并构造预测分 析表。 G:S→S*aT|aT|*aT
(3) T→S (7) U →e
(2)在I1中: S' →S.为接受项目,T →S. 为归约项目,T →S.c为移进项目,存 在接受-归约和移进-归约冲突,因此所给文法不是LR(0)文法。 在I1中: Follow(S') ∩ Follow(T)= { #} ∩{a ,b}= Follow(T) ∩{ c}= { a ,b} ∩{c}= 在I8中: Follow(U) ∩ Follow(T) ∩{ c}={d,e}∩{ a ,b} ∩{c}= 所以在I1中的接受-归约和移进-归约冲突与I8中的移进-归约和归 约-归约冲突可以由Follow集解决,所以G是SLR(1)文法。 构造的SLR(1)分析表如下: 状态 Action Goto (State) a b c d e # S U T S5 S4 1 2 3 0 r3 r3 S6 Acc . 1 S5 S4 8 2 7 2 S9.................. 3 r7 r7 4 r5 r5........................ 5 r4 r4.........................
在PL/0的目标代码解释执行时,寄存器B总是指向当前执行 过程活动记录的 起始地址 ,而寄存器T总是指向 栈顶 。
9.LR(0)分析法的名字中”L”表示 自左向右扫描输入符号串 ,”R”表示 最右推导的逆过程 ,“0”表示 向前看的输入符号的个数 。 10. 两种常用的动态存储分配办法是 动态分配。 栈式动态分配和堆式
4.给出语言{akbmcn|k,m,n≥1}的正规文法(3型)。 解: G: A→aA|aB B→bB|bC C→cC|c 5.将文法G改写成等价的正规文法(3型)。 G: S→dAB A→aA|a B→bB|b 解: G: S→dA A→aA|aB B→bB|b 6.设有字母表{a,b}上的正规式R=(ab|a)*。 (1)构造R的相应有限自动机; 解: 0 1 2 3 b a a ε ε + (2)构造R的相应确定有限自动机; 解:将(1)所得的非确定有限自动机确定化 Ia +013 123 13 Ib
1 a a 2 + + b a b 11. 已知右图所示自动机M,请问下列哪个字符串不是M所能识别的。D [A] bbaa [B] abba [C] abab [D] aabb
12. 若状态k含有项目“A→α.”,且仅当输入符号a∈FOLLOW(A)时, 才用规则“A→α”归约的语法分析方法是 D 。 [A] LALR分析法 [B] LR(0)分析法 [C] LR(1)分析法 [D] SLR(1)分析法 13. 有一语法制导翻译如下所示:(第8章) S->bAb {print “1” } A->(B {print “2” } A->a {print “3” } B->Aa) {print “4” } 若输入序列为b(((aa)a)a)b,则采用自下而上的分析方法,则输出是 B 。 [A] 32224441 [B] 34242421 [C] 12424243 [D] 34442212
相关文档
最新文档