编译原理第4章5素材.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.5.2 LR(0)分析法 例如:初态的项目集 GO(I0 , S ) = CLOSURE({S→S· }) = { S→S· } = I1 GO(I0 , a ) = CLOSURE({A→a·Ab , B→a·Bb}) = { A→a·Ab , A→·aAb , A→·c B→a·Bb , B→·aBb , B→·d } = I4 { S→·S , S→·A , S→·B, A→·aAb , A→·c ,B→·aBb , B→·d } I0= 4.5.2 LR(0)分析法 通过闭包函数(CLOSURE)和状态转移函数(GO)很容易构造出文法 G 的识别文法规范句型活前缀的DFA。 4.5.2 LR(0)分析法 (3) 构造识别文法规范句型活前缀DFA的方法 : (a) 求CLOSURE{S→?S},得到初态 项目集。 (b) 对初态项目集或其它已构造的项 目集,应用状态转移函数GO(I,X) 求出新的项目集(后继状态)。 4.5.2 LR(0)分析法 (d) 转移函数GO建立状态之间的连 结关系。 对前例中的文法,构造识别文法所有规范句型活前缀的DFA如下图所示: (c) 重复(b)直到不出现新的项目集 (新状态)为止。 0. S→S 1. S→A 2. S→B 3. A→aAb 4. A→c 5. B→aBb 6. B→d 4.5.2 LR(0)分析法 S→·S S→·A S→·B A→·aAb A→·c B→·aBb B→·d I0: I1: S→S· I2: S→A· I4: A→·aAb A→·c B→·aBb B→·d A→a·Ab B→a·Bb I5: A→c· I6: B→d· 识别文法G 活前缀的DFA S A B a c d c d a I3: S→B· 4.5.2 LR(0)分析法 I7: A→aA·b I8: A→aAb· I9: B→aB·b 识别文法G 活前缀的DFA I10: B→aBb· b b A B a S→·S S→·A S→·B A→·aAb A→·c B→·aBb B→·d I0: I1: S→S· I2: S→A· I4: A→·aAb A→·c B→·aBb B→·d A→a·Ab B→a·Bb I6: B→d· S A B a c d c d I3: S→B· I5: A→c· 4.5.2 LR(0)分析法 注意,DFA中的每一个状态都是终态,当M到达它们时,识别出某规范句型的一个活前缀,对那些只含归约项目的项目集,如I2、I3、I5 、 I6、I8、I10,当M到达这些状态时,表示已识别出一个句柄,这些状态称为句柄识别态。 当M处于状态I1时,M识别的活前缀为S,表示输入串已成功分析完毕,用S→S进行最后一次归约,称状态为接受状态。 4.5.2 LR(0)分析法 构成识别一个文法活前缀的DFA的状态(项目集)的全体称为这个文法的LR(0)项目集规范族。 (4) LR(0)分析表的构造 : 若一个文法G的拓广文法G的LR(0)项目集规范族中的每个项目集不存在移进项目和归约项目同时并存或多个归约项目同时并存,则称G为LR(0)文法。 4.5.2 LR(0)分析法 I7: A→aA·b I8: A→aAb· I9: A→aB·b 识别文法G 活前缀的DFA I10: B→aBb· b b A B a S→·S S→·A S→·B A→·aAb A→·c B→·aBb B→·d I0: I1: S→S· I2: S→A· I4: A→·aAb A→·c B→·aBb B→·d A→a·Ab B→a·Bb I6: B→d· S A B a c d c d I3: S→B· I5: A→c· 4.5.2 LR(0)分析法 对LR(0)文法,构造LR(0)分析表的算法如下: 输入:识别LR(0)文法G规范句型活 前缀的DFA 输出:文法G的LR(0)分析表 方法:用整数 0, 1, 2, …,n 分别表示 状态 I0, I1, I2 …, In, 令包含项目 S→?S 的集合 Ik 的下标为分析 器的初始状态。 4.5.2 LR(0)分析法 若项目A→α?xβ属于 Ik, 且转换函数 GO(Ik , x)=Ii , 当 x 为终结符时,则置ACTION[k, x]=Si。 2. 当 x 为非终结符时,则置 GOTO[k, x]=i。 见图 见图 见表 见表 4.5.2 LR(0)

文档评论(0)

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

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

1亿VIP精品文档

相关文档