作业参考答案.docx
- 文档编号:23858568
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:17
- 大小:111.16KB
作业参考答案.docx
《作业参考答案.docx》由会员分享,可在线阅读,更多相关《作业参考答案.docx(17页珍藏版)》请在冰豆网上搜索。
作业参考答案
第7章LR分析
1.已知文法A—aAdaAb|£
判断该文法是否是SLR(l)文法,若是构造相应分析表,并对输入串ab#给
出分析过程。
答案:
文法:
A~*aAdaAb£
拓广文法为G',增加产生式9一A
若产生式排序为:
0S'—A
1AfaAd
2AfaAb
3A-*e
由产生式知:
First(S')={e,a}
First(A)={£,a}
Follow(A)={d,b,#}
G'的LR(0)项目集规范族及识别活前缀的DFA如下图所示:
在10中:
A.aAd和A—.aAb为移进项目,A为归约项目,存在移进-归约冲突,因此所给文法不是LR(0)文法。
在10、12中:
Follow(A)n{a}={d,b,#}A{a}=4>
所以在10.12中的移进-归约冲突可以由Follow集解决,所以G是SLR(l)文法。
构造的SLR(l)分析表如下:
题目1的SLR(l)分析表
状态(State)
Action
Goto
a
d
b
A
0
S2
r3
r3
r3
1
1
acc
二
S2
r3
r3
r3
3
3
S4
S5
1
rl
rl
rl
r2
r2
对输入串ab#的分析过程
状态栈(statestack)
文法符号栈
剩余输入串
(inputleft)
动作(action)
D
ab#
移进
b2
b#
归约Af£
p23
fiaA
b#
移逬
P235
#aAb
归纟勺A—aAb
°1
#A
成功
10.判断下列各题所示文法是否为LR类方法,若是请说明是
LR(O),SLR
(1),LALR
(1)或LR⑴的哪一种,并构造相应的分析表,若不是请说明理由.
(3)S~>aAdeBdaBr'jeAr
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(O)项目集族及识别活前缀的DFA如下图所示:
从上图中看出项目集16中存在归约-归约冲突,所以该文法不是LR(O)文法。
下面判断是否为SLR(l)文法:
Follow(A)={d,r}
Follow(B)={d,r}
对于16,Follow(A)nFollow(B)={d,r}不为4),所以项目集16中的归约-归约冲突不能消除,该文法不是SLR(l)文法。
从上图可以看出原来存的的归约-归约冲突已经消除,所以该文法为LR⑴文法。
但若合并同心项目集16和113,则归约-归约冲突又会重现,因此该文法不是LALR(l)文法。
3)LR
(1)分析表
Action
Goto
State
aedr
SA
U
B
0
S2S3
1
1
acc
2
S6
4
5
3
S13
8
7
4
S9
5
S10
6
R5R6
7
Sil
8
S12
9
R1
10
R3
11
R2
12
R4
13
R6R5
11•设文法G[S]为:
S->AS|e
A->aAb
(1)证明G[S]是LR[1]文法;
扩展文法G'为:
(0)S'->S
(1)S->AS
(2)S->e
(3)A~>aA
(4)A->b
G‘的LR⑴项目集族及识别活前缀的DFA如下图所示:
从上图中可以看出,每个项目集中均无移进-归约冲突和归约-归约冲突,所以该文法为LR⑴文法。
(2)构造它的LR⑴分析表;
Action
Goto
State
ab
n
s
A
0
S3S4
R2
1
2
1
acc
2
S3S4
R2
5
2
3
S3S4
6
4
R4R4
R4
5
R1
6
R3R3
R3
(3)给出输入符号串abab#的分析过程。
符号输入缓冲
动作
序号状态栈
栈区
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->e
10
0225
#AAS
Rl,归约S->AS
11
025
#AS
Rl,归约S->AS
12
01
ns
acc成功
15.已知文法为:
S->a|A|(T)
T->T,SS
⑴构造它的LR(O),LALR(l),LR⑴分析表;
扩展文法L为:
(0)
S'->s
(1)
S->a
(2)
S->A
(3)
S->(T)
(4)
T->T,S
(5)
T->S
l)LR(O)项目集族及识别活前缀的DFA如下图所示:
R5
7
R3R3R3R3R3
R3
8
S2S3S4
9
9
R4R4R4R4R4
R4
2)LR
(1)项目集族及识别活前缀的DFA如下图所示:
图中笃”为文法符号。
说明:
对于14中的项目T->.T,S和T->.S,先由项SS-X.T),#推出扩展项目的搜索符为“)”,再由T->.T,S,)扩展出新的搜索符“,”,合并后的搜索符为“)/,”o
LR
(1)分析表:
Action
Goto
State
aA(),U
ST
0
S2S3S4
1
1
acc
2
R1
3
R2
4
S7S8S9
65
5
S10Sil
6
R5R5
7
R1R1
8
R2R2
9
S7S8S9
6
12
10
R3
11
S7S8S9
13
12
S14Sil
13
R4R4
14
R3R3
LALR(l)分析表需将上面DFA中的同心项目(同底色)的项目集合并后考虑,将状态数大的合并入状态数小的项目集中,在此不再另画图。
LALR(l)分析表:
Action
Goto
State
aA(),#
ST
0
S2S3S4
1
1
acc
2
R1R1
R1
3
R2R2
R2
4
S2S3S4
65
5
S10Sil
6
R5R5
10
R3R3
R3
11
S2S3S4
13
13
R4R4
⑵给出对输入符号串(a#和(ay#的分析过程;
1)对输入符号串(a#的分析过程
用LR(O)分析表
序号
状态
栈
符号
栈
输入缓冲
区
动作
1
0
(a#
S4,移进
2
04
#(
a#
S2,移进
3
042
#(a
U
Rl,归约S->a
4
046
#(S
U
R5,归约T->S
5
045
ft(T
ft
出错
用LR⑴分析表
序号
状态栈
符号
栈
输入缓冲
区
动作
1
0
n
(a#
S4,移进
2
04
#(
a#
S7,移进
3
047
ti
错误
用LALR(l)分析表
序号
状态栈
符号
栈
输入缓冲
区
动作
1
0
#
(a#
S4,移进
2
04
#(
an
S2,移进
3
042
#(a
R1,归约S->a
4046#(sn错误
2)对输入符号串(a,att的分析过程
用LR(0)分析表
符号输入缓冲
序号状态栈动作
栈区
1
0
n
(a,a#
S4,移进
2
04
#(
a,a#
S2,移进
3
042
#(a
a#
Rl,归约S->a
4
046
#(S
a#
R5,归约T->S
5
045
#(T
att
S&移进
6
0458
#(T,
a#
S2,移进
7
04582
#(T,a
Rl,归约S->a
8
04589
#(T,S
R4,归约T->T,S
9
045
#(T
出错
用LR
(1)分析表
序号
状态栈
符号
栈
输入缓冲
区
动作
1
0
n
(a,a#
S4,移进
2
04
#(
a,a#
S7,移进
3
047
#(a
a#
Rl,归约S->a
4
046
#(s
R5,归约T->S
5
045
#(T
a#
Sil,移进
6
045(11)
#(T,
a#
S7,移进
7
045(11)7
#(T,a
#
出错
符号
输入缓冲
序号
状态栈
栈
区
用LALR(l)分析表
动作
1
0
(a,a#
S4,移进
2
04
#(
a,a#
S2,移进
3
042
#(a
a#
Rl,归约S->a
4
046
#(S
a#
R5,归约T->S
5
045
#(T
a#
Sil,移进
6
045(11)
#(T,
a#
S2,移进
7
045(11)2
#(T,a
n
Rl,归约S->a
8
045(11)(13)
#(T,S
n
出错
⑶说明
(1)中三种分析表发现错误的时刻和输入串的出错位置有何区别。
见
(2),由此二例说明,对于错误分析,LR
(1)的效率最高,LALR(l)次之,LR(O)最差。
补充题:
GES1文法如下,求其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)方法:
由上图中可以看到18中存在归约-归约冲突,19中存在移进-归约冲突,
所以该文法不是LR(O)文法
2)再判断是否为SLR(l)文法:
Follow(S)={#}
Follow(A)={a,b}
Follow(B)={a}
Follow(C)={b,ft}
Follow(D)={b}
2对于18,Follow(A)nFollow(B)={a},不为空,因此该文法不是SLR(l)
文法。
3)判断是否为LR
(1)文法:
得到再由C-*.Cba,#得到b。
由上图可看出原先18,19存在的冲突已消除,所以为LR
(1)文法。
LR⑴分析表:
Action
Goto
State
abtt
SABC
D
0
S3
12
1
acc
2
S4
3
R6
4
S8
67
5
5
S10
9
6
R4
7
SU
8
R7R6
9
S12R1
10
S14
11
R5
12
S13
13
R2R2
14
R3R3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作业 参考答案