编译原理课件CHAPTER5(SemanticAnalysisandIntermediateCodeGeneration1).ppt
《编译原理课件CHAPTER5(SemanticAnalysisandIntermediateCodeGeneration1).ppt》由会员分享,可在线阅读,更多相关《编译原理课件CHAPTER5(SemanticAnalysisandIntermediateCodeGeneration1).ppt(44页珍藏版)》请在三一办公上搜索。
1、2023/9/13,1,Chapter5Semantic Analysis and Intermediate Code Generation,语义分析概述语法制导翻译(Syntax-Directed Translation)类型确定与类型检查(Type Checking)中间代码生成(Intermediate Code Generation),2023/9/13,2,5.1 语义分析概述,词法分析、语法分析 程序在书写上是正确的、在语法上是正确的,不能保证含义(语义)上的正确性,2023/9/13,3,5.1 语义分析概述,语义分析阶段分析源程序的含义,并作相应的处理,语义分析的基本功能:,确
2、定类型:确定标识符所关联数据对象的类型,即处理源程序的说明部分,类型检查:对运算及进行运算的运算分量进行类型检查,检查运算的合法性与运算分量类型的一致性(相容性),必要时作相应的类型转换,2023/9/13,4,5.1 语义分析概述,识别含义:确定程序中各构成成分组合到一起的含义,对可执行语句生成中间代码或目标代码,*语义分析往往是和中间代码生成紧密联系的,其他一些静态语义检查:控制流检查:如对于PASCAL语言,不允许从循环外跳转到循环内,C语言的Break引起控制离开最小包围的while、for等语句,检查是否这样的语句存在,唯一性检查:如标识符只能定义一次,枚举类型的元素不能重复等,20
3、23/9/13,5,5.1 语义分析概述,语义分析的输入是语法分析的输出(分析树),输出是中间代码,但同时它还完成了很多语义处理工作(见上),语义分析的主流技术 语法制导翻译技术,2023/9/13,6,5.2 语法制导翻译,文法符号的属性:,文法符号(Grammar Symbols)代表语言结构(Language Construct),如标识符、表达式、语句、程序,为每个文法符号引入一个属性(attribute)集合,反映相应语言结构的语义信息,如标识符的类型、常量的值、变量的存储地址等,2023/9/13,7,属性的类型(从分析过程中属性值的计算方法来分类):,5.2 语法制导翻译,1、综
4、合属性(Synthesized Attributes):属性值是分析树中该结点的子结点的属性值的函数,2、继承属性(Inherited Attributes):属性值是分析树中该结点的父结点和/或兄弟结点的属性值的函数,2023/9/13,8,5.2 语法制导翻译,对于产生式 AX1 X2 Xn,A,X1,X2,Xn,计算 A 的综合属性,S(A):=f(I(X1),I(Xn),计算 Xj 的继承属性,T(Xj):=f(I(A),.,I(Xn),综合属性用于“自下而上”传递信息,继承属性用于“自上而下”传递信息,2023/9/13,9,5.2 语法制导翻译,非终结符(开始符号除外)既可有综合属
5、性也可有继承属性,文法开始符号没有继承属性,终结符号只有综合属性,一般由词法分析器提供,2023/9/13,10,5.2 语法制导翻译,语法制导定义:为每一条产生式(A)引入一套语义规则,规则形式:b:=f(c1,c2,ck),b 是 A 的综合属性,则c1,c2,ck是产生式文法符号的属性,b 是产生式右部某文法符号的继承属性,则c1,c2,ck是产生式文法符号的属性,2023/9/13,11,5.2 语法制导翻译,虚(综合)属性(Dummy synthesized attribute):针对语义动作(过程或语义子程序)只是为了形式上的统一,语义规则可以计算属性值,也可以(语义动作)在符号表
6、中登录信息、输出错误信息、进行类型检查、产生中间代码等,2023/9/13,12,5.2 语法制导翻译,例1 P281 Fig.5.2(只有综合属性)虚属性终结符号的属性 某些非终结符加下标是为了区分一个产生式中同一非终结符的多次出现,例2 P283 Fig.5.4(带有继承属性),2023/9/13,13,5.2 语法制导翻译,属性文法:语法制导定义对上下文无关文法进行了扩充,扩充后的文法称为属性文法(attribute grammar)。,2023/9/13,14,5.2 语法制导翻译,语法制导翻译(Syntax-Directed Translation):根据语法分析中产生式对应的语义规
7、则进行翻译的方法称为语法制导翻译。,语法制导:基于语法分析中用到的文法产生式,翻译:完成语义分析的各项功能,不仅指生成中间代码,2023/9/13,15,5.2 语法制导翻译,属性之间的依赖关系语义规则 b:=f(c1,c2,ck),只有在已知 c1,ck 值的基础上,才能计算属性值 b,称属性 b 依赖于属性 c1,ck,2023/9/13,16,5.2 语法制导翻译,依赖图(Dependency Graphs):,有向边,a b,表示属性 b 依赖于属性 a,用来表示属性之间依赖关系的有向图(Directed Graph)称为依赖图,2023/9/13,17,5.2 语法制导翻译,依赖图的
8、构造算法:P284考虑的是分析树中的结点一个属性建立一个结点为每个语义动作引入一个虚属性,例 Fig.5.6,2023/9/13,18,5.2 语法制导翻译,依赖图的例子:,L,E.val=19,E.val=15,T.val=4,T.val=15,F.val=4,T.val=3,F.val=3,F.val=5,digit.lexval=4,digit.lexval=5,digit.lexval=3,+,*,Fig.5.3的依赖图,n,2023/9/13,19,5.2 语法制导翻译,依赖图的例子:Fig.5.7(Fig.5.5的依赖图),2023/9/13,20,5.2 语法制导翻译,属性计算顺
9、序,有向非循环图(directed acyclic graph)的拓扑排序(topological sort):,图中所有结点的一个排列,若 mimj 是一有向边,则在结点序列中 mi 在 mj 的前面,2023/9/13,21,5.2 语法制导翻译,例子:,1,2,3,4,7,6,5,拓扑排序:7 6 5 4 3 2 1 7 5 6 4 3 2 1 4 7 6 3 5 2 1,*依赖图的任一拓扑排序是一个合理的属性计算顺序,2023/9/13,22,5.2 语法制导翻译,属性计算实例:P286 Example 5.6,2023/9/13,23,5.2 语法制导翻译,属性计算的三种方法:1、分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课件 CHAPTER5 SemanticAnalysisandIntermediateCodeGeneration1
链接地址:https://www.31ppt.com/p-6003465.html