5.语法分析-LALR(1)方法_第1页
5.语法分析-LALR(1)方法_第2页
5.语法分析-LALR(1)方法_第3页
5.语法分析-LALR(1)方法_第4页
5.语法分析-LALR(1)方法_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

第四章:自底向上语法分析

LALR(1)方法例子设有文法G:Z

bMbM

aM

(LL

Ma)0Z

bMb#Mb2Z

bM

b#a1Z

b

Mb#M

abM

(Lbb4M

a

b3Z

bMb

#(5M

(

LbL

Ma)bM

aaM

(LaL6M

(L

bM7L

M

a)ba8L

Ma

)b10L

Ma)

b)a9M

a

a11M

(

LaL

Ma)aM

aaM

(La(M13L

M

a)aa14L

Ma

)aa15L

Ma)

a)(12M

(L

aL同心状态项目的心:假设[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)状态机的方式构造,但发现同心状态时不产生新状态,而是采用合并状态的方法。0Z

bMb#Mb2Z

bM

b#a1Z

b

Mb#M

abM

(Lbb4M

a

b3Z

bMb

#(5M

(

LbL

Ma)bM

aaM

(LaL6M

(L

bM7L

M

a)ba8L

Ma

)b10L

Ma)

b)a9M

a

a11M

(

LaL

Ma)aM

aaM

(La(M13L

M

a)aa14L

Ma

)aa15L

Ma)

a)(12M

(L

aL0Z

bMb#Mb2Z

bM

b#a1Z

b

Mb#M

abM

(Lbb4,9M

a

ab3Z

bMb

#(5,11M

(

LabL

Ma)abM

aaM

(Laa6,12M

(L

abM7,13L

M

a)aba8,14L

Ma

)ab10,15L

Ma)

ab)L(LALR(1)语法分析过程LALR(1)语法分析表的构建驱动程序语法分析过程因为文法是LR(1)文法,所以S1、S2都不存在移入/归约冲突和归约/归约冲突。所以:{u1∪v1}∩a、{u2∪v2}∩a=

u1∩v1、u2∩v2=

合并后:{u1∪v1∪u2∪v2}∩a=

没有移入/归约冲突但是不代表(u1∪u2)∩(v1∪v2)=

。可能产生归约/归约冲突

1A

u1B

v1B

1

a1t12A

u2B

v2B

1

a1t2合并A

u1u2B

v1v2B

1

a1t1t2合并同心状态带来的问题合并同心状态带来的问题有如下文法:Z

aAdZ

bAcZ

aBcZ

bBdA

eB

eeZ

aAd# Z

bAc#Z

aBc#Z

bBd#2A

e

dB

e

caZ

a

Ad# Z

a

Bc#A

edB

ecZ

b

Ac#Z

b

Bd#A

ecB

edbe3A

e

cB

e

dLR(1)可归前缀图中无冲突,但是将2、3状态合并以后,产生归约/归约冲突。OutputStack#an…ai…a1LR分析驱动器(驱动程序)gotoactionInputStXt……语法分析表LR方法总结LR方法总结从功能上看,各种语法分析方法的分析能力从小到大依次为: LR(0)<SLR(1)<LALR(1)<LR(1)从状态数方面看,各种语法分析方法的状态数有如下关系: LR(0)=SLR(1)=LALR(1)<LR(1)。习题判定该文法是否为SLR(1)文法,是否为LALR(1)文法:

S

AaB S

B A

aB A

b B

A

Z

SS

AaBS

BA

aBA

bB

A02AZ

SS

AaBS

BA

aBA

bB

AS

AaBB

A3

S

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

a…#………2…S3/R6…R6….….…所以该文法不是SLR(1)文法.0ZSSAaBSBAaBAbBA###a#a##1ZS#2SAaBBA##6SAaBBAAaBAb####7S

AaB

#3S

B

#4Aba#10AaB#a5AaBB

AAaBAb#a#a#a#a11B

A

#a8AaBB

AAaBAb####9B

A

#12Ab#13AaB#SAabBaBAbBAabaaABb状态4和状态

温馨提示

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

评论

0/150

提交评论