编译原理期末复习题学习资料.docx
《编译原理期末复习题学习资料.docx》由会员分享,可在线阅读,更多相关《编译原理期末复习题学习资料.docx(29页珍藏版)》请在冰豆网上搜索。
编译原理期末复习题学习资料
3.2 是非判断,对下面的陈述,正确的在陈述后的括号内写T,否则写F。
(1)有穷自动机接受的语言是正则语言。
()
(2)若r1和r2是Σ上的正规式,则r1|r2也是。
()
(3)设M是一个NFA,并且L(M)={x,y,z},则M的状态数至少为4个。
()
(4)令Σ={a,b},则Σ上所有以b为首的字构成的正规集的正规式为b*(a|b)*。
()
(5)对任何一个NFAM,都存在一个DFAM',使得L(M')=L(M)。
()
(6)对一个右线性文法G,必存在一个左线性文法G',使得L(G)=L(G'),反之亦然。
()
答案
(1) T
(2) T (3) F
(4) F (5) T (6)T
3.3 描述下列各正规表达式所表示的语言。
(1) 0(0|1)*0
(2) ((ε|0)1*)*
(3) (0|1)*0(0|1)(0|1)
(4) 0*10*10*10*
(5) (00|11)*((01|10)(00|11)*(01|10)(00|11)*)*
答案
(1) 以0开头并且以0结尾的,由0和1组成的符号串。
(2) {α|α∈{0,1}*}
(3) 由0和1组成的符号串,且从右边开始数第3位为0。
(4) 含3个1的由0和1组成的符号串。
{α|α∈{0,1}+,且α中含有3个1}
(5) {α|α∈{0,1}*,α中0和1为偶数}
3.4 对于下列语言分别写出它们的正规表达式。
(1) 英文字母组成的所有符号串,要求符号串中顺序包含五个元音。
(2) 英文字母组成的所有符号串,要求符号串中的字母依照词典顺序排列。
(3) Σ={0,1}上的含偶数个1的所有串。
(4) Σ={0,1}上的含奇数个1的所有串。
(5) 具有偶数个0和奇数个1的有0和1组成的符号串的全体。
(6) 不包含子串011的由0和1组成的符号串的全体。
(7) 由0和1组成的符号串,把它看成二进制数,能被3整除的符号串的全体。
答案
(1) 令Letter表示除这五个元音外的其它字母。
((letter)*A(letter)*E(letter)*I(letter)*O(letter)*U(letter))*
(2) A*B*....Z*
(3) (0|10*1)*
(4) (0|10*1)*1
(5) [分析]
设S是符合要求的串,|S|=2k+1(k≥0)。
则S→S10|S21,|S1|=2k(k>0),|S2|=2k(k≥0)。
且S1是{0,1}上的串,含有奇数个0和奇数个1。
S2是{0,1}上的串,含有偶数个0和偶数个1。
考虑有一个自动机M1接受S1,那么自动机M1如下:
和L(M1)等价的正规表达式,即S1为:
((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*
类似的考虑有一个自动机M2接受S2,那么自动机M2如下:
和L(M2)等价的正规表达式,即S2为:
((00|11)|(01|10)(00|11)*(01|10))*
因此,S为:
((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*0|
((00|11)|(01|10)(00|11)*(01|10))*1
(6)1*|1*0(0|10)*(1|ε)
(7)接受w的自动机如下:
对应的正规表达式:
(1(01*0)1|0)*
3.6 给出接受下列在字母表{0,1}上的语言的DFA。
(1) 所有以00结束的符号串的集合。
(2) 所有具有3个0的符号串的集合。
答案
(a)DFA M=({0,1},{q0,q1,q2},q0,{q2},δ)
其中δ定义如下:
δ(q0,0)=q1 δ(q0,1)=q0
δ(q1,0)=q2 δ(q1,1)=q0
δ(q2,0)=q2 δ(q2,1)=q0
(b)正则表达式:
1*01*01*01*
DFA M=({0,1},{q0,q1,q2,q3},q0,{q3},δ)
其中δ定义如下:
δ(q0,0)=q1 δ(q0,1)=q0
δ(q1,0)=q2 δ(q1,1)=q1
δ(q2,0)=q3 δ(q2,1)=q2
δ(q3,1)=q3
3.7构造等价于下列正规表达式的有限自动机。
(1)10|(0|11)0*1
(2)((0|1)*|(11))*
答案
(1)DFA M=({0,1},{q0,q1,q2,q3},q0,{q3},δ)
其中δ定义如下:
(2)δ(q0,0)=q1 δ(q0,1)=q2
(3)δ(q1,0)=q1 δ(q1,1)=q3
(4)δ(q2,0)=q3 δ(q2,1)=q1
(5)
(6)
(2)DFA M=({0,1},{q0},q0,{q0},δ)
(7)其中δ定义如下:
(8)δ(q0,0)=q0 δ(q0,1)=q0
(9)
3.8给定右线性文法G:
S->0S|1S|1A|0B
A->1C|1
B->0C|0
C->0C|1C|0|1
试求一个于G等价的左线性文法G'
3.9试对于下列正规表达式使用证明定理3。
5的构造算法构造非确定的有限自动机。
请给出每个自动机在处理输入符号串ababbab的过程中的动作序列。
(1)(a|b)*
(2)(a*|b*)*
(3)((ε|a)b*)*
3.10转换练习3.9中的每个NFA为DFA。
并给出每个DFA在处理输入符号串ababbab的过程中的动作序列。
3.11试把练习3.10中得到的DFA的状态给以最小化。
答案
(1),
(2),(3)的DFAM相同,化简结果为:
(4)
3.12我们可以证明两个正规表达式是等价的,如果它们的最小状态DFA是相同的(除了状态的名字以外)。
利用这一结论,请说明下列正规表达式都是等价的。
(1)(a|b)*
(2)(a*|b*)*
(3)((ε|a)b*)*
答案
根据3.11的结果知这几个正规表达式是等价的。
3.13对于下列正规表达式构造最小状态的DFA。
(1)(a|b)*a(a|b)
(2)(a)b)*a(a|b)(a|b)
5.对如下文法:
G[S]:
S→abS|aaB|ad
B→bbB|b
分别给出句子abaabbb和ad的句柄
句子ad的语法分析树为:
句子abaabbb的语法分析树为:
S
a
b
S
a
a
B
b
b
B
b
所以句子abaabbb的句柄是b;句子ad的句柄是ad.
二、(10分)说明如下文法是否是LL
(1)文法,若不是,将其转换为LL
(1)文法。
最后给出该文法的LL
(1)分析表。
G[A]:
A→Be
B→Bb|a
文法中有左递归,不是LL
(1)文法。
转换为G′:
A→Be
B→aB′
B′→bB′|λ
Predict(A→Be)={a}
Predict(B→aB′)={a}
Predict(B′→bB′)={b}
Predict(B′→λ)={e}
LL
(1)分析表:
a
b
e
A
→Be
B
→aB′
B′
→bB′
→λ
4.给出识别正则表达式((a|bc)*d)+的NFA。
5.已知文法G[S]:
S→S;G│G
G→G(T)│H
H→a│(S)
T→T+S│S
找出句型:
a(T+S);H;(S)的短语、简单短语和句柄。
短语:
a,T+S,a(T+S),H,a(T+S);H,(S)
简单短语:
a,T+S,H,(S)句柄是a.
6.已知文法G[S]为:
S→AB|bCA→b|λ
B→aD|λC→AD|b
D→aS|c
对其每一个非终级符求First集和Follow集。
First(S)={b,a,λ}
First(A)={b,λ}
First(B)={a,λ}
First(C)={b,a,c}
First(D)={a,c}
Follow(S)={#}
Follow(A)={a,c,#}
Follow(B)={#}
Follow(C)={#}
Follow(D)={#}
二、(10分)设有文法G[A]:
A→iB*e
B→SB|ε
S→[eC]|.i
C→eC|ε
判定该文法是否为LL
(1)文法?
若是则给出它的LL
(1)分析表,否则说明理由。
先计算各个产生式的Predict集:
Predict(A->iB*e)={i};
Predict(B->SB)={[,.}
Predict(B->ε)={*}
Predict(S->[eC])={[}
Predict(S->.i)={.}
Predict(C->eC)={e}
Predict(C->ε)={]}
因为Predict集没有冲突,所以是LL
(1)文法。
LL
(1)分析表如下:
i
*
e
[
]
.
A
->iB*e
->ε
B
->SB
->SB
S
->[eC]
->.i
C
->eC
->ε
1、证明下面文法是LL
(1)的但不是SLR
(1)文法
S→AaAb|BbBaA→εB→ε
解:
对于产生式S→AaAb|BbBa来说
FIRST(AaAb)∩FIRST(BbBa)={a}∩{b}=Φ而A,B∈VN仅有一条候选式。
因此,这个文法是LL
(1)的。
下面构造这个文法的识别活前缀的DFA。
系专业班级学号姓名
………………………………………密……………………………………封…………………………………线…………………………………………
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·}
由于FOLLOW(A)=FOLLOW(B)={a,b}
因此项目集I0中存在归约-归约冲突。
在I0状态下,当输入符号是a或是b时,不知用A→ε还是B→ε进行归约。
故此文法不是SLR
(1)的。
但是,此文法是LR
(1)的。
五、已知文法G[S],其产生式如下:
S→(L)|aL→L,S|S
从G[S]中消除左递归,并为之构