第六章的的 属性文法和语法指导翻译课件.pptVIP

第六章的的 属性文法和语法指导翻译课件.ppt

  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文档。上传文档
查看更多
第六章的的 属性文法和语法指导翻译课件

第六章 属性文法和语法指导翻译 6.1 属性文法 通过给语法上各个符号赋予一定的含义并且将各个符号进行有结构的连接,我们可以形成语言具体语句的含义。这给予我们以启示:可以通过扩充文法,在文法符号上附着某些语义信息,并在这些语义信息间建立相互计算关系,从而在语法分析的同时进行语义分析。由于这种分析是在语法分析的控制下进行的,故称为语法制导翻译。 文法符号的属性:为文法符号(终结符或非终结符)配备的某相关的“值”(称为属性)。属性是与文法符号相关的信息,往往代表该符号表示的某类语义信息,例如:类型、值、代码等等。 属性可以计算和传递。属性加工过程即是语义处理过程。 语义规则:每个产生式配备的一组属性计算规则。 属性的分类:综合属性和继承属性 综合属性:用于自下而上传递信息 继承属性:用于自上而下传递信息 属性的计算规则:设有产生式A— ? 定义 b:=f(c1,c2,…… ,ck) f是一个计算函数,并且 (a) b是A的一个综合属性并且c1,c2,…… ,ck是产生式右边文法符号的属性.或者 (b) b是产生式右边某文法符号的一个继承属性并且c1,c2,…… ,ck是A或产生式右边任何文法符号的属性 注意: 终结符只有综合属性,它们由词法分析器提供 非终结符既可有综合属性也可有继承属性,文法开始符的所有继承属性为属性计算前的初始值 属性计算规则中仅能使用相应产生式中的文法符号的属性 产生式左边的继承属性和产生式右边的文法符号的综合属性由其它产生式的属性规则计算 一个句型的语法树可以加以扩充,用来表示句型分析中得到的各个符号的属性间的关系: 语法树中,一个结点的综合属性的值由其子结点的属性值确定 语法树中,一个结点的继承属性的值由该结点的父结点和(或)兄弟结点的某些属性值确定 6.2 基于属性文法的处理方法 语法制导翻译过程: 输入串 —》 语法树 —》 依赖图 —》 语义规则计算 6.2.1 依赖图 一棵语法树中的各个结点的继承属性和综合属性之间存在着计算上的相互依赖关系,这种关系可以用一有向图加以表示,该有向图称为依赖图。 依赖图 的构造: 为语法树中的每个符号的每个属性设置一个结点,如果属性b依赖属性c,则从c引一条有向边到b。 依赖图中若无循环,则表示属性间无循环依赖关系。如果一属性文法的任一语法树的依赖图中无循环,则该文法为良定义的。 属性的计算次序: 一个有向非循环图的拓扑序是图中结点的任何顺序m1,m2,。。。,mk,使得图中的边必须是从序列中前面的结点指向后面的结点,既若m i—mj 是mi 到mj 的一条边,那么mi必须出现在mj之前. 6.2.2 树遍历的属性计算方法 如果文法的属性是非循环定义的,则我们可以通过反复扫描该语法树,从而将该语法树上各个结点的属性按某种顺序进行计算。 问题: 如何能够对语法树只进行一次扫描而将属性全部计算出来?或者为只进行一次扫描计算出全部属性,我们需要对文法属性的计算顺序有什么要求? 6.3 S-属性文法的自下而上计算 S--属性文法:文法中符号的属性只是综合属性。 由于文法中的符号只含综合属性,故可以在自下而上的语法分析中将产生式右边各个符号的属性和文法符号联系在一起放在分析栈中。这样在句柄规约时调用综合属性计算子函数计算出产生式左边非终结符的综合属性。 6.4 L—属性文法和自顶向下翻译 L—属性文法:如果对于文法的每个产生式A--X1 X2 ……..Xn ,其每个语义规则中的每个属性或者是综合属性,或者是Xj (1? J ? n)的一个继承属性且该继承属性仅依赖于:(a)产生式Xj的左边符号X1 , X2 , Xj-1 的属性;(b)A的继承属性。 6.4.1 翻译模式 属性文法只是刻画了产生式中各个符号属性的计算依赖性,没有给出属性计算在语法分析中的相应计算时刻或位置。翻译模式则给出了这些描述。 翻译模式:与文法符号相关的属性和语义规则,用花括号括起来,插入到产生式右部的合适位置上,该位置体现了该语义规则的计算顺序。 注意: (1)产生式右边的符号的继承属性必须在该符号以前的动作中计算出来。 (2)一个动作不能引用该动作右边的符号的综合属性。 (3)产生式左边非终结符的综合属性只有在它所引用的所有属性都计算出来以后才能计算。该计算通常放在产生式右端的尾部。 6.4.2 自顶向下翻译 由于L—属性文法的特点,继承属性的计算结果是很容易在自顶向下分析中进行传播的,综合属性的计算则和语法分析的方向不协调,因而综合属性的计算在自顶向下分析中有一定的困难,但是考虑某符号A的综合属性是为产生式右部该符号右边的某符号B的属性计算所用,而计算B的属性时A符号已推导结束,并且在A符号推导结束时我们知道符号B在分析栈中的位置,故可将该综合属

文档评论(0)

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

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

1亿VIP精品文档

相关文档