参考第六七章作业与习题参考答案Word格式文档下载.docx
- 文档编号:20941872
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:22
- 大小:85.22KB
参考第六七章作业与习题参考答案Word格式文档下载.docx
《参考第六七章作业与习题参考答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《参考第六七章作业与习题参考答案Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
0235
01
#
#a
#aA
#aAb
#A
ab#....
b#....
#....
S2
r3(A→ε)
S5
r2(A→aAb)
acc
3
1
分析成功,说明输入串ab是题目1文法的句子
第2题若有定义二进制数的文法如下:
S→L.L|L
L→LB|B
B→0|1
(1)试为该文法构造LR分析表,并说明属哪类LR分析表。
(2)给出输入串101.110的分析过程。
解:
拓广文法为G′,增加产生式S′→S
0 S'
→S
1 S→L.L
2 S→L
3 L→LB
4 L→B
5 B→0
6 B→1
)={0,1}
First(S)={0,1}
First(L)={0,1}
First(B)={0,1}
Follow(S)={#}
Follow(L)={.,0,1,#}
Follow(B)={.,0,1,#}
在I2中:
B→.0和B→.1为移进项目,S→L.为归约项目,存在移进-归约冲突,因此所给文法不是LR(0)文法。
在I2、I8中:
Follow(s)∩{0,1}={#}∩{0,1}=
所以在I2、I8中的移进-归约冲突可以由Follow集解决,所以G是SLR
(1)文法。
题目2的SLR
(1)分析表
·
0 1 #
S L B
6
7
8
acc
S6 S4 S5 r2
r4 r4 r4 r4
r5 r5 r5 r5
r6 r6 r6 r6
r3 r3 r3 r3
S4 S5 r1
1 2 3
7
8 3
7
题目2对输入串101.110#的分析过程
文法符号栈
05
03
024
027
02
025
026
0265
0263
0268
02685
02687
0268
02684
#1
#B
#L
#L0
#LB
#L1
#L.
#L.1
#L.B
#L.L
#L.L1
#L.LB
#L.L0
#S
101.110#....
01.110#....
1.110#....
.110#....
110#....
10#....
0#....
Shift
Reduceby:
B→1
S→LB
B→0
S→B
S→L.L
分析成功,说明输入串101.110是题目2文法的句子。
3.考虑文法:
S→AS|bA→SA|a
(1)列出该文法所有的LR(0)项目。
(2)按
(1)列出的项目构造识别这个文法活前缀的NFA,把这个NFA确定化为DFA,说明这个DFA的所有状态全体构成这个文法的LR(0)规范族。
(3)此文法是SLR
(1)的吗?
,若是,构造他的SLR分析表
(4)这个文法是LALR或LR
(1)的吗?
解:
(1)构造增广文法,S’→S
文法的LR(0)项目有:
1.S’→.S2.S’→S.3.S→.AS4.S→A.S
5.S→AS.6.S→.b7.S→b.8.A→.SA
9.A→S.A10.A→SA.11.A→.a12.A→a.
(2)所产生的NFA略。
由规则构造所需的DFA:
SSA
ba
aA
aa
b
bS
bA
a
bA
ASS
则LR(0)项目集规范族为:
C={I0,I1,I2,I3,I4,I5,I6,I7}
(3)可以看到I1,I6,I7存在着移进-归约的冲突。
冲突是不能用SLR
(1)的方法来解决。
比如I6:
对于状态S→AS.和S→.b
Follow(S)={#,a,b}与{b}相交不为空。
所以以上文法不是SLR
(1)文法。
(4)为验证该文法是否为LALR或LR
(1)的,构造LR
(1)项目集。
对于I5,产生了移进-归约矛盾,所以这个文法不是LR
(1)文法。
于是也不是LALR文法。
第6题
文法:
S→UTa|Tb
T→S|Sc|d
U→US|e
拓广文法为G'
,增加产生式S'
→S
→S
1 S→UTa
2 S→Tb
3 T→S
4 T→Sc
5 T→d
6 U→US
7 U→e
)={d,e}
First(S)={d,e}
First(U)={e}
First(T)={d,e}
Follow(S)={a,b,c,d,e,#}
Follow(U)={d,e}
Follow(T)={a,b}
在I1中:
S'
→S.为接受项目,T→S.为归约项目,T→S.c为移进项目,存在接受-归约和移进-归约冲突,因此所给文法不是LR(0)文法。
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)文法。
题目3的SLR
(1)分析表
a b c d e #
S U T
9
10
S5 S4
r3 r3 S6 Acc
S9..................
r7 r7
r5 r5........................
r4 r4.........................
S10 S9.........................
r3 r3. S6 r6 r6......
r2 r2. r2 r2 r2 r2
r1 r1. r1 r1 r1 r1
8 2 7
第8题
S→A# A→BaBb|DbDa B→ε D→ε
证明该文法是LR
(1)但不是SLR
(1)。
解:
若产生式排序为:
→A# 1 A→BaBb 2 A→DbDa 3 B→ε 4 D→ε
)={a,b}
First(A)={a,b}
First(B)={ε}
First(D)={ε}
)={#}
Follow(A)={#}
Follow(B)={a,b}
Follow(D)={a,b}
G′的LR
(1)项目集族及识别活前缀的DFA如下图所示:
B→.,a和T→.,b为归约项目,但它们的搜索符不同,若当前输入符为a时用产生式B→ε归约,为b时用产生式D→ε归约,所以该文法是LR
(1)文法。
若不看搜索符,在I0中项目B→.和T→.为归约-归约冲突,而
Follow(B)∩Follow(D)={a,b}∩{a,b}≠
,冲突不能用Follow集解决,所以该文法不是SLR
(1)文法。
构造的LR
(1)分析表如下:
题目4的LR
(1)分析表
State
a . b . #
A B D
r3 r4......
Acc
S4............
r3
r4............
S8
S9............
r1
r2
1 2 3
7
10.判断下列各题所示文法是否为LR类文法,若是请说明是LR(0)、SLR
(1)、LALR
(1)或LR
(1)的哪一种,并构造相应分析表
(1)S→ABA→aBa|εB→bAb|ε
(3)S→aAd|eBd|aBr|eArA→aB→a
(5)A→aB|εB→Ab|a
(6)S→(SR|aR→.SR|)
(1)解:
对于该文法构造LR(0)项目规范族:
I0:
S’→.SI1:
S’→S.I3:
A→a.BaI5:
B→b.AbI6:
A→aB.a
S→.ABI2:
S→A.BB→.bAbA→.aBaI7:
A→aBa.
A→.aBaB→.bAbB→.A→.I8:
B→bA.b
A->
.B→.I4:
S→AB.I9:
B→bAb.
可见存在着移进-归约冲突,这个文法不是LR(0)文法。
考虑用SLR
(1)来解决问题:
构造SLR
(1)分析表,发现该文法是SLR
(1)文法。
状态
ACTION
GOTO
a
b
S
B
s3
r5
r1
S3
S7
r2
S9
r4
(3)解:
先构造该文法的LR(0)项目集规范族:
S→e.BdI5:
S→aB.rI9:
S→aAd.
S→.AdI2:
S→a.AdB→.aI6:
A→a.I10:
S→aBr.
S→.eBdS→a.BrS→e.ArB→a.I11:
S→eBd.
S→.aBrA→.aA→.aI7:
S→eB.dI12:
S→eAr.
S→.eArB→.aI4:
S→aA.dI8:
S→eA.r
该文法存在着归约-归约冲突,所以不是LR(0)文法。
对于状态I6:
A→a.
B→a.
Follow(A)={dr}Follow(B)={dr}
两个集合相交不为空,所以该文法也不是SLR
(1)文法。
构造该文法的LR
(1)文法可得该文法是LR
(1)的。
S’→S,#I2:
S→a.Ad,#I4:
S→aA.d,#I10:
S→aAd.,#
S→.aAd,#S→a.Br,#I5:
S→aB.r,#I11:
S→aBr.,#
S→.eBd,#A→.a,dI6:
A→a.,dI12:
S→eBd.,#
S→.aBr,#B→.a,rB→b.,rI13:
S→eAr.,#
S→.eAr,#I3:
S→e.Bd,#I7:
S→eB.d,#
I1:
S’→S.,#S→e.Ar,#I8:
S→eA.r,#
B→.a,dI9:
B→a.,d
A→.a,rA→a.,r
构造LR
(1)分析表(略)。
(5)解:
构造LR(0)的分析表:
S→.AI3:
S->
aB.I6:
B->
AB.
A→.aBI4:
A.b
A→.I5:
a.
A.A->
a.B
I2:
a.BB->
.Ab
.AbB->
.a
.aA->
.aB
.aBA->
可以看到存在着移进-归约的冲突,不是LR(0)文法。
在I0中Follow(A)与{b}相交不为空。
所以也不为SLR
(1)文法。
构造该文法的LR
(1)项目集规范族:
.A,#I4:
A.b,#I9:
a.,b
.aB,#I5:
a.,#A->
a.B,b
.,#A->
a.B,bB->
.Ab,b
A.,#B->
.Ab,bB->
.a,b
a.B,#B->
.a,bA->
.aB,b
.Ab,#,B->
.aB,bA->
.,b
.a,#A->
.aB,bI10:
B->
AB.,b
.aB,bI6:
Ab.,#
.,bI7:
aB.,b
I3:
aB.,#I8:
A.b,b
其中存在冲突,所以文法也不是LR
(1)文法。
(6)解:
将文法拓广后得:
(0)S’→S
(1)S→(SR
(2)S→a
(3)R→.SR
(4)R→)
构造LR(0)的项目集规范族:
一个文法是LR(0)文法一定也是SLR
(1)文法,也是LR
(1)文法。
但反之则不一定成立。
I0~~I9无冲突项目,所以此文法是LR(0)文法。
构造其LR
(1)的DFA(构造过程中,在建立好初态集后,立即产生所有新状态的核集合,然后再逐步扩充):
核集合
项目集(核集合+闭包增加项目)
I0
S′→•S,#
S→•S,#
S→•(SR,#
S→•a,#
I1
S→S•,#
I2
S→(•SR,#
S→(•SR,#
S→•(SR,./)
S→•a,./)
I3
I4
S→(S•R,#
R→•.SR,#
R→•),#
I5
S→(•SR,./)
S→•(SR,./)--→I5
S→•a,./)--→I6
I6
S→a•,./)
I7
S→(SR•,#
I8
R→.•SR,#
I9
R→)•,#
I10
S→(S•R,./)
R→•.SR,./)
R→•),./)
I11
R→.S•R,#
R→•.SR,#--→I8
R→•),#--→I9
I12
S→(SR•,./)
I13
R→.•SR,./)
I14
R→)•,./)
I15
R→.SR•,#
I16
R→.S•R,./)
R→•.SR,./)--→I13
R→•),./)--→I14
I17
R→.SR•,./)
无移进-规约冲突和规约-规约冲突,此文法是LR
(1)文法。
对同心集合并,得LALR
(1)项目集规范族:
I2,5
S→(•SR,./)/#
I3,6
S→•a,./)/#
I4,10
S→(S•R,./)/#
I7,12
S→(SR•,./)/#
I8,13
R→.•SR,./)/#
I9,14
R→)•,./)/#
I11,16
R→.S•R,./)/#
I15,17
R→.SR•,./)/#
同心集合并后无冲突,其项目集的个数与LR(0)相同,此文法是LALR
(1)文法。
11.设文法G[S]为:
S→AS|εA→aA|b
(1)证明G[S]是LR
(1)文法
(2)构造出它的LR
(1)分析表
(3)给出输入符号串abab#的分析过程
一个文法不是SLR
(1)时,不能证明它是LR
(1)的
将文法改写为拓广文法:
(0)S’→S
(1)S→AS
(2)S→ε(3)A→aA(4)A→b
构造其LR
(1)项目集规范族:
S→•AS,#
S→•,#
A→•aA,a/b/#
A→•b,a/b/#
S→A•S,#
S→•AS,#--→I2
A→•aA,a/b/#--→I3
A→•b,a/b/#--→I4
A→a•A,a/b/#
A→b•,a/b/#
S→AS•,#
A→aA•,a/b/#
LR
(1)分析表:
S4
对abab#的分析过程:
步骤
状态栈
符号栈
输入串
abab#
03
bab#
034
#ab
ab#
036
02
023
#Aa
b#
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 参考 第六 作业 习题 参考答案