[理学]第5章 自顶向下语法分析方法.pptVIP

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

作业 阅读96页例题1. 做99页练习1、2(1)(2)(3) 7(1)(2)只对文法进行改写。 * 2.构造预测分析表 SELECT(E →TE) ={ ( , i } SELECT(E → +TE ) ={ + } SELECT(E → ε) ={ ) , # } SELECT(T →FT) ={ ( , i } SELECT(T → *FT ) ={ * } SELECT(T → ε) ={ + , ) , # } SELECT(F → ( E )) ={ ( } SELECT(F → i) ={ i } i + * ( ) # E →TE →TE E +TE → ε → ε T →FT →FT T → ε → *FT → ε → ε F → i → ( E ) * 运行: i + * ( ) # E →TE →TE E → +TE → ε →ε T →FT →FT T → ε → *FT → ε →ε F → i → ( E ) 分析栈 #E #ET #ETF #ETi #ET #E #ET+ #ET #ETF #ETi #ET #ETF* #ETF #ETi #ET #E # 剩余串 i+i*i# i+i*i# i+i*i# i+i*i# +i*i# +i*i# +i*i# i*i# i*i# i*i# *i# *i# i# i# # # # 产生式 E→TE T→FT F → i i 匹配 T → ε E → +TE + 匹配 T →FT F → i i 匹配 T → *FT * 匹配 F → i i 匹配 T → ε E → ε 接受 例:输入 i+i*i * * * S→AB S→bC A→ε A→b B→ε B→aD C→AD C→b D→aS D→c FOLLOW(S)={#}∪FOLLOW(D) FOLLOW(A)={a}∪{a,c}∪FOLLOW(S) FOLLOW(B)=FOLLOW(S) FOLLOW(C)=FOLLOW(S) FOLLOW(D)=FOLLOW(B)∪FOLLOW(C) FOLLOW(S)= {#} FOLLOW(A)= {a,c,#} FOLLOW(B)= {#} FOLLOW(C)= {#} FOLLOW(D)= {#} * 4.计算SELECT集 S→AB S→bC A→ε A→b B→ε B→aD C→AD C→b D→aS D→c FIRST(S)={a,b,ε} FIRST(A)={b, ε} FIRST(B)={a, ε} FIRST(C)={a,b,c} FIRST(D)={a,c} FIRST(AB)={a,b,ε} FIRST(AD)={a,b,c,ε} SELECT(S→AB)={a,b,#} SELECT(S→bC)={b} SELECT(A→ε)={a,c,#} SELECT(A→b)={b} SELECT(B→ε)={#} SELECT(B→aD)={a} SELECT(C→AD)={a,b,c} SELECT(C→b)={b} SELECT(D→aS)={a} SELECT(D→c)={c} FOLLOW(S)= {#} FOLLOW(A)= {a,c,#} FOLLOW(B)= {#} FOLLOW(C)= {#} FOLLOW(D)= {#} 该文法不是LL(1)文法。 * 5.3 某些非LL(1)文法到LL(1)文法的等价变换 LL(1)文法是无二义的 LL(1)文法不含左递归 非LL(1)文法的改造 提取左公共因子 消除左递归 * 提取左公共因子 A→αβ|αγ导致SELECT(A→αβ)∩ SELECT(A→αγ)≠Φ,因此为非LL(1)文法。 先把A→αβ|αγ等价变换为A→α(β|γ),然后: A→αA A → β|γ 写成一般形式: A→αβ1|αβ2|…|αβn 变换为A→α(β1|β2|…|βn) ,然后: A→αA A → β1|β2|…|βn * 例:文法G1[S] 为: S→aSn S→aS S→ε 化为: S→aS(n|ε) S→ε 进一步化为: S→aSA A→n A→ε S→ε 结果仍然不是LL(1)文法。 因此,文法中不含左公共因子只是LL(1)文法的必要条件。 * 例:文法G2为: A→ad A→Bc B→aA B→bB 1.化为: A→ad A→aAc A→bBc B→aA B→bB 2.化为: A→a(d|Ac) A→bBc B→aA B→bB 3.化为: A→aA A→bBc A→d A→Ac B→aA B→bB 结果是LL(1)文法。 * 例:文法G3[S] 为

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档