编译原理LR0项目集族和LR0分析表的构造PPT文件格式下载.ppt

上传人:b****2 文档编号:15040902 上传时间:2022-10-27 格式:PPT 页数:32 大小:562.50KB
下载 相关 举报
编译原理LR0项目集族和LR0分析表的构造PPT文件格式下载.ppt_第1页
第1页 / 共32页
编译原理LR0项目集族和LR0分析表的构造PPT文件格式下载.ppt_第2页
第2页 / 共32页
编译原理LR0项目集族和LR0分析表的构造PPT文件格式下载.ppt_第3页
第3页 / 共32页
编译原理LR0项目集族和LR0分析表的构造PPT文件格式下载.ppt_第4页
第4页 / 共32页
编译原理LR0项目集族和LR0分析表的构造PPT文件格式下载.ppt_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

编译原理LR0项目集族和LR0分析表的构造PPT文件格式下载.ppt

《编译原理LR0项目集族和LR0分析表的构造PPT文件格式下载.ppt》由会员分享,可在线阅读,更多相关《编译原理LR0项目集族和LR0分析表的构造PPT文件格式下载.ppt(32页珍藏版)》请在冰豆网上搜索。

编译原理LR0项目集族和LR0分析表的构造PPT文件格式下载.ppt

SaAcBe1Ab2AAb3Bd4abbcdeAABS当栈顶出现可归前缀即可归约当栈顶出现可归前缀即可归约步步骤骤符号栈符号栈剩余剩余输入串输入串动作动作11#abbcdeabbcde#移进移进22#a#abbcde#bbcde#移进移进33#a#abbbcde#bcde#归约归约Ab44#aA#aAbcde#bcde#移进移进55#a#aAbAbcde#cde#归约归约AAb66#aA#aAcde#cde#移进移进77#aAc#aAcde#de#移进移进88#aAc#aAcdde#e#归约归约Bd99#aAcB#aAcBe#e#移进移进1010#aAcBeaAcBe#归约归约SaAcBe1111#S#S#接受接受abbcdeAABS栈里的文法符号与栈里的文法符号与剩余符号串一起构剩余符号串一起构成了规范句型成了规范句型栈里的文法符号构栈里的文法符号构成活前缀成活前缀S=aAcBe=aAcde=aAbcde=abbcde规范规范推导推导序列序列#abbcde#的规范归约过程的规范归约过程二、构造识别文法所有活前缀的二、构造识别文法所有活前缀的DFA1.LR(0)1.LR(0)项目项目2.2.构造识别文法所有活前缀的构造识别文法所有活前缀的DFADFA3.LR(0)3.LR(0)项目的分类项目的分类1.LR(0)1.LR(0)项目项目在文法在文法G中每个产生式的右部适当位置添加一中每个产生式的右部适当位置添加一个圆点构成项目个圆点构成项目.对空产生式对空产生式A,仅有项目仅有项目A例例:

产生式产生式AXYZ对应的项目有对应的项目有AXYZAXYZAXYZAXYZ一个产生式可对应的项目个数是它的右部符号长度加一个产生式可对应的项目个数是它的右部符号长度加11每个项目的含义与圆点的位置有关每个项目的含义与圆点的位置有关补充例补充例:

若有产生式若有产生式SaAd,Abc对应的项目对应的项目:

(1)SaAd

(2)SaAd(3)SaAd(4)SaAd(5)Abc(6)Abc(7)Abc2.2.构造识别文法所有活前缀的构造识别文法所有活前缀的DFADFA1).文法的每个项目都为文法的每个项目都为NFA的一个状态的一个状态2).确定状态之间的转换关系确定状态之间的转换关系3).确定化最小化确定化最小化例例5.8p105G:

SEEaA|bBAcA|dBcB|d更更正正1SE2SE11.EbB3EaA12.EbB4EaA13.EbB5EaA14.BcB6AcA15.BcB7AcA16.BcB8AcA17.Bd9Ad18.Bd10.Ad文法的项目文法的项目:

1).文法的每个项目都为文法的每个项目都为NFA的一个状态的一个状态2).确定状态之间的转换关系确定状态之间的转换关系XXiiXXXX11XX22XXi-1i-1XXiiXXnnXXXX11XX22XXiiXXi+1i+1XXnnXXAAAA状态状态i状态状态j出自同一产生式出自同一产生式项目项目11为为初态初态P106NFA1SE2SE3EaA4EaA5EaA6AcA7AcA8AcA9Ad10.Ad11.EbB12.EbB13.EbB14.BcB15.BcB16.BcB17.Bd18.Bd每个状态都为每个状态都为活前缀识别态活前缀识别态句柄识别态句柄识别态(可归前缀识别可归前缀识别态态):

圆点在最后的项目圆点在最后的项目句子识别态句子识别态p106识别一个文识别一个文法活前缀的法活前缀的DFADFA3).确定化确定化最小化最小化每个状态是一每个状态是一个项目集个项目集,称作称作LR(0)项目集项目集整个状态集称整个状态集称为为LR(0)项目集项目集规范族规范族3.LR(0)3.LR(0)项目的分类项目的分类移进项目移进项目:

AAaa分析时把分析时把aa移进符号栈移进符号栈待约项目待约项目:

AABB用产生式用产生式AA的右部归约时的右部归约时,首先要将首先要将BB的产生式右的产生式右部归约为部归约为B,B,对对AA的右部才能继续进行分析的右部才能继续进行分析归约项目归约项目:

AA表明一个产生式的右部已分析完,句柄已形成可表明一个产生式的右部已分析完,句柄已形成可以归约以归约接受项目接受项目:

SSSS表明已分析成功表明已分析成功三、三、LR(0)项目集规范族的构造项目集规范族的构造构造识别文法活前缀构造识别文法活前缀DFA的三种方法的三种方法*1.求出活前缀的正规表达式,然后由此正规表求出活前缀的正规表达式,然后由此正规表达式构造达式构造NFA,再确定化为再确定化为DFA。

2.求出文法的所有项目,按一定规则构造识别求出文法的所有项目,按一定规则构造识别活前缀的活前缀的NFA,再确定化为再确定化为DFA。

3.通过闭包函数和转换函数,直接求出通过闭包函数和转换函数,直接求出LR(0)项目集规范族,再由转换函数建立状态之间项目集规范族,再由转换函数建立状态之间的连接关系得到识别活前缀的的连接关系得到识别活前缀的DFA。

1.1.拓广文法拓广文法2.2.项目集项目集II的闭包函数的闭包函数CLOSURE(I)CLOSURE(I)3.3.状态转换函数状态转换函数GO(I,X)GO(I,X)4.4.构造文法的构造文法的LR(0)LR(0)项目集规范族项目集规范族1.1.拓广文法拓广文法原文法原文法GG的开始符号为的开始符号为S,S,在在GG中加中加SSSS后得新的文法后得新的文法GG,则称则称GG为原文法为原文法GG的拓广文法。

的拓广文法。

使文法的开始符号不出现在任何产生式右部,使文法的开始符号不出现在任何产生式右部,当栈顶出现当栈顶出现S,S,则分析完成则分析完成。

注注:

即使原开始符号即使原开始符号SS不出现在任何产生式右部不出现在任何产生式右部,为了统一起见也要增加该产生式。

为了统一起见也要增加该产生式。

2.2.项目集项目集II的闭包函数的闭包函数CLOSURE(I)CLOSURE(I)a)I的项目均在的项目均在CLOSURE(I)中。

中。

b)若若AB属于属于CLOSURE(I),则每一形如则每一形如B的项目也属于的项目也属于CLOSURE(I)c)重复重复b)直到直到CLOSURE(I)不再扩大。

不再扩大。

NFA:

状态集合状态集合I的的-闭包闭包-closure(I)ABB补充例补充例ISECLOSURE(I)=SE,EaA,EbB1SE2SE3EaA4EaA5EaA6AcA7AcA8AcA9Ad10.Ad11.EbB12.EbB13.EbB14.BcB15.BcB16.BcB17.Bd18.Bd13113.3.状态转换函数状态转换函数GO(I,X)GO(I,X)GO(I,X)=CLOSURE(J),X(VNVT),J=AX|AXIXXAXAX若状态若状态II识别活前缀识别活前缀,则状态则状态JJ识别活前缀识别活前缀XX状态状态II状态状态JJNFA:

状态集合状态集合I的的a弧转换弧转换补充例补充例ISE,EaaA,EbBGO(I,a)=CLOSURE(EaA)=EaA,AcA,Ad1SE2SE3EaA4EaA55EaA6AcA7AcA8AcA9Ad10.Ad11.EbB12.EbB13.EbB14.BcB15.BcB16.BcB17.Bd18.Bd13114694.4.构造文法的构造文法的LR(0)LR(0)项目集规范族项目集规范族C=IC=I00,I,I11,I,Inn核核:

圆点不在产生式右部最左边的项目称为核圆点不在产生式右部最左边的项目称为核a)置项目置项目SS为初态集的核,然后对核求闭为初态集的核,然后对核求闭包,包,CLOSURE(SS)得到初态的项目)得到初态的项目集。

集。

b)对初态集或其它所构造的项目集应用转换函对初态集或其它所构造的项目集应用转换函数数GO(I,X)=CLOSURE(J)求出新状态求出新状态J的项的项目集。

目集。

c)重复重复b)直到不出现新的项目为止。

直到不出现新的项目为止。

算法算法Procedureitemsets(G)BeginC:

=CLOSURE(SS)RepeatforC中的每一个中的每一个I和每一个和每一个XdoifGO(I,X)非空且不属于非空且不属于Cthen把把GO(I,X)放入放入C中中untilC不再增大不再增大endp107初态的项目集初态的项目集应用状态转换应用状态转换函数得到新的函数得到新的项目集项目集G:

SEEaA|bBAcA|dBcB|dI0:

SEEaAEbBI8:

BcBBcBBdI3:

EbBBcBBdI2:

EaAAcAAdI1:

SEI5:

AcAAcAAdI10:

AcAI6:

AdI4:

E:

EaAI7:

EbBI9:

BdI11:

BcBbEaccccddddAABB识别文法所有活前识别文法所有活前缀的缀的DFADFALR(0)LR(0)项目集规范族项目集规范族II00,I,I11,I,I1111四、有效项目四、有效项目*移进移进-归约冲突归约冲突一个项目集中移进和归约项目同时存在:

一个项目集中移进和归约项目同时存在:

AaB归约归约-归约冲突归约冲突一个项目集中归约和归约项目同时存在一个项目集中归约和归约项目同时存在:

AB五、五、LR(0)分析表的构造分析表的构造LR(0)文法文法假若一个文法假若一个文法G的拓广文法的拓广文法G的活前缀识别的活前缀识别自动机中的每个状态自动机中的每个状态(项目集项目集)不存在下述情况不存在下述情况既含移进项目又含归约项目既含移进项目又含归约项目或者含有多个归约项目或者含有多个归约项目则称则称G是一个是一个LR(0)文法文法。

LR(0)文法规范族的每个项目集不包含任何冲文法规范族的每个项目集不包含任何冲突项目突项目(移进移进-归约冲突、归约归约冲突、归约-归约冲突归约冲突)。

LR(0)分析表的构造分析表的构造假设已构造出假设已构造出LR(0)项目集规范族为项目集

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1