编译原理及实现技术:16-语法分析-LALR(1)方法_第1页
编译原理及实现技术:16-语法分析-LALR(1)方法_第2页
编译原理及实现技术:16-语法分析-LALR(1)方法_第3页
编译原理及实现技术:16-语法分析-LALR(1)方法_第4页
编译原理及实现技术:16-语法分析-LALR(1)方法_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章:语法分析

LALR(1)方法例子设有文法G:ZbMbMaM(LLMa)0ZbMb#Mb2ZbMb#a1ZbMb#MabM(Lbb4Mab3ZbMb#(5M(LbLMa)bMaaM(LaL6M(LbM7LMa)ba8LMa)b10LMa)b)a9Maa11M(LaLMa)aMaaM(La(M13LMa)aa14LMa)aa15LMa)a)(12M(LaL同心状态项目的心:假设[A,b]是LR(1)项目,则称其中的LR(0)项目部分A为该项目的心。状态的心:设S是LR(1)状态机的一个状态,则S的所有项目心之和称为状态心,并表示为Core(S)。同心状态:如果LR(1)状态机中的两个状态具有相同的心,则称它们为同心状态。LALR(1)的思想来源LR(1)的最主要问题是状态用的太多,以至于有些大语言难以在某些微机上实现。因此,必须给出功能较强且状态数不多的切实可行的方法。在LR(1)状态机出现很多同心状态,而LALR(1)状态机则将同心状态合并,从而大大减少状态数,这就是LALR(1)和LR(1)的主要差别。LALR(1)方法它具有SLR(1)的状态数少的优点和LR(1)的适用范围广的优点。

LALR(1)方法的功能介于SLR(1)和LR(1)之间。LALR(1)状态机的状态个数和LR(0)状态机的状态个数相同,而其展望符则既不采用SLR(1)的Follow集方法,也不采用LR(1)的完全精确法。LALR(1)可归前缀图的构造先构造LR(1)状态机,后构造LALR(1)状态机按LR(1)状态机的方式构造,但发现同心状态时不产生新状态,而是采用合并状态的方法。先构造LR(0)状态机,而后用传播方式求出每个项目的展望符集。0ZbMb#Mb2ZbMb#a1ZbMb#MabM(Lbb4Mab3ZbMb#(5M(LbLMa)bMaaM(LaL6M(LbM7LMa)ba8LMa)b10LMa)b)a9Maa11M(LaLMa)aMaaM(La(M13LMa)aa14LMa)aa15LMa)a)(12M(LaL合并同心状态带来的问题有如下文法:ZaAdZbAcZaBcZbBdAeBeeZaAd# ZbAc#ZaBc#ZbBd#2AedBecaZaAd# ZaBc#AedBecZbAc#ZbBd#AecBedbe3AecBedLR(1)可归前缀图中无冲突,但是将2、3状态合并以后,产生归约/归约冲突。同时延迟发现错误。冲突的产生因为文法是LR(1)文法,所以S1、S2都不存在移入/归约冲突和归约/归约冲突。所以:{u1∪v1}∩a、{u2∪v2}∩a=

u1∩v1、u2∩v2=合并后:{u1∪v1∪u2∪v2}∩a=没有移入/归约冲突但是不代表u1∩u2和v1∩v2=。可能产生归约/归约冲突

1Au1Bv1B1a1t12Au2Bv2B1a1t2合并Au1u2Bv1v2B1a1t1t2LR方法总结从功能上看,各种语法分析方法的分析能力从小到大依次为: LR(0)<SLR(1)<LALR(1)<LR(1)从状态数方面看,各种语法分析方法的状态数有如下关系: LR(0)=SLR(1)=LALR(1)<LR(1)。LR方法总结例如有文法:AaAaAa则LR(k)方法都解决不了。但如果修改为下属文法,则很容易解决AaaAAa习题判定该文法是否为SLR(1)文法,是否为LALR(1)文法:

SAaB SB AaB Ab BA

ZSSAaBSBAaBAbBA02AZSSAaBSBAaBAbBASAaBBA3

SAaB....aFollow(B)={#,a}…

a…#………2…S3/R6…R6….….…所以该文法不是SLR(1)文法.0ZSSAaBSBAaBAbBA###a#a##1ZS#2SAaBBA##6SAaBBAAaBAb####7SAaB#3SB#4Aba#10AaB#a5AaBBAAaBAb#a#a#a#a11BA#a8AaBBAAaBAb####9BA#12Ab#13AaB#SAabBaBAbBAabaaABb状态4和状态12状态5和状态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论