求解FOLLOW集的方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
求解FOLLOW集的方法

求解FOLLOW集的方法 刚刚学习FOLLOW集时总是容易忽略一些条件而造成错误,学会FOLLOW集的求解对于编译原理的学习很重要,一旦求错就容易造成分析SLR(1)分析表时出现错误。 1、对文法中的每个A属于Vn,计算FOLLOW(A): (1)、对文法的开始符号S,将“$”加到FOLLOW(S)中; (2)、若A-aBb是一条规则,则把FIRST(b)中的非ε元素加到FOLLOW(B)中; (3)、若A-aB或A-aBb是一条规则且b=ε,则把FOLLOW(A)加到FOLLOW(B)中; (4)、反复使用(2)、(3),直到每个非终结符的FOLLOW集不再增大为止。 看完规则,难免觉得有些许枯燥,下面我将列举一个较复杂的例子,可以使用到上述的全部规则。 eg: 设有文法G[A]: A→BCc | gDB B→bCDE |ε C→DaB | ca D→dD |ε E→gAf | c 计算该文法的每一个非终结符的FIRST集和FOLLOW集。 解:(1)、FIRST集的求解: FIRST(A) = FIRST(BCc) ∪ FIRST(gDB) = FIRST(B) ∪ FIRST(C) ∪ {c} ∪ {g} = {b} ∪ FIRST(D) ∪ {a} ∪ {c,,g} = {a,b,c,d,g} 同理: FIRST(B) = {b,ε} FIRST(C) = {a,c,d} FIRST(D) = {d,ε} FIRST(E) = {g,c} (2)、接下来求解FOLLOW集: a、由于A是文法的开始符号,所以$属于FOLLOW(A),由E→gAf | c l利用规则(2)可知f属于FOLLOW(A),所以FOLLOW(A)={f,$} b、由A→BCc利用规则(2)把FIRST(C)中的非ε元素加到FOLLOW(B)中,利用规则(3)把 FOLLOW(A)加到FOLLOW(B)中;所以a,c,d,f,$属于FOLLOW(B).此外,由A→gDB ,C→DaB 利用规则(3)把FOLLOW(A),FOLLOW(C)加到FOLLOW(B)中,由于还没求FOLLOW(C),暂不求FOLLOW(B). c、由A→BCc利用规则(2)把FIRST(c)加入FOLLOW(C),则c属于FOLLOW(C), 由B→bCDE利用规则(2)将FIRST(D)中的非ε元素加入FOLLOW(C),则d属于FOLLOW(C),当FIRST(D)的元素为ε时,紧跟随在C后面的是E,所以FIRST(E)的非ε元素也应计入FOLLOW(C)中,则g也属于 FOLLOW(C),所以FOLLOW(C)={c,d,g} 由此可求得FOLLOW(B)={a,c,d,f,g,$} d、由A→gDB 利用规则(2)把FIRST(B)中的非ε元素加到FOLLOW(D)中,则b属于FOLLOW(D)。利用规则(3)把FOLLOW(A)加到FOLLOW(D)中,则f,$属于FOLLOW(D)。由B→bCDE利用规则(2) 将FIRST(E)的非ε元素加到FOLLOW(D)中,则g,c属于FOLLOW(D)。由 C→DaB 利用规则(2)把 FIRST(a)加到FOLLOW(D)中,则a属于FOLLOW(D)。则FOLLOW(D)={a,b,c,g,f,$} e、由B→bCDE 利用规则(3)把FOLLOW(B)加到FOLLOW(E)中,则FOLLOW(E)={a,c,d,f,g,$}

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档