- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自底向上语法分析6.1 自底向上语法分析一、自底向上方法概述 自底向上方法:从给定终极符串进行归约,并归约成文法的初始符。 移进-归约方法的四个动作: 移进:输入流头符读到分析栈中 归约:分析栈句柄归约非终极符 接受:分析成功 报错:处理错误 例子:对输入串abbcde进行分析,检查该串是否是G[S]的句子。 G[S]: S→aAcBe A→b A→Ab B→d对输入串abbcde的最右推导是:S?aAcBe?aAcde?aAbcde?abbcdeS?aAcBe?aAcde?aAbcde?abbcde所以移进-归约方法的分析过程如下:步骤 符号栈 输入串 Action 1#abbcde# 移进2#abbcde# 移进3#abbcde# 归约(A→b)4#aAbcde# 移进5#aAbcde# 归约(A→Ab)6#aAcde# 移进7#aAcde# 移进8#aAcde#归约(B→d)9#aAcBe#移进10#aAcBe#归约(S→aAcBe)11#S#接受例:考虑文法 G(E): E→T|E+T T→F|T*F F→i|(E)并假定已给定终极符串(i+i)*i。下面是对该串的移入─归约过程: ( ,(i+i)*i) 1=移=(( , i+i)*i) 2=移=((i , +i)*i) 3=归=((F , +i)*i) 4=归=((T , +i)*i) 5=归=((E , +i)*i) 6=移=((E+ , i)*i) 7=移=((E+i , )*i) 8=归=((E+F , )*i) 9=归=((E+T , )*i) 10 =归=((E , )*i) 11=移=((E) , *i) 12=归=(F , *i) 13=归=(T , *i) 14=移=(T* , i) 15 =移=(T*i , ) 16=归=(T*F , ) 17 =归=(T , ) 18=归=(E , ) 19 设Si和Sj是文法的任意两个符号,那么它们在句型中相邻出现的充要条件是必须满足下列条件之一:1.有形如U→?SiSj? 的产生式2.有形如U→?SiW? 且W Sj?的产生式3.有形如U→?VSj? 且V?Si的产生式的产生式4.有形如U→?VW? 且V?Si和WSj?的产生式的产生式++++????6.2 简单优先方法 定义了三种优先关系( , , )其定义如下: SiSj:当且仅当存在如下的产生式U→…SiSj… 例子:A→abABc,其中b与A相邻 ?b A SiSj:当且仅当存在如下产生式U→…SiW…,且有WSj……) +? 例子:A→abABc B→bcd,其中A与b相邻 ?A b SiSj:当且仅当存在如下产生式 U→…VW…,且有V Si和WSj……) 例子:A→abABc A→ccd B→bcb,其中d与b相邻 ?d b*?+?当 SiSj当 SiSj当 SiSj空否则 优先关系可用矩阵来表示,称这种矩阵为优先关系矩阵。 具体定义如下图:M[si,sj] FIRST(W)={S|WS?,S?(Vn∪Vt)} LAST(W)={S|W?S,S?(Vn∪Vt)}++??构造优先关系矩阵步骤: STEP1:对每个非终极符号W求下面两种集合 STEP2:对每个符号对Si,Sj填写优先关系矩阵。? b ( b a第一步: ① Z→b M b ? b M ②Z→b M b(…a…例子:假设有文法 G[Z]: Z→bMb M→a|( L L→M a )第二步: ① Z→b M b ? M b ②Z→b M b…)…L…a? ) b L b a bZMLb(a)ZMLb(a)ZMLFIRSTb( aM ( aLASTb) L a)所以对G[Z]: Z→bMb M→a|( L L→M a )有:FRIST(M)={ (,a } LAST(M)={ ),L,a } 有下表:EE+TT*F+ T + T定义3.13 满足下面两个条件的文法称为简单优先文法。 1.任意两个符号至多成立一种关系 2.任意两个产生式具有不同右部 例子:G[Z]: E→E+T|T T→T*F|F F→(E)|i G2:E→E+T|T T→T*F|F F→(E)|i (其中( E,( E)下面文法均不为简单优先文法 G1:B→a D→a (有两个相同的右部)Si-1 Si,S
文档评论(0)