第2章前后文无关文法和语言.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文档。上传文档
查看更多

符号串i+i*i的归约过程由上表可以看出,归约过程是最左归约,它恰好是规范推导的逆过程。这正是把最左归约定义为规范归约的原因。第29页,共52页,星期日,2025年,2月5日关于归约的一点说明注意,前面例子中归约的第五步中,当前的符号串为E+T*i,除了可将i归约成F外,还可将E+T或T归约成E,分别得到符号串E*i和E+E*i。但是,若真按这两个方案进行归约,则当我们把其归约成E*E或E+E*E时,就再也归约不下去了。这就告诉我们在第五步时,唯一正确的归约是将i归约为F,也就是说,i是唯一可被归约的最左子串。那么,对于规范归约的每一步,如何确定符号串中的当前应被归约的最左子串呢?第30页,共52页,星期日,2025年,2月5日2.3.2语法树和二义性语法树用于直接地描述一个句型右句子的语法结构语法树是一有向树(连通的)1)有且仅有一个无任何前驱的结点,称为根(S);2)除根外,每个结点恰有一个直接前驱;3)对于任一结点m,从根到m可达;4)每个结点的后继是有序的(从左到右)设G=(VN,VT,P,S)是一文法,则满足下述条件的树称为语法树:1)每个结点有一标记X,X?V;2)根的标记为S(开始符);3)若结点X有后继,则X?VN;4)A有k个后继,自左至右为X1,X2,…,Xk,则A?X1X2…Xk?P第31页,共52页,星期日,2025年,2月5日语法树的性质及实例语法树的所有叶结点自左至右排列构成了文法G的一个句型对一语法树而言,其构造过程不同对应了不同的推导(归约)过程例如,文法G[E]的句型i+i*i相应的语法树见右图。EE+TTFiT*FFii第32页,共52页,星期日,2025年,2月5日存在这样的文法G,其某个句子w?L(G),可对应结构不同的语法树,即w对应了多个不同的最左(右)推导,这类文法称为二义性文法。例如,G3[E]:E?E+E|E*E|(E)|i的句型i+i*i及文法C?ifBthenC|ifBthenCelseC C?S 的句型:ifB1thenifB2thenS1elseS2上面两个句型均有两个不同的语法推导树(见下页),所以,它们是二义性文法文法的二义性第33页,共52页,星期日,2025年,2月5日EEEEE+*iiiEEEEE+*iiiifB1thenCelse CS1 S2CifB2thenCCifB1thenCS1S2ifB1thenCelseC二义性语法的例子第34页,共52页,星期日,2025年,2月5日关于二义性文法应指出,二义性是一种常见的语法现象,然而,对于编译程序而言,二义性文法是有害的。为解决二义性文法带来的不确定性问题,通常的方法一是修改文法,例如,文法G3可用本章(P20(2.2)式)定义的文法G2[E]取代,而G2不是二义性的。二是利用附加条件。例如,i+i*i的归约过程中,若规定*比+优先级高,则可强制性地让系统先按E*E进行归约,而不是先按E+E进行归约;又比如,若强制规定else只能和距其最近的尚未被匹配的then进行匹配,就可解决else悬空的问题。第35页,共52页,星期日,2025年,2月5日2.3.3短语和句柄问题:在自底向上(简记为?)的语法分析中,对于每一步直接归约,应如何正确地确定当前句型中应被归约的最左子串?考虑文法G2[E]的句型?=E+T*F+i,从开始符E推导出?的语法树见右图该树中含有若干子树,如T(2)为根的子树对应的叶结点为T(3)*F(3),由于它是一直接子树,文法中必有产生式T-T*F;因此,称T*F是句型?相对于产生式T-T*F的直接短语.同理,F(1)对应的直接短语为i.以E(1)为根的子树相应的叶结点为E(2)+T(3)*F(3),所以,称为句型?相对于非终结符E的短语.同理,i是相对于T(1)的短语EE(1) +T(1)E(2)+T(2)T(3)*F(3)F(1)i第36页,共52页,星期日,2025年,2月5日短语、直接短语及句柄的定义例如,对句型?=E+T*F+i,由定义,有:(1)E?*E+T+i(?=E+,A=T,?=+i)及T?T*F(=?),故T*F是?相对于产生式T-T*F的

文档评论(0)

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

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

1亿VIP精品文档

相关文档