语法分析LR0方法教学课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章:语法分析 LR方法 LR(0)自动机 1.1 LR方法基本思想 符号栈 #? 有终极符也有非终极符 输入流 ?# 终极符 假如要分析的串没有语法错误,则??一定是文法的一个句型 LR方法的主要思想是,从输入流依此把符号移入符号栈,直至栈顶出现一个句柄;之后对句柄进行归约,直至栈顶不出现句柄;重复上述过程,直至最终归约为一个开始符,且输入流为空。 1.2 LR类分析方法相关定义 规范句型:用最右推导导出的句型(也称右句型)。 规范前缀:若存在规范句型??,且?是终极符串或空串,则称?为规范前缀。 规范活前缀:若某一规范句型的规范前缀?不含句柄或含一个句柄并且具有形式?=???(?是句柄),则称规范前缀?为规范活前缀(简称活前缀)。 归约规范活前缀:若?是含句柄的规范前缀,且句柄在?的最右端,即有?=???,且?是句柄,则称活前缀?为归约规范活前缀(简称可归前缀)。 1.3 LR类分析方法的关键问题 1.4 可归前缀的判断 派生定理: 开始符产生式的右部是可归前缀。 如果?1A?2是可归前缀,且A??是产生式,则?1?也是可归前缀。 设有文法G[S]: S ? aAc [1] A ? dbb [2] A ? b [3] 可归前缀为:aAc,adbb,ab 1.5 识别归约活前缀的自动机 识别可归前缀的自动机表示为: aAc,adbb,ab 2. LR(0)分析法基本概念 LR(0)项目: LR(0)项目是带一个圆点?的产生式。每个项目都标志分析时的某一状态。 2. LR(0)分析法基本概念 项目集的投影:假设IS是LR(0)项目集,则称下面IS(X) 为IS关于X的投影集: IS(X) = {A??X?? |A???X??IS, X?(VT?VN)} 2. LR(0)分析法基本概念 2. LR(0)分析法基本概念 项目集的闭包:假设IS是LR(0)项目集,则称下面 CLOSURE(IS)为IS的闭包集: CLOSURE(IS) = IS ? {A→?? | Y→??A??CLOSURE(IS), A→?是产生式 } 2. LR(0)分析法基本概念 2. LR(0)分析法基本概念 项目集的转换函数(GO函数):若IS是一个LR(0)项目集,X?(VT?VN),函数GO(IS, X)定义为: GO(IS, X)=CLOSURE(IS(X)), 其中IS(X)为LR(0)项目集IS关于X的投影。 2. LR(0)分析法基本概念 3.构造LR(0)活前缀状态机LRSM0 Step1.构造初始状态IS0:IS0=CLOSURE({Z→?S}),并给IS0标上NO。 Step2.从已构造的LRSM0部分图选择被标为NO的任一状态IS,删除NO, 对每个符号X?VT?VN,做下面动作: 1) 令ISj = CLOSURE( IS(X)) 。 2) 若ISj非空: ①如果在LRSM0部分图中已有ISj项目集, 则在IS和ISj之间画有向X边:IS ISj 。 ②如果在LRSM0部分图中没有ISj项目集, 则将ISj作为LRSM的一个新的状态节点,并给ISj标上NO, 同在IS和ISj之间画有向X边: IS ISj 。 重复Step2 ,直至没有被标记为NO的状态结点为止。 为了使“成功”状态易于识别,通常LR文法要求文法的开始符唯一且不出现于产生式的右部,因此要增加一个新的产生式Z?S(称拓广产生式),其中S是原文法的开始符,而Z则是新符号。 LRSM0可以识别所有的可归活前缀 LRSM0中的每个状态将对应一个饱和项目集: (1)其中一部分是由先驱状态分出来 (称为基本项目); (2)一部分则是由基本项目扩展出来的 (称为扩展项目或派生项目)。派生部分项目的特点是其中的“?”出现在产生式右部的最左侧。 类型题 计算下列文法的LR(0)状态机。 文法G(S): S ? E $ E ? E + T E ? T T ? id|( E ) * * 如何判断分析栈内容是否为可归前缀 能唯一的确定可归前缀中的句柄 a 0 1 A 5 b 4 b 6 7 3 a c b d 2 [2] [1] [3] b a 0 S → ?aAc S → a?Ac A

文档评论(0)

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

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

1亿VIP精品文档

相关文档