第五章 语法分析-自下而上分析解析.pptVIP

  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文档。上传文档
查看更多
规范归约基本概念 例:考虑文法G(E):E→E +T |T T→T*F | F F→i| (E) 并假定输入串为(i+i)*i,考察自下而上的分析过程。 分析过程图表: 例:考虑文法G(E):E→E +T |T T→T*F | F F→i| (E) 是否是算符文法? 优先关系: 例:考虑文法G(E):E→E +T |T T→T*F | F F→i| (E) 是否是算符优先文法? 如何从文法构造优先关系表? 算符优先分析算法 优先函数 例: 表达式文法G[E],构造其LR(0)项目规范簇和SLR(1)分析表。 G[E]: E→E+T?T T→T*F?F F→(E) ? i 3、解决冲突 I4 : A→a.Ab B→a.Bd A→.aAb B→.aBd A→.c B→.d I5=GO(I0,c)=closure({A→c.}) I5 : A→c. I6=GO(I0,d)=closure({B→d.}) I6 :B→d. I1, I2,I3,I5,I6均无后继项目集,仅I4有后继项目集: I7 =GO(I4,A)=closure({A→aA.b})={A→aA.b} I9 =GO(I4,B)=closure({B→aB.d})={B→aB.d} 此外,还有: GO(I4,a)=closure({A→a.Ab, B→a.Bd})= I4 GO(I4,c)=closure({A→c.})= I5 GO(I4,d)=closure({B→d.})= I6 这些项目集均不产生新的项目集。另外还有: I8 =GO(I7,b)=closure({A→aAb.})={A→aAb.} I10 =GO(I9,b)=closure({B→aBd.})={B→aBd.} I8 , I10也后继项目集。 G[S‘]的全部项目集即为I0~ I10 。 将这些项目集的全体称为文法G[S]的LR(0)项目集规范族,并记为C=(I0, I1,…, I10) 识别文法G[S]的全部活前缀的DFA为 M=(C,V,GO, I0,Z) 其中C—M的状态集,即文法G[S]的LR(0)项目集规范族I0~ I10 V— M的字母表,即V={S,S,A,B,a,b,c,d}; GO—M的状态转换函数,即上面定义的状态转移函数GO; I0—M的唯一初态; Z—M的终态集, Z?C为规范族中所有含有归约项目的 那些项目集。 DFA: I0 : S→.S S→.A S→.B A→.aAb A→.c B→.aBd B→.d I1 :S→S. I2 :S→A. I3 :S→B. I4 :A→a.Ab B→a.Bd A→.aAb A→.c B→.aBd B→.d I8 :A → aAb. I7 :A → aA.b I9 :B → aB.d I10 :B → aBd. I5 :A→c. I6 :B→d. A B d b c d d a c S A B a 4、LR(0)分析表的构造 要求每一个项目集中的的诸项目不出现下列的情况: (1)移进项目和归约项目并存,即存在移进—归约冲突; (2)多个归约项目并存,即存在归约—归约冲突。 如果一个文法G满足上述条件,也就是它的每个LR(0)项目集中都不含有冲突的项目,则称G为LR(0)文法。 只有当一个文法是LR(0)文法时,才能对它构造不含冲突动作的LR(0)分析表。 构造LR(0)分析表的算法为: (1)对于每一项目集Ii中形如A→?.X?的项目,且有GO(Ii,X)=Ij, 若X为一终结符号 a 时,则置ACTION[i,a]=Sj; 若X为一非终结符号时,则置GOTO[i,X]=j (2)若Ii中有归约项目A

文档评论(0)

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

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

1亿VIP精品文档

相关文档