- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理第7章答案
第七章 LR分析法
1.已知文法
A(aAd|aAb|ε
判断该文法是否是SLR(1)文法,若是构造相应分析表,并对输入串ab#给出分析过程。
解:增加一个非终结符S/后,产生原文法的增广文法有:
S/(A
A(aAd|aAb|ε
下面构造它的LR(0)项目集规范族为:
a b d # A I0:
S/(?A
A(?aAd
A(?aAb
A(? I2:
A(a?Ad
A(a?Ab
A(?aAd
A(?aAb
A(? I1:
S/(A? I1:
S/(A? acc I2:
A(a?Ad
A(a?Ab
A(?aAd
A(?aAb
A(? I2 I3:
A(aA?d
A(aA?b I3:
A(aA?d
A(aA?b I4:
A(aAb? I5:
A(aAd? I4:
A(aAb? I5:
A(aAd? 从上表可看出,状态I0和I2存在移进-归约冲突,该文法不是LR(0)文法。
对于I0来说有
FOLLOW(A)∩{a}={b,d,#}∩{a}=Φ
所以在I0状态下面临输入符号为a时移进,为b,d,#时归约,为其他时报错。
对于I2来说有也有与I0完全相同的结论。
这就是说,以上的移进-归约冲突是可以解决的,因此该文法是SLR(1)文法。其他SLR(1)分析表为:
下面构造它的SLR(1)项目集规范族为:
表7.1.1 文法的SLR(1)分析表
状态 ACTION GOTO a b d # A 0 S2 r1 r2 r3 1 1 acc 2 S2 r1 r2 r3 3 3 S4 S5 4 r2 r2 r2 r2 5 r1 r1 r1 r1
对输入串ab#给出分析过程为:
步骤 状态栈 符号栈 输入串 ACTION GOTO 1 0 # ab# S2 2 02 #a b# r3 3 3 023 #aA b# S4 4 0234 #aAb # r2 1 5 01 #A # acc 15.已知文法为:
S(a|^|(T)
T(T,S|S
构造它的LR(0),LALR(1),LR(1)分析表。
给出对输入符号串(a#和(a,a#的分析过程。
说明(1)中三种分析表发现错误的时刻和输入串的出错位置有何区别。
解:
(1)加入非终结符S/,方法的增广文法为:
S/(S
S(a
S(^
S((T)
T(T,S
T(S
下面构造它的LR(0)项目集规范族为:
a ^ ( ) , # S T I0:
S/(?S
S(?a
S(?^
S(?(T) I2:
S(a? I3:
S(^? I4:
S((?T)
T(?T,S
T(?S
S(?a
S(?^
S(?(T) I1:
S/(S? I1 acc I2 I3 I4:
S((?T)
T(?T,S
T(?S
S(?a
S(?^
S(?(T) I2 I3 I4 I6:
T(S? I5:
S((T?)
T(T?,S
I5:
S((T?)
T(T?,S I7:
S((T)?
I8:
T(T,?S
S(?a
S(?^
S(?(T) I6 I7: I8:
T(T,?S
S(?a
S(?^
S(?(T) I2 I3 I4 I9
T(T,S?
I9 从上表可看出,不存在移进-归约冲突以及归约归约冲突,该文法是LR(0)文法。从而有下面的LR(0)分析表:
表7.15.1 文法的LR(0)分析表
状态 ACTION GOTO a ^ ( ) , # S T 0 S2 S3 S4 1 1 acc 2 r1 r1 r1 r1 r1 r1 3 r2 r2 r2 r2 r2 r2 4 S2 S3 S4 6 5 5 S7 S8 6 r5 r5 r5 r5 r5 r5 7 r3 r3 r3 r3 r3 r3 8 S2 S3 S4 9 9 r4 r4 r4 r4 r4 r4
下面构造它的LR(1)项目集规范族为:
a ^ ( ) , # S T I0:
S/(?S,#
S(?a,#
S(?^,#
S(?(T),# I2:
S(a?,# I3:
S(^?,# I4:
S((?T),#
T(?T,S,),
T(?S,),
S(?a,),
S(?^,),
S(?(T),), I1:
S/(S?,# I1 acc I2 I3 I4:
S((?T),#
T(?T,S,),
T(?S,),
文档评论(0)