第四章 文法和语法分析.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文档。上传文档
查看更多
第四章 文法和语法分析

第四章 文法与语法分析 4.8. 形如A--Aa 的产生式称为左递归的,类似地称B--βB 的产生式为右递归的。证明如果一个非终极符既有左又有右递归式,则文法一定有二义性。 答案: 设文法的非终极符A,有产生式 A→Aα|α A→βA|β 字符串βα 符合文法的要求,但分析树有两种 A A / \ / \ A α β A | | β α 因此非终极符既有左递归式,又有右递归式,则一定有二义性。 4.12. 下列那些文法是LL(1)文法? 答案: LL(1)文法的条件:对于任意非终极符A,其任意两个产生式A-α和A-β都要满足下面条件: predict(A-α)∩predict(A-β)=Ф; (a) 因为非终极符B 不可到达,所以最后两个产生式可以去掉。对具有相 同左部的产生式A-a 和A-λ,它们的Predict 集的交集为空: predict(A-a)={a};Predict(A-λ)={b} 故a)所示文法是LL(1)文法。 (b) 1)A,B 可导出空 2)first(A)={a,b,λ},first(B)={b,λ},first(S)={a,b} follow(A)={b}, follow(B)={b}, follow(S)={#} predict(S-Ab)={a,b}, predict(A-a)={a},predict(A-B)={b},predict(A-λ)={b} predict(B-b)={b},predict(B-λ)={b} 因为predict(A-B)∩predict(A-λ)={b}!=Ф predict(B-b)∩predict(B-λ)={b}!=Ф 所以不是LL(1)文法 (c) 1)S,A,B 可导出空 2)first(S)={a,b},first(A)={a,λ},first(B)={b,λ} follow(S) ={#},follow(A) ={a,b,#},follow(B) ={a,b,#} predict(S-ABBA)={a,b,#} predict(A-a)={a},predict( A-λ )={a,b,#} (*) predict(B-b)={b},predict(B-λ)={a,b,#} (**) 由(*)和(**)两行知,不是LL(1)文法. (d) 1)没有非终极符可导出空 2)first(C)={c,d},first(B)={b,c,c},first(S)={a,b,c,d} follow(S)={e,#},follow(B)={e,#},follow(C)={c,e,#} predict(S-aSe)={a},predict(S-B)={b,c,d} predict(B-bBe)={b},predict(B-C)={c,d} predict(C-cCc)={c},predict(C-d)={d} 因为满足LL(1)文法的条件,所以是LL(1)文法. 4.13 对下列文法构造LL(1)分析表: E ---E E --(E) E --Var Etail Etail ---E Etail --λ Var --id Vtail Vtail --(E) Vtail --λ 答案: First(E)={-, (, id} Follow(E)={#,)} First(Etail)={-, λ} Follow(Etail)={#,)} First(Var)={ id } Follow(Var)={-,#,)} First(Vtail)={ (, λ} Follow(Vtail){-,#,)} [1] predict (E→-E)={¨ } [2] predict (E→(E))={(} [3] predict (E→Var Etail)={id} [4] predict (Etail→-E)={¨ } [5] predict (Etail→λ)={#,)} [6] predict (Var→id Vtail)={id} [7] predict (Vtail→(E))={(} [8] predict (Vtail→λ)={¨ ,#,)} 4.14 写出上述LL(1)分析器分析i--i(i)的过程,其中i 是标志符。 4.15 对下列文法转换为LL(1)文法: DL --DL;D DL --D D --idL: Type idL --id idL --idL, id Type --Stype Type --array (StypeL) of Type Sttype --id STtype --Bound..Bound Bound --Sign IntLiteral Bound --id Sign --+ Sign --- STypeL

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档