编译原理第4讲(第三章)..ppt_第1页
编译原理第4讲(第三章)..ppt_第2页
编译原理第4讲(第三章)..ppt_第3页
编译原理第4讲(第三章)..ppt_第4页
编译原理第4讲(第三章)..ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1,第三章 文法和语言,符号和符号串 文法和语言的形式定义 文法的类型 上下文无关文法及其语法树 上下文无关文法的句型分析 有关文法实用中的一些说明,2,(上下文无关文法)句型的分析,句型分析就是识别一个符号串是否为某文法的句型,是某个推导的构造过程。 在语言的编译实现中,把完成句型分析的程序称为分析程序或识别程序。分析算法又称识别算法。 从左到右的分析算法,即总是从左到右地识别输入符号串,首先识别符号串中的最左符号,进而依次识别右边的一个符号,直到分析结束。,3,句型的分析算法分类,分析算法可分为: 自上而下分析法: 从文法的开始符号出发,反复使用文法的产生式,寻找与输入符号串匹配的推导,或者说,为输入串寻找一个最左推导。 自下而上分析法: 从输入符号串开始,逐步进行归约,直至归约到文法的开始符号。,4,两种方法反映了两种语法树的构造过程,自上而下方法是从文法符号开始,将它做为语法树的根,向下逐步建立语法树,使语法树的结果正好是输入符号串 自下而上方法则是从输入符号串开始,以它做为语法树的结果,自底向上的构造语法树,5,自上而下的语法分析,例:文法G: S cAd A ab A a 识别输入串w=cabd是否为该文法的句子,S S S c A d c A d a b 推导过程:S cAd cAd cabd,6,自下而上的语法分析,例:文法G: S cAd A ab A a 识别输入串w=cabd是否该文法的句子,7,若S cAd 后选择(2)扩展A,S cAd cabd 那将会? w的第二个符号可以与叶子结点a得以匹配,但第三个符号却不能与下一叶子结点d匹配 ?宣告分析失败(其意味着,识别程序不能为串cad构造语法树,即cad不是句子) -显然是错误的结论。 导致失败的原因是在分析中对A的选择不是正确的。,S c A d a b 这时应该回朔,把A为根的子树剪掉,扫描过的输入串中的a吐出来,再试探用产生式(3),自上而下的语法分析 (1)S cAd (2) A ab (3) A a 识别输入串w=cad是否为该文法的句子,8,自下而上的语法分析 (1)S cAd (2) A ab (3)A a 识别输入串w=cabd是否为该文法的句子,对串cabd的分析中,如果不是选择ab用产生式(2),而是选择a用产生式(3)将a归约到了A,那么在c A b d 中无法找到一个可归约串了,最终就达不到归约到S的结果,因而也无从知道cabd是一个句子,c a b d c A b d a,9,句型分析的有关问题,1)在自上而下的分析方法中如何选择使用哪个产生式进行推导? 假定要被代换的最左非终结符号是B,且有n条规则:BA1|A2|An,那么如何确定用哪个右部去替代B? 2)在自下而上的分析方法中如何识别可归约的串? 在分析程序工作的每一步,都是从当前串中选择一个子串,将它归约到某个非终结符号,该子串称为“可归约串”,10,短语、直接短语和句柄的定义,文法GS 句型的短语 S =* A且 A =+ ,则称是句型相对于非终结符A的短语 句型的直接短语 若有A ,则称是句型相对于非终结符A 的直接短语 句型的句柄 一个句型的最左直接短语称为该句型的句柄,不一定是终结符串,11,直观理解,直观理解:短语是前面句型中的某个非终结符所能推出的符号串。,注意:短语、直接短语是相对于句型而言,一个句型 可能有多个短语、直接短语,句柄只能有一个。,可以通过刚才的定义来寻找短语,直接短语,句柄。但是一般我们按照语法树来找,因为这个更简单更快捷。下面,我们介绍这种方法。,12,用语法树找短语,直接短语,句柄,子树:语法树中的某个非叶结点连同它所有子孙所组成的树。,短语:一棵子树的所有叶子自左至右排列起来形成一个相对于子树根的短语。 直接短语:仅有父子两代的一棵子树,它的所有叶子自左至右排列起来所形成的符号串。 句柄:一个句型的语法树中最左那棵只有父子两代的子树的所有叶子的自左至右排列。,13,例子,E E + T T F T * F i3 F i2 i1,GE:EE+T|T TT*F|F F(E)|i 句型:i*i+I 短语:i1* i2+ i3, i1* i2 , i1 , i2 , i3 直接短语: i1 , i2 , i3 句柄: i1,14,例子(续),=,短语,短语,短语,直接短语i3,15,例子(续),=,=,短语,短语,短语,直接短语,直接短语i1,16,例子(续),*, +, i+i 都不是短语。原因很简单:不存在一棵这样的子树,该子树叶结点是由它们构成的。,=,最左直接短语i1,即为句柄,17,文法实用中的一些说明,限制化简文法 文法中不含有有害规则和多余规则 有害规则:形如UU的产生式。会引起文法的二义性 多余规则:指文法中任何句子的推导都不会用到的规则 文法中不含有不可到达和不可终止的非终结符 1)文法中某些非终结符不在任何规则的右部出现,该非终结符称为不可到达。 2)文法中某些非终结符,由它不能推出终结符号串,该非终结符称为不可终止。,18,对于文法GS,为了保证任一非终结符A在句子推导中出现,必须满足如下两个条件: 1. A必须在某句型中出现 即有S =* A,其中,属于V* 2. 必须能够从A推出终结符号串t来 即A =* t,其中tVT*,19,化简文法,例:GS : 1) SBe 2) BCe D为不可到达 3) BAf C为不可终止 4) AAe 5) Ae 6) CCf 7) Df 产生式 2),6),7)为多余规则应去掉。,20,上下文无关文法中的规则,上下文无关文法中某些规则可具有形式A,称这种规则为规则 因为规则会使得有关文法的一些讨论和证明变得复杂,有时会限制这种规则的出现 两种定义的唯一差别是句子在不在语言中 文法构思的启示是

温馨提示

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

评论

0/150

提交评论