编译原理复习题--有答案版
1、给出下面语言的相应文法。L1={a n b n c i|n≥1,i≥0}
答案: S→ AB|B
A→ a|aA
B→ bBc|bc
2.给出下面语言的相应文法
L1={a n b n c m d m| m,n≥1,n为奇数,m为偶数}。
答案:文法G(S):S→AC
A→aaAbb/ab
C→ccCcc/cc
3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。
(要求:先将正规式转化为NFA,再将NFA确定化,最小化)
(一)相应的正规式为(a|b)*ab(a|b)*
(二)①与此正规式对应的NFA为
答案;在自己写的纸上
4、对下面的文法G:
E→TE’ E’→+E|ε T→FT’ T’→T|ε
F→PF’ F’→*F’|ε P→(E)|a|b|∧
(1)证明这个文法是LL(1)的。
考虑下列产生式:
E’->E|ε
T’->T|ε
F’->*F’ |ε
P->(E) |∧a|b
FIRST(+E)∩FIRST(ε)={+}∩{ε}=φ
FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ
FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ
FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ
FIRST(*F')∩FIRST(ε)={*}∩{ε}=φ
FIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ
FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ
所以,该文法式LL(1)文法.
计算这个文法的每个非终结符的FIRST和FOLLOW。(8分)
答案:FIRST(E)={(,a,b,^}
FIRST(E')={+,ε}
FIRST(T)={(,a,b,^}
FIRST(T')={(,a,b,^,ε}
FIRST(F)={(,a,b,^}
FIRST(F')={*,ε}
FIRST(P)={(,a,b,^}
FOLLOW(E)={#,)}
FOLLOW(E')={#,)}
FOLLOW(T)={+,),#}
FOLLOW(T')={+,),#}
FOLLOW(F)={(,a,b,^,+,),#}
FOLLOW(F')={(,a,b,^,+,),#}
FOLLOW(P)={*,(,a,b,^,+,),#}
(3)构造它的预测分析表。(6分)
答案;在手机上
写出表达式a+b*(c-d)对应的逆波兰式和三元式序列。
答案:逆波兰式:(abcd-*+)
三元式序列:
OP ARG1 ARG2
(1) - c d
(2) * b (1)
(3) + a (2)
给出下面语言的相应文法
L1={a n b n a m b m|n,m≥0}
给出下面语言的相应文法
答案: S→AB|A|B|∑
A→ aAb|ab
B→ aBb|ab
L2={a n b n c i|n≥1,i≥0}
给出下面语言的相应文法
答案: S→ AB|B
A→ a|aA
B→ bBc|bc
17、对下面的文法G:
S → S ∨ a T | a T | ∨ a T
T →∧ a T | ∧ a
(1) 消除该文法的左递归和提取左公因子;
(2) 构造各非终结符的FIRST和FOLLOW集合;
(3) 构造该文法的LL(1)分析表,并判断该文法是否是LL(1)的。
18、文法G(S)及其LR分析表如下,请给出串baba#的分析过程。
(1) S → DbB(2) D → d(3) D → ε
(4) B → a(5) B → Bba(6) B → ε
LR分析表
答案:步骤状态符号输入串
0 0 # baba#
1 02 #D baba#
2 024 #Db aba#
3 0245 #Dba ba#
4 0246 #DbB ba#
5 02467 #DbBb a#
6 024678 #DbBba #
7 0246 #DbB #
8 01 #S # acc
七、证明题
1、证明下面文法是LL(1)的但不是SLR(1)的。
S→AaAb|BbBa
A→ε
B→ε
首先该文法无左递归存在,没有公共左因子。
其次:对于S→AaAb|BbBa FIRST(AaAb)={a} FIRST(BbBa)={b} FIRST(AaAb)∩FIRST(BbBa)=Φ
所以该文法是LL(1)文法。
(2)证明该文法不是SLR的。
文法的LR(0)项目集规范族为:
I0={S’→.S S→.AaAb S→.BbBa A→. B→.}
I1={ S’→ S. }
I2={ S→A.aAb }
I3={ S→B.bBa }
I4={ S→Aa.Ab A→. }
I5={ S→Bb.Ba B→. }
I6={ S→AaA.b }
I7={ S→BbB.a }
I8={ S→AaAb. }
I9={ S→BbBa. }
考察I0:
FOLLOW(A)={a,b} FOLLOW(B)={a,b} FOLLOW(A)∩FOLLOW(B)= {a,b} 产生规约-规约冲突。
所以该文法不是SLR(1)文法。
2、证明下面文法是SLR(1)但不是LR(0)的。
S→A
A→Ab|bBa
B→aAc|a|aAb
解:文法G[S]:
0:S→A
1:A→Ab
2:A→bBa
3:B→aAc
4:B→a
5:B→aAb
状态5存在“归约-移进”冲突,状态9存在“归约-归约”冲突,因此该文法不是LR(0)文法。
状态5: FOLLOW(B)={a},因此,FOLLOW(B)∩{b}=Φ
状态9: FOLLOW(B)={a},FOLLOW(A)={#,b,c},因此FOLLOW(B)∩FOLLOW(A)=Φ
状态5和状态9的冲突均可用SLR(1)方法解决,构造SLR(1)分析表
该SLR(1)分析表无重定义,因此该文法是SLR(1)文法,不是LR(0)文法。
八、语义分析题
1、将语句
if ((A<0) (B>0)) then while (C>0) do C:=C-D
翻译成四元式
答案:100 (j<, A, 0, 104)
101 (j, -, -, 102)
102 (j>, B, 0, 104)
103 (j, -, -, 109)
104 (j>, C, 0, 106)
105 (j, -, -, 109)
106 (-, C, D, T1)
107 (:=, T1, -, C)
108 (j, -, -, 104)
109
2、写出下面语句经语法制导翻译后所生成的四元式代码序列。
if x
答案:假设初始为100,则四元式代码序列为
100 if x 101 goto 107 102 if e>c goto 104 103 goto 109 104 M:=C+1 105 C:=M 106 goto 102 107 N:=X+5 108 X:=N 109 7、设有文法:E→E+T|T T→T*F|F F→(E)|i (1)证明E+T*F是它的一个句型。(3分) : (2)给出E+T*F的所有短语,直接短语和句柄。(4分) 短语: E+T*F, T*F, 直接短语: T*F 句柄: T*F (3)给出句子i+i*i的最右推导。(4分) 没有答案 10、11、构造下面正规式相应的DFA 1(0|1)*101 答案: I I0 I1 {X} Ф {A,B,C} {A,B,C} { B,C} { B,C,D} {B,C} { B,C} { B,C,D} {B,C,D} { B,C,E} { B,C,D} {B,C,E} { B,C} {B,C,D,y} {B,C,D,y} {B,C,E} { B,C,D} 14、对下面的文法G: Expr→- Expr Expr→(Expr)|Var ExprTail ExprTail→- Expr|ε Var→id VarTail VarTail→(Expr) |ε (1)构造LL(1)分析表。(12分) (2)给出对句子id—id((id))的分析过程。(8分) 答案:(1)FIRST(Expr)={_ , ( , id } FIRST(ExprTail)={_ , ε } FIRST(Var)={id} FIRST(VarTail)={ ( , ε} FOLLOW(Expr)={# , ) } FOLLOW(ExprTail) ={# , ) } FOLLOW(Var) ={_ , # , ) } FOLLOW(VarTail) ={_ , # , ) } (2)给出对句子id—id((id))的分析过程。( 步骤符号栈输入串所用产生式 0 #Expr id_ _id((id))# 1 # ExprTail Var id_ _id((id))# Expr→Var ExprTail 2 # ExprTail VarTail id id_ _id((id))# Var→id VarTail 3 # ExprTail VarTail _ _id((id))# 4 # ExprTail _ _id((id))# VarTail→ε 5 # Expr_ _ _id((id))# ExprTail→_ Expr 6 # Expr _id((id))# 7 # Expr_ _id((id))# Expr→_Expr 8 # Expr id((id))# 9 # ExprTail Var id((id))# Expr→Var ExprTail 10 # ExprTail VarTail id id((id))# Var→id VarTail 11 # ExprTail VarTail ((id))# 12 # ExprTail )Expr( ((id))# VarTail→(Expr) 13 # ExprTail )Expr (id))# 14 # ExprTail ) )Expr( (id))# Expr→(Expr) 15 # ExprTail ) )Expr id))# 16 # ExprTail ) ) ExprTail Var id))# Exp→VarExprTai 17 # ExprTail ) ) ExprTail VarTail id id))# Var→id VarTail 18 # ExprTail ) ) ExprTail VarTail ))# 19 # ExprTail ) ) ExprTail ))# VarTail→ε 20 # ExprTail ) ) ))# ExprTail→ε 21 # ExprTail ) )# 22 # ExprTail # ExprTail→ε 23 # # 分析成功
推荐阅读
- 编译原理复习题--有答案版
- 编译原理复习题--有答案版_IT认证_资格考试/认证_教育专区。1、 给出下面语...
- 编译原理复习题有答案版
- 编译原理复习题有答案版_计算机软件及应用_IT/计算机_专业资料。1、 给出下面...
- 编译原理试题及答案(期末复习版)
- <编译原理>历年试题及答案一. (每项选择 2 分,共 20 分)选...
- 完整版编译原理复习题及答案
- 1. 编译原理复习题及答案 2. 选择题 3. 一个正规语言只能对应 (B ) ...
- (完整版)编译原理复习题及答案
- 编译原理复习题及答案 一、 选择题 1. 一个正规语言只能对应( B ) A 一...
- 编译原理复习题及答案
- 编译原理复习题及答案 一、 选择题 1. 一个正规语言只能对应( B ) A 一...
- 编译原理试题及答案(期末复习版)
- . <编译原理>历年试题及答案 一. (每项选择 2 分,共 20 ...
- 编译原理复习题及答案
- 编译原理复习题及答案一、选择题 1. 一个正规语言只能对应( B A 一个正规文...
- 编译原理复习题及答案
- .. 编译原理复习题及答案 一、 选择题 1. 一个正规语言只能对应( B ) ...
- 编译原理复习题附标准答案
- 编译原理复习题及答案 一、 选择题 1. 一个正规语言只能对应( B ) A 一...
- 编译原理复习题及答案
- 编译原理复习题及答案 编译原理复习题及答案 复习 一、选择题 选择题 1. 一个...
- 编译原理试题及答案(期末复习版).pdf
- 编译原理试题及答案(期末复习版).pdf_IT认证_资格考试/认证_教育专区。. <编译原理>历年试题及答案 一. (每项选择 2 分,共 20 分)选择题 1.将 编译程序......
- 最新编译原理复习题及答案
- 精品文档编译原理复习题及答案 一、 选择题 1. 一个正规语言只能对应( B )...
- 编译原理复习题及答案
- 编译原理复习题及答案一、选择题 1. 一个正规语言只能对应( B ) A 一个正...
- 编译原理复习题答案
- 编译原理复习题答案_IT认证_资格考试/认证_教育专区。二、概念题 1、设有文法...
- 编译原理期末试题(8套含答案+大题集)
- 编译原理期末试题(8套含答案+大题集)_工学_高等教育_教育专区。编译原理 期末复习 八套试卷 含答案 《编译原理》期末试题(五)一、单项选择题(共 10 小题,每......
- 编译原理试题及答案(期末复习版).pdf资料
- 编译原理试题及答案(期末复习版).pdf资料_IT认证_资格考试/认证_教育专区。<编译原理 >历年试题及答案 一. (每项选择 2 分,共 20 分)选择题 1.将编译程序......
- 编译原理期末复习题(含答案)
- 编译原理期末复习题(含答案)_工学_高等教育_教育专区。河北工业大学 第八节 习...
- 编译原理复习题及答案
- 编译原理复习题及答案 编译原理复习题及答案 一、 选择题 1. 一个正规语言只能...