编译原理期末复习题Word格式文档下载.docx
《编译原理期末复习题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《编译原理期末复习题Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
(0|1)*0(0|1)(0|1)
(4)
0*10*10*10*
(5)
(00|11)*((01|10)(00|11)*(01|10)(00|11)*)*
答案
以0开头并且以0结尾的,由0和1组成的符号串。
{α|α∈{0,1}*}
由0和1组成的符号串,且从右边开始数第3位为0。
含3个1的由0和1组成的符号串。
{α|α∈{0,1}+,且α中含有3个1}
{α|α∈{0,1}*,α中0和1为偶数}
3.4
对于下列语言分别写出它们的正规表达式。
英文字母组成的所有符号串,要求符号串中顺序包含五个元音。
英文字母组成的所有符号串,要求符号串中的字母依照词典顺序排列。
Σ={0,1}上的含偶数个1的所有串。
Σ={0,1}上的含奇数个1的所有串。
具有偶数个0和奇数个1的有0和1组成的符号串的全体。
(6)
不包含子串011的由0和1组成的符号串的全体。
(7)
由0和1组成的符号串,把它看成二进制数,能被3整除的符号串的全体。
令Letter表示除这五个元音外的其它字母。
((letter)*A(letter)*E(letter)*I(letter)*O(letter)*U(letter))*
A*B*....Z*
(0|10*1)*
(0|10*1)*1
[分析]
设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。
所有以00结束的符号串的集合。
所有具有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},δ)
δ(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
(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是相同的(除了状态的名字以外)。
利用这一结论,请说明下列正规表达式都是等价的。
根据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
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
e
A
→Be
→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(S->
[eC])={[}
.i)={.}
Predict(C->
eC)={e}
ε)={]}
因为Predict集没有冲突,所以是LL
(1)文法。
LL
(1)分析表如下:
i
*
[
]
.
->
iB*e
->
ε
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]中消除左递归,并为之构造一个非递归预测分析器LL
(1)分析表。
请说明在句子(a,(a,a))上的分析器的动作。
(20分)解:
将所给文法消除左递归得G'
:
S