第7章自下而上的语法分析.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章自下而上的语法分析

例:设文法G(S): (1) S ? aAcBe (2) A ? b (3) A ? Ab (4) B ? d 试对abbcde进行“移进-归约”分析。 这样我们就可对已知文法中对它的任意两个文法符号X,Y按其在句型中可能会出现的相临关系来确定他们的优先关系。 ①X=Y 若G中有A→……XY……形式的产生式 ②XY 若G中有A→……XB……形式的产生式,且B + Y…… ③XY 若G中有A→……BD……的产生式, 且B + ……X,和 D * Y …… 例 若有文法G[S]: S→bAb A→(B|a B→Aa) 根据上面=、、关系的定义,由文法的产生式可求得文法符号之间的优先关系如下: (1)求=关系:由S→bAb,A→(B,B→Aa)可得: b=A,A=b,(=B, A=a, a=) (2)求关系:由S→bAb,且A + (B, A + a 可 得:b ( ,ba 由A→(B且B + (B…;B + a…;B + A…,可得:((,(a,(A (3)求关系:由S→bAb且 A + …),A + …B,A + a可得:)b,ab,Bb 由B→Aa)且A + …),A + a, A + …B 可得:)a,aa,Ba 上述关系也可以用语法树的结果表示如图 把文法符号之间的关系用矩阵表示,称作优先关系矩阵。 上例文法的简单优先关系矩阵可用表6.2表示。 ‘#’号用来表示语句括号,‘#’号的优先级所有符号,所有符号的优先级‘#’号,当然这里仅对与‘#’号有相邻关系的文法符号而言。 以上三种关系也可由下列语法树来说明: (1)a=b则存在语法子树如图6.3(a) (2)ab则存在语法子树如图6.3(b) (3)ab则存在语法子树如图6.3(c) 其中δ为ε或为C。 定义: 设有一不含ε产生式的算符文法G,如果对任意两个终结符对a,b之间至多只有、和=三种关系的一种成立,则称G是一个算符优先文法,即OPG文法。 由定义很容易知: E→E+E| E*E | (E) | i 不是算符优先文法。 因为对算符+、*来说,由E→E+E和E E*E 可有+*,又可由E→E*E和E E+E得+* 这里须再次强调,两个终结符之间的优先关系是有序的,允许由ab,ba同时存在,而不允许有ab,ab,a=b三种情况之两种同时存在。 算符优先关系表的构造 (1)由定义直接构造 首先我们定义如下两个集合: FIRSTVT(B)={b|B b……或B Cb……} LASTVT(B)={a|B ……a或B ……aC} (a)=关系: 可直接查看产生式的右部,对形如产生式A→…ab… A→…aBb…则有a=b成立。 (b)关系: 求出每个非终结符B的FIRSTVT(B),对形如产生式:A→…aB…中对每一b∈FIRSTVT(B)则有ab成立。 (c)关系: 计算每个非终结符B的LASTVT(B),对形如产生式A→…Bb…中对每一a∈LASTVT(B) 则有ab成立。 可用上述算法计算下列表达式文法的算符优先关系。 若表达式文法为: (0)E’→#E# (1)E→E+T (2)E→T (3)T→T*F 计算优先关系为: (a)=关系 由产生式(0)E’→#E#和(6)P→(E) 可得#=#,(=)成立, 为了求,关系,先计算FIRSTVT集合和LASTVT集合。 FIRSTVT(E’)={#} FIRSTVT(E)={+,*,↑,(,I } FIRSTVT(T)={*,↑,(,i} FIRSTVT(F)={↑,(, i} FIRSTVT(P)={(,i} LASTVT(E’)={#} LASTVT(E)={+,*,↑,),i} LASTVT(T)={*,↑,),i} LASTVT(F)={↑,),i} LASTVT(P)={),i} (b)关系: #E 则:#FIRSTVT(E) +T 则:+FIRSTVT(T) *F 则:*FIRSTVT(F) ↑F 则:↑FIRSTVT(F) (E 则:(FIRSTVT(E) (c)关系: E# 则: LASTVT(E)# E+ 则: LASTVT(E)+ T* 则: LASTVT(T)* P↑

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档