第五章 自顶向下语法分析方法要点.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
b匹配 bd # #db 9 M→ε bd # #dbM 8 a匹配 abd # #dbMa 7 A→aM abd # #dbA 6 M→Ab abd # #dM 5 a匹配 aabd # #dMa 4 H→ aMd aabd # #H 3 a匹配 aaabd # #Ha 2 S→ aH aaabd # #S 1 所用产生式 剩余输入串 分析栈 步骤 A-e A-aM A M-Ab M→ε M→ε M-Ab M H-d H-aMd H S-aH S e d b a 作业 2.(1)(2)(3) 5. 7.(3)(4) 文法G[S]: S→AB|bC A→ ε|b B→ ε |aD C→AD|b D→aS|c FIRST(S)={a, b ,ε} FIRST(A)={b ,ε} FIRST(B)={a ,ε} FIRST(C)={a,b,c} FIRST(D)={a,c} FOLLOW(S)={#} FOLLOW (A)={a,c,#} FOLLOW (B)={#} FOLLOW (C)={# } FOLLOW (D)={#} # FOLLOW ( S ) FOLLOW ( A ) FISRT ( D ) FOLLOW ( B ) FOLLOW ( D ) FOLLOW ( C ) FISRT ( B ) c a SELECT(S→AB)=(FIRST(AB)- ε) ∪FOLLOW(S)={a,b,#} SELECT(S→bC)=FIRST(bC)={b} SELECT(A→ ε)=(FIRST(ε)- ε) ∪ FOLLOW(A)={a,c,#} SELECT(A→b)={b} SELECT(B→ ε)=(FIRST(ε) - ε) ∪FOLLOW(B)={#} SELECT(B→aD)= FIRST(aD)={a} SELECT(C→AD)=FIRST(AD)={b,a,c} SELECT(C→b)=FIRST(b)={b} SELECT(D→aS)=FIRST(aS)={a} SELECT(D→c)={c} 4.计算SELECT集 FIRST(S)={a, b ,ε} FIRST(A)={b ,ε} FIRST(B)={a ,ε} FIRST(C)={a,b,c} FIRST(D)={a,c} FOLLOW(S)={#} FOLLOW (A)={a,c,#} FOLLOW (B)={#} FOLLOW (C)={# } FOLLOW (D)={#} 文法G[S]: S→AB|bC A→ ε|b B→ ε |aD C→AD|b D→aS|c ⒌对同一非终结符的不同产生式求Select交集 ∵ SELECT(S→AB)∩SELECT(S→bC)={b}≠Φ SELECT(A→ ε)∩SELECT(A→b)= Φ SELECT(B→ ε)∩ SELECT(B→aD)= Φ SELECT(C→AD) ∩ SELECT(C→b)={b}≠Φ SELECT(D→aS) ∩ SELECT(D→c) = Φ ∴ 该文法不是LL(1)文法。 SELECT(S→AB)=(FIRST(AB)- ε) ∪FOLLOW(S)={a,b,#} SELECT(S→bC)=FIRST(bC)={b} SELECT(A→ ε)=(FIRST(ε)- ε) ∪ FOLLOW(A)={a,c,#} SELECT(A→b)={b} SELECT(B→ ε)=(FIRST(ε) - ε) ∪FOLLOW(B)={#} SELECT(B→aD)= FIRST(aD)={a} SELECT(C→AD)=FIRST(AD)={b,a,c} SELECT(C→b)=FIRST(b)={b} SELECT(D→aS)=FIRST(aS)={a} SELECT(D→c)={c} 文法G[S]: S→AB|bC A→ ε|b B→ ε |aD C→AD|b D→aS|c 例2 文法G[E]: E→T E1 E1→+T E1 | ε T→FT1 T1→*F T1 | ε    F→(E) | a 判断是否是LL(1)文法。 SELECT(E1→+T E)∩SELECT(E1→ ε)={+}∩{),#}= Φ

文档评论(0)

ee88870 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档