- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
任何归约活前缀
第五章 自底向上分析方法 3 LR类分析方法的关键问题 派生定理 开始符产生式的右部是归约活前缀。 如果?A?是归约活前缀,且A→?是产生式,则??也是归约活前缀。 任何归约活前缀,都可按上述方式被派生。 设文法开始符的产生式是: S →?1|?2|…|?n 则文法G的可归活前缀集合为:RPSG={?1,…,?n}?{??|?A??RPSG,A→??P} 例2:计算下列文法的可归前缀集。 G[S]: S → aAcBe [1] A → b [2] A → Ab [3] B → d [4] 识别活前缀自动机 G[S]: S → aAcBe [1] A → b [2] A → Ab [3] B → d [4] 5 LR(0)分析法基本概念 1.LR(0)项目: 若A→??是产生式,则称A→???为LR(0)项目(简称项目) LR(0)分析法基本概念(续1) 2.项目集的闭包:假设IS是LR(0)项目集,则称下面CLOSURE(IS)为IS的闭包集: CLOSURE(IS) = IS ? {A→?? | Y→??A??CLOSURE(IS), A→?是产生式 } LR(0)分析法基本概念(续1) LR(0)分析法基本概念(续2) 3.项目集的投影:假设IS是LR(0)项目集,则称下面定义的IS(X) 为IS关于X的投影集: IS(X) = {A→?X?? |A→??X??IS, X?(VT?VN)} LR(0)分析法基本概念(续3) 4.项目集的转换函数(GO函数):若IS是一个LR(0)项目集,X?(VT?VN),函数GO(IS, X)定义为: GO(IS, X)=CLOSURE(IS(X)), 其中IS(X)为LR(0)项目集IS关于X的投影。 构造LR(0)活前缀状态机LRSM 构造LR(0)活前缀状态机LRSM的算法 Step1.构造初始状态IS0:IS0=CLOSURE({Z→?S}),并给IS0标上NO。 Step2.从已构造的LRSM部分图选择被标为NO的任一状态IS,删除NO, 对每个符号X?VT?VN,做下面动作: 1) 令ISj = CLOSURE( IS(X)) 。 2) 若ISj非空: ①如果在LRSM部分图中已有ISj项目集, 则在IS和ISj之间画有向X边:IS ISj 。 ②如果在LRSM部分图中没有ISj项目集, 则将ISj作为LRSM的一个新的状态节点,并给ISj标上NO, 并在IS和ISj之间画有向X边: IS ISj 。 重复Step2 ,直至没有被标记为NO的状态结点为止。 例3:构造LR(0)状态机 S ? E $ E ? E + T E ? T T ? id T? ( E ) LRSM给出了所有的可归活前缀 LRSM中的每个状态将对应一个项目集: (1)其中一部分是由先驱状态分出来 (称为基本项目); (2)一部分则是由基本项目扩展出来的 (称为扩展项目或派生项目)。派生部 分项目的特点是其中的“?”出现在产 生式右部的最左侧。 LRSM不能直接用于LR分析,因为它识别的是VT?VN上的符号串,而语法识别的是VT组成的句子。但它提供了LR分析所需的信息。 LRSM提供的信息: 移入/归约信息: [A→??a?]、[A→??]; 移入/归约后的转向状态信息. * * 第一个L表示:相应的语法分析将按自左至右的顺序扫描输入符号串; 第二个R表示:在分析过程中产生一个句子的最右推导 的逆过程; 括号中的“k”:则表示在分析过程中需要向前展望k个输入符号才能决定是移入还是归约,并且归约是用哪个产生式。 1 LR(K)分析法 LR(0)分析法 计算机科学技术中两个最基本的概念:“算法”(Algorith
文档评论(0)