编译原理复习题--有答案版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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分析表
ACTION GOTO
b D a#S B D
0r3s312
答案:步骤状态符号输入串
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→ }
I3={ S→ }
I4={ S→ A→. }
I5={ S→ B→. }
I6={ S→ }
I7={ S→ }
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