编译原理课件CHAPTER5(SemanticA.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《编译原理课件CHAPTER5(SemanticA.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课件 CHAPTER5 SemanticA
- 资源描述:
-
1、5/26/202215.1 5.1 语义分析概述语义分析概述n词法分析、语法分析词法分析、语法分析 程序在书写上程序在书写上是正确的、在语法上是正确的,不能保证是正确的、在语法上是正确的,不能保证含义(语义)上的正确性含义(语义)上的正确性5/26/202225.1 5.1 语义分析概述语义分析概述n语义分析阶段分析源程序的含义,并作相语义分析阶段分析源程序的含义,并作相应的处理,语义分析的基本功能:应的处理,语义分析的基本功能:n确定类型确定类型:确定标识符所关联数据对象的类型,即处理源程序的说明部分n类型检查类型检查:对运算及进行运算的运算分量进行类型检查,检查运算的合法性与运算分量类型的
2、一致性(相容性),必要时作相应的类型转换5/26/202235.1 5.1 语义分析概述语义分析概述n识别含义识别含义:确定程序中各构成成分组合到一起的含义,对可执行语句生成中间代码或目标代码* 语义分析往往是和中间代码生成紧密联系的n其他一些静态语义检查:n控制流检查控制流检查:如对于PASCAL语言,不允许从循环外跳转到循环内,C语言的Break引起控制离开最小包围的while、for等语句,检查是否这样的语句存在n唯一性检查唯一性检查:如标识符只能定义一次,枚举类型的元素不能重复等5/26/202245.1 5.1 语义分析概述语义分析概述n语义分析的输入是语法分析的输出(分析语义分析的
3、输入是语法分析的输出(分析树),输出是中间代码,但同时它还完成树),输出是中间代码,但同时它还完成了很多语义处理工作(见上)了很多语义处理工作(见上)n语义分析的主流技术语义分析的主流技术 语法制导翻译语法制导翻译技术技术5/26/202255.2 5.2 语法制导翻译语法制导翻译n文法符号的属性:文法符号的属性:n文法符号(Grammar Symbols)代表语言结构(Language Construct),如标识符、表达式、语句、程序n为每个文法符号文法符号引入一个属性(属性(attribute)集合集合,反映相应语言结构的语义信息语义信息,如标识符的类型、常量的值、变量的存储地址等5/2
4、6/20226n属性的类型(从分析过程中属性值的计算方法来分类):5.2 5.2 语法制导翻译语法制导翻译1、综合属性综合属性(Synthesized Attributes):属性值是分析树中该结点的子结点的属性值的函数 2、继承属性继承属性(Inherited Attributes):属性值是分析树中该结点的父结点和和/或或兄弟结点的属性值的函数5/26/202275.2 5.2 语法制导翻译语法制导翻译n对于产生式 AX1 X2 XnA AX X1 1X X2 2X Xn n计算 A 的综合属性, S ( A ) : = f ( I ( X1 ) , , I ( Xn ) )计算 Xj 的
5、继承属性, T ( Xj ) : = f ( I ( A ) , ., I ( Xn ) )n综合属性用于“自下而上”传递信息,继承属性用于“自上而下”传递信息5/26/202285.2 5.2 语法制导翻译语法制导翻译n非终结符(开始符号除外)既可有综合属性也可有继承属性n文法开始符号没有继承属性n终结符号只有综合属性,一般由词法分析器提供5/26/202295.2 5.2 语法制导翻译语法制导翻译n语法制导定义:语法制导定义:n为每一条产生式(A )引入一套语义规则n规则形式:b := f (c1,c2,ck)nb 是 A 的综合属性,则c1,c2,ck是产生式文法符号的属性nb 是产生式
6、右部某文法符号的继承属性,则c1,c2,ck是产生式文法符号的属性5/26/2022105.2 5.2 语法制导翻译语法制导翻译n虚(综合)属性 (Dummy synthesized attribute) :n 针对语义动作(过程或语义子程序)n只是为了形式上的统一n语义规则可以计算属性值,也可以(语义动作)在符号表中登录信息、输出错误信息、进行类型检查、产生中间代码等5/26/2022115.2 5.2 语法制导翻译语法制导翻译n例1 P281 Fig.5.2 (只有综合属性)n虚属性n终结符号的属性 n某些非终结符加下标是为了区分一个产生式中同一非终结符的多次出现n例2 P283 Fig.
7、5.4 (带有继承属性)5/26/2022125.2 5.2 语法制导翻译语法制导翻译n属性文法属性文法:语法制导定义对上下文无关文法进行了扩充,扩充后的文法称为属性文法(attribute grammar)。5/26/2022135.2 5.2 语法制导翻译语法制导翻译n语法制导翻译语法制导翻译(Syntax-Directed Translation):n根据语法分析中产生式对应的语义规则语义规则进行翻译的方法称为语法制导翻译语法制导翻译。n语法制导:语法制导:基于语法分析中用到的文法产生式n翻译:翻译:完成语义分析的各项功能,不仅指生成中间代码5/26/2022145.2 5.2 语法制导
8、翻译语法制导翻译n属性之间的依赖关系属性之间的依赖关系n语义规则 b := f (c1,c2,ck)n只有在已知 c1,ck 值的基础上,才能计算属性值 bn称属性 b 依赖于属性 c1,ck5/26/2022155.2 5.2 语法制导翻译语法制导翻译n依赖图(依赖图(Dependency Graphs):n有向边,a b,表示属性 b 依赖于属性 an用来表示属性之间依赖关系的有向图(Directed Graph)称为依赖图依赖图5/26/2022165.2 5.2 语法制导翻译语法制导翻译n依赖图的构造算法:P284n考虑的是分析树中的结点n一个属性建立一个结点n为每个语义动作引入一个虚
9、属性n例 Fig.5.65/26/2022175.2 5.2 语法制导翻译语法制导翻译n依赖图的例子:LE.val=19E.val=15T.val=4T.val=15F.val=4T.val=3F.val=3F.val=5digit.lexval=4digit.lexval=5digit.lexval=3+*Fig.5.3的依赖图n5/26/2022185.2 5.2 语法制导翻译语法制导翻译n依赖图的例子:nFig.5.7(Fig.5.5的依赖图)5/26/2022195.2 5.2 语法制导翻译语法制导翻译n属性计算顺序属性计算顺序n有向非循环图(directed acyclic grap
10、h)的拓扑排序(topological sort):n图中所有结点的一个排列n若 mimj 是一有向边,则在结点序列中 mi 在 mj 的前面5/26/2022205.2 5.2 语法制导翻译语法制导翻译n例子:1234765拓扑排序:拓扑排序:7 6 5 4 3 2 1 7 5 6 4 3 2 1 4 7 6 3 5 2 1* 依赖图的任一拓扑排序是一个合理的属性计算顺序 5/26/2022215.2 5.2 语法制导翻译语法制导翻译n属性计算实例:nP286 Example 5.65/26/2022225.2 5.2 语法制导翻译语法制导翻译n属性计算的三种方法:属性计算的三种方法:n1、
展开阅读全文