第7章作业参考答案.docx
- 文档编号:25944275
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:16
- 大小:220.69KB
第7章作业参考答案.docx
《第7章作业参考答案.docx》由会员分享,可在线阅读,更多相关《第7章作业参考答案.docx(16页珍藏版)》请在冰豆网上搜索。
第7章作业参考答案
第7章LR分析
1.已知文法A→aAd|aAb|ε
判断该文法是否是SLR
(1)文法,若是构造相应分析表,并对输入串ab#给出分析过程。
答案:
文法:
A→aAd|aAb|ε
拓广文法为G′,增加产生式S′→A
若产生式排序为:
0S'→A
1A→aAd
2A→aAb
3A→ε
由产生式知:
First(S')={ε,a}
First(A)={ε,a}
Follow(A)={d,b,#}
G′的LR(0)项目集规范族及识别活前缀的DFA如下图所示:
在I0中:
A→.aAd和A→.aAb为移进项目,A→.为归约项目,存在移进-归约冲突,因此所给文法不是LR(0)文法。
在I0、I2中:
Follow(A)∩{a}={d,b,#}∩{a}=φ
所以在I0、I2中的移进-归约冲突可以由Follow集解决,所以G是SLR
(1)文法。
构造的SLR
(1)分析表如下:
题目1的SLR
(1)分析表
对输入串ab#的分析过程
10.判断下列各题所示文法是否为LR类方法,若是请说明是LR(0),SLR
(1),LALR
(1)或LR
(1)的哪一种,并构造相应的分析表,若不是请说明理由.
(3)S->aAd|eBd|aBr|eAr
A->a
B->a
答案:
1)列出扩展文法G'的产生式列表:
(0)S'->S
(1)S->aAd
(2)S->eBd
(3)S->aBr
(4)S->eAr
(5)A->a
(6)B->a
2)G'的LR(0)项目集族及识别活前缀的DFA如下图所示:
从上图中看出项目集I6中存在归约-归约冲突,所以该文法不是LR(0)文法。
下面判断是否为SLR
(1)文法:
Follow(S)={#}
Follow(A)={d,r}
Follow(B)={d,r}
对于I6,Follow(A)∩Follow(B)={d,r}不为φ,所以项目集I6中的归约-归约冲突不能消除,该文法不是SLR
(1)文法。
下面判断是否为LR
(1)文法,在上面的项目集规范族中加入搜索符:
从上图可以看出原来存的的归约-归约冲突已经消除,所以该文法为LR
(1)文法。
但若合并同心项目集I6和I13,则归约-归约冲突又会重现,因此该文法不是LALR
(1)文法。
3)LR
(1)分析表
Action
Goto
State
aedr#
SAB
0
S2S3
1
1
acc
2
S6
45
3
S13
87
4
S9
5
S10
6
R5R6
7
S11
8
S12
9
R1
10
R3
11
R2
12
R4
13
R6R5
11.设文法G[S]为:
S->AS|ε
A->aA|b
(1)证明G[S]是LR[1]文法;
扩展文法G’为:
(1)S’->S
(2)S->AS
(3)S->ε
(4)A->aA
(5)A->b
G'的LR
(1)项目集族及识别活前缀的DFA如下图所示:
从上图中可以看出,每个项目集中均无移进-归约冲突和归约-归约冲突,所以该文法为LR
(1)文法。
(2)构造它的LR
(1)分析表;
Action
Goto
State
ab#
SA
0
S3S4R2
12
1
acc
2
S3S4R2
52
3
S3S4
6
4
R4R4R4
5
R1
6
R3R3R3
(3)给出输入符号串abab#的分析过程。
序号
状态栈
符号栈
输入缓冲区
动作
1
0
#
abab#
S3,移进
2
03
#a
bab#
S4,移进
3
034
#ab
ab#
R4,归约A->b
4
036
#aA
ab#
R3,归约A->aA
5
02
#A
ab#
S3,移进
6
023
#Aa
b#
S4,移进
7
0234
#Aab
#
R4,归约A->b
8
0236
#AaA
#
R3,归约A->aA
9
022
#AA
#
R2,归约S->ε
10
0225
#AAS
#
R1,归约S->AS
11
025
#AS
#
R1,归约S->AS
12
01
#S
#
acc成功
15.已知文法为:
S->a|∧|(T)
T->T,S|S
(1)构造它的LR(0),LALR
(1),LR
(1)分析表;
扩展文法G’为:
(1)S’->S
(2)S->a
(3)S->∧
(4)S->(T)
(5)T->T,S
(6)T->S
1)LR(0)项目集族及识别活前缀的DFA如下图所示:
LR(0)分析表:
Action
Goto
State
a∧(),#
ST
0
S2S3S4
1
1
acc
2
R1R1R1R1R1R1
3
R2R2R2R2R2R2
4
S2S3S4
65
5
S7S8
6
R5R5R5R5R5R5
7
R3R3R3R3R3R3
8
S2S3S4
9
9
R4R4R4R4R4R4
2)LR
(1)项目集族及识别活前缀的DFA如下图所示:
图中“,”为文法符号。
说明:
对于I4中的项目T->.T,S和T->.S,先由项目S->(.T),#推出扩展项目的搜索符为“)”,再由T->.T,S,)扩展出新的搜索符“,”,合并后的搜索符为“)/,”。
LR
(1)分析表:
Action
Goto
State
a∧(),#
ST
0
S2S3S4
1
1
acc
2
R1
3
R2
4
S7S8S9
65
5
S10S11
6
R5R5
7
R1R1
8
R2R2
9
S7S8S9
612
10
R3
11
S7S8S9
13
12
S14S11
13
R4R4
14
R3R3
LALR
(1)分析表需将上面DFA中的同心项目(同底色)的项目集合并后考虑,将状态数大的合并入状态数小的项目集中,在此不再另画图。
LALR
(1)分析表:
Action
Goto
State
a∧(),#
ST
0
S2S3S4
1
1
acc
2
R1R1R1
3
R2R2R2
4
S2S3S4
65
5
S10S11
6
R5R5
10
R3R3R3
11
S2S3S4
13
13
R4R4
(2)给出对输入符号串(a#和(a,a#的分析过程;
1)对输入符号串(a#的分析过程
用LR(0)分析表
序号
状态栈
符号栈
输入缓冲区
动作
1
0
#
(a#
S4,移进
2
04
#(
a#
S2,移进
3
042
#(a
#
R1,归约S->a
4
046
#(S
#
R5,归约T->S
5
045
#(T
#
出错
用LR
(1)分析表
序号
状态栈
符号栈
输入缓冲区
动作
1
0
#
(a#
S4,移进
2
04
#(
a#
S7,移进
3
047
#(a
#
错误
用LALR
(1)分析表
序号
状态栈
符号栈
输入缓冲区
动作
1
0
#
(a#
S4,移进
2
04
#(
a#
S2,移进
3
042
#(a
#
R1,归约S->a
4
046
#(S
#
错误
2)对输入符号串(a,a#的分析过程
用LR(0)分析表
序号
状态栈
符号栈
输入缓冲区
动作
1
0
#
(a,a#
S4,移进
2
04
#(
a,a#
S2,移进
3
042
#(a
a#
R1,归约S->a
4
046
#(S
a#
R5,归约T->S
5
045
#(T
a#
S8,移进
6
0458
#(T,
a#
S2,移进
7
04582
#(T,a
#
R1,归约S->a
8
04589
#(T,S
#
R4,归约T->T,S
9
045
#(T
#
出错
用LR
(1)分析表
序号
状态栈
符号栈
输入缓冲区
动作
1
0
#
(a,a#
S4,移进
2
04
#(
a,a#
S7,移进
3
047
#(a
a#
R1,归约S->a
4
046
#(S
a#
R5,归约T->S
5
045
#(T
a#
S11,移进
6
045(11)
#(T,
a#
S7,移进
7
045(11)7
#(T,a
#
出错
用LALR
(1)分析表
序号
状态栈
符号栈
输入缓冲区
动作
1
0
#
(a,a#
S4,移进
2
04
#(
a,a#
S2,移进
3
042
#(a
a#
R1,归约S->a
4
046
#(S
a#
R5,归约T->S
5
045
#(T
a#
S11,移进
6
045(11)
#(T,
a#
S2,移进
7
045(11)2
#(T,a
#
R1,归约S->a
8
045(11)(13)
#(T,S
#
出错
(3)说明
(1)中三种分析表发现错误的时刻和输入串的出错位置有何区别。
见
(2),由此二例说明,对于错误分析,LR
(1)的效率最高,LALR
(1)次之,LR(0)最差。
补充题:
G[S]文法如下,求其LR分析表
1.S→AaDC
2.C→Cba
3.C→ba
4.D→A
5.D→Ba
6.A→b
7.B→b
答:
扩展文法G’为:
0.S’→S
1.S→AaDC
2.C→Cba
3.C→ba
4.D→A
5.D→Ba
6.A→b
7.B→b
答:
1)首先判断是否为LR(0)方法:
由上图中可以看到I8中存在归约-归约冲突,I9中存在移进-归约冲突,所以该文法不是LR(0)文法
2)再判断是否为SLR
(1)文法:
Follow(S)={#}
Follow(A)={a,b}
Follow(B)={a}
Follow(C)={b,#}
Follow(D)={b}
2对于I8,Follow(A)∩Follow(B)={a},不为空,因此该文法不是SLR
(1)文法。
3)判断是否为LR
(1)文法:
说明:
上图中I8中C→.Cba,#/b中的搜索符#/b分二步得到,先由S->,#得到#,再由C→.Cba,#得到b。
由上图可看出原先I8,I9存在的冲突已消除,所以为LR
(1)文法。
LR
(1)分析表:
Action
Goto
State
ab#
SABCD
0
S3
12
1
acc
2
S4
3
R6
4
S8
675
5
S10
9
6
R4
7
S11
8
R7R6
9
S12R1
10
S14
11
R5
12
S13
13
R2R2
14
R3R3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业 参考答案