《SLR分析表的构造》课件.pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  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文档。上传文档
查看更多
有效项目 如果存在规范推导 则项目A??1·?2 对活前缀 ??1 是有效的。 如果?2 ? ?,应该移进 如果?2 = ?,应该用产生式A??1归约 5.3.3 SLR分析表的构造 SLR(1)分析法的引入: LR(0)文法的活前缀识别自动机的每一状态(项目集)都不含冲突性的项目 大多数的程序设计语言的文法不能满足LR(0)文法的条件 用向前查看一个符号的办法解决冲突 例:设文法G的LR(0)项目集规范族中含有如下一个项目集(状态)I: I = { X?? ?b? /*移进项目*/ A??? /*归约项目*/ B?γ? /*归约项目*/ } 用SLR(1)方法解决冲突 假定LR(0)规范族的一个项目集I中含有m个移进项目: A1→α·a1β1,A2→α·a2β2,…,Am→α·amβm 同时含有n个归约项目: B1→α1·, B2→α2·, …, Bn→αn· 如果集合{a1,…,am}、FOLLOW(B1)、…、FOLLOW(Bn)两两不相交,a是现行输入符号,则: (1)若a是某个ai,i=1,2,…,m,则移进; (2)若a∈FOLLOW(Bi),i=1,2,…,n, 则用产生式Bi→αi进行归约; (3)此外,报错。 例5.11 p111 考虑下面的拓广文法 (文法5.8) (0) S?? E (1) E? E+T (2) E? T (3) T? T*F (4) T? F (5) F? (E) (6) F? I 构造其LR(0)项目集规范族 SLR(1) 解决方法 FOLLOW(S′) = { # }, {#}∩{+}=φ,因此I1中的冲突可解决。 遇 ‘+’移进 ,遇 ‘#’接受 其它情况则报错。 FOLLOW(E) = { +, ) , # } FOLLOW(E)∩{*}= φ,因此I2中的冲突可解决。 FOLLOW(E) = { + , ) , # } FOLLOW(E)∩{*}= φ,因此I9中的冲突可解决。 构造SLR(1)分析表 (1)若 A→α·aβ 属于Ik , 且GO(Ik, a)=Ij , 则置 ACTION[k, a] 为 sj (2)若 A→α· 属于Ik,a∈FOLLOW(A) , 则置 ACTION[k,a] 为 rj j是产生式A→α的编号 。 (3)若 S?→S·属于Ik, 则置 ACTION[k,#]为 acc (4)若 GO(Ik,A)=Ij , 则置 GOTO[k, A]=j (5)凡不能用规则(1)~(4)填入的空白格均置为“出错标志”。 SLR分析表: 按上述方法构造分析表, 每个入口不含多重定义 SLR(1)文法: 具有SLR表的文法 SLR分析器 : 使用SLR表的分析器 例:一个非SLR文法的例子 p113 有如下文法: (文法5.9) (0) S ?S (1) S ?L=R (2) S ?R (3) L ?*R (4) L ? i (5) R ?L 求LR(0)项目集规范族及识别活前缀的DFA * * 图5.7 p106 识别文法 活前缀的DFA 从初态出发,经读出活前缀γ后,而到达的项目集称为活前缀γ的有效项目集 I0: S??E E? ?aA E? ?bB I5: B?c?B B? ?cB B? ?d I3: E?b?B B? ?cB B? ?d I2:E?a?A A? ?cA A? ?d I1: S ? E ? I4:A?c?A A? ?cA A? ?d I8:A?c A? I10:A? d ? I6:E?aA ? I7:E?bB? I11:B? d ? I9:B?cB ? b E a c c c c d d d d A A B B ? * R ? R ??1?2? ?A? S LR分析理论的一条基本定理: 在任何时候,分析栈中的活前缀X1X2...Xm的有效项目集正是栈顶状态Sm所代表的那个集合。 I0: S??E E? ?aA E? ?bB I5: B?c?B B? ?cB B? ?d I3: E?b?B

文档评论(0)

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

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

1亿VIP精品文档

相关文档