[第六章 属性文法 0.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
属性文法和语法制导翻译 ※回顾※ 语义分析是干什么的? 其任务是对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译。 包括两个方面的工作。 首先是对各种语法范畴进行静态语义检查,例如,变量是否定义、类型是否正确等等。 如果语义正确,则进行中间代码的翻译。 为什么我们需要属性文法? 因为语义分析依循的是语言的语义规则,通常使用属性文法描述语义规则。 本章我们应该掌握什么 属性文法的一些基本概念 基于属性文法的几种处理方法 S-属性文法的自上而下计算 L-属性文法和自顶向下翻译 自下而上计算继承属性 一 属性文法的基本概念 强调 终结符只有综合属性,它们由词法分析器提供; 非终结符既可以有综合属性也可有继承属性,文法开始符号的所有继承属性作为属性计算前的初始值 对出现在产生式右边的继承属性和出现在产生式左边的综合属性都必须提供一个计算规则 出现在产生式左边的继承属性和出现在产生式右边的综合属性不由所给的产生式的属性计算规则进行计算,它们由其他产生式的属性计算规则或者由属性计算器的参数提供 ※例一※ 综合属性 ※例二※ 二 基于属性文法的处理方法 ? 依赖图 下面考虑建立语法分析树的语义规则 用例子来说明: 下表什一个为包涵运算符号+和-的表达式建立抽象语法树的 S-属性文法. 利用文法的基本产生式来安排函数mknode和mkleaf 的调用来建立语法树. E 和T 的综合属性nptr什函数调用返回的 指针 产生式 E→E1 + T E→E1 –T E→T T→(E) T→ id T→num 语义规则 E.nptr := mknode(‘+’,E1.nptr,T.nptr) E.nptr := mknode(‘-’,E1.nptr,T.nptr) E.nptr :=T.nptr E.nptr :=T.nptr T.nptr:=mknode (id,id.entry) T.nptr:=mknode (num,num.val) Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. ※举例八※ E nptr T nptr E nptr T nptr E T nptr id num + - 首先画出带注释的语法分析树 根据上表中的语义规则,各个结点分别应用,可以很容易地画出抽象语法树 id to entry for a - + num 4 id to entry for c Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 回顾 属性文法 属性分类 综合属性: 继承属性: 自下而上 自上而下 基于属性文法的处理方法 依赖图 属性的计算次序(拓扑序) 树遍历的属性计算方法 一遍扫描的处理方法 抽象语法树 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. S-属性文法:只含有综合属性。 综合属性可以在分析输入符号串的同时由自下而上的分析器来计算。 分析器可以保存与栈中文法符号有关的综合属性值,每当进行归约 时,新的属性值就由栈中正在归约的产生式右边符号的属性值来计 算。 S-属性文法的翻译通常可借助于LR分析器实现。在S-属性文法的基 础上,LR分析器可以改造为一个翻译器,在对输入串进行语法分析 的同时对属性进行计算。 三 S-属性文法的自下而上计算 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 分析栈中的综合属性 在自底向上的分析方法中,我们使用一个栈来存放已经分析 过的子树的信息。现在我们可以在分析栈中使用一个附加的域 来存放综合属性。

文档评论(0)

zhuanyewd + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档