编译原理第5章第1节语法制导翻译和中间代码生成.ppt
《编译原理第5章第1节语法制导翻译和中间代码生成.ppt》由会员分享,可在线阅读,更多相关《编译原理第5章第1节语法制导翻译和中间代码生成.ppt(34页珍藏版)》请在三一办公上搜索。
1、5.1 概述,任务:词法分析和语法分析的基础上,进一步分析其含义,为生成相应的目标代码做好准备或直接生成目标代码功能:(1)审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义(静态语义分析或静态审查)(2)如果静态语义正确,就执行真正的翻译,即要么生成中间代码(便于优化),要么生成实际的目标代码,语义分析及其功能,5.1 概述,类型检查:每个操作是否遵循语言的类型系统控制流检查:控制流语句必须使控制转移到合法的地方一致性检查:在很多场合要求对象只能被定义一次,如枚举类型相关名字检查:同一名字必须出现两次或多次名字的作用域分析,静态语义检查,5.1 概述,复杂性介于源程序语言和机
2、器语言的一种表示形式引入原因:快速编译程序直接生成目标代码,没有将中间代码翻译成目标代码的额外开销。使编译程序结构在逻辑上更为简单明确,将与机器相关的某些实现细节置于代码生成阶段仔细处在中间代码一级进行优化工作使得代码优化比较容易实现。,中间代码,5.1.1 翻译文法(TG),逆波兰表示法:一种把运算符写在运算量后面的表达式表示方法。,a+bab+,a+b*cabc*+,(a+b)*cab+c*,a+b*c#的处理过程:,Read(a),Print(a),a,Read(+),Read(b),Print(b),ab,Read(*),Read(c),Print(c),abc,Print(*),ab
3、c*,Print(+),abc*+,aa+bb*cc*+,Read(#),原文法:,1.EE+T,2.ET,3.TT*F,4.TF,5.F(E),6.Fa,7.Fb,8.Fc,增加动作描述后文法:,1.EE+T+,2.ET,3.TT*F*,4.TF,5.F(E),6.Faa,7.Fbb,8.Fcc,ETT*FF*F(E)*F(E+T)*F(a+b)*c,ETT*F*T*cc*F*cc*(E)*cc*(E+T+)*cc*(E+F+)*cc*(E+bb+)*cc*(aa+bb+)*cc*,产生式右部的动作描述,5.1.1 翻译文法(TG),5.1.1 翻译文法(TG),翻译文法是一个上下文无关文法
4、,在该文法中终极符号集由输入符号(即原来终极符)和动作符号组成。,GT=(VN,VT,P,E)VN=E,T,FVT=a,b,c,+,*,(,),a,b,c,+,*P=产生式,属性翻译文法,扩充翻译文法的概念,使非终极符号、终极符号、动作符号都包含属性值。这些属性代表与文法符号相关的信息,例如,文法符号的类型、值、符号表内容等。与这些属性相关的信息,称为值属性。值属性可以在语法分析过程中计算和传递,属性加工的过程即语义的处理过程,(c3+c9)*(c2+c41),2.EE+T,3.ET,4.TT*F,5.TF,6.F(E),7.Fc,1.SEAnswer,(c3+c9)*(c2+c41),Ans
5、wer516,F3,T3,E3,F9,T9,E12,F12,T12,F2,T2,E2,F41,T41,E43,F43,T516,E516,综合属性,2.EE+T,3.ET,4.TT*F,5.TF,6.F(E),7.Fc,1.SEAnswer,2.EpEq+Tr p=q+r,3.EpTqp=q,4.TpTq*Fr p=q*r,5.TpFqp=q,6.Fp(Eq)p=q,7.Fpcqp=q,1.SEqAnswerr r=q,属性翻译文法,一、综合属性,如果一个结点的某一属性之值由子节点的属性值来计算,则称该属性为综合属性,1.说明Type V 变量表,2.变量表,V 变量表,3.变量表,1.说明T
6、ype V Set-Type 变量表,2.变量表,V Set-Type 变量表,3.变量表,Set-Type有两个参数:Set-Type(指针,类型)相应的动作符号:Set-Type 指针,类型,int i,j,k,属性翻译文法,二、继承属性,若某一结点的某一属性之值由该结点的兄弟结点和(或)父节点的属性值来计算,则称该属性为继承属性,1.说明Type V Set-Type 变量表,2.变量表,V Set-Type 变量表,3.变量表,int i,j,k,Set-Typej,int,Set-Typei,int,变量表int,变量表int,Set-Typek,int,变量表int,继承属性,属性
7、翻译文法,二、继承属性,1.说明Type V Set-Type 变量表,2.变量表,V Set-Type 变量表,3.变量表,1.说明Typet Vp Set-Typeu,v 变量表q,2.变量表t,Vp Set-Typeu,v 变量表q,3.变量表,属性翻译文法,二、继承属性,注:终结符只有综合属性,非终结符既有综合属性也有继承属性,属性翻译文法,(1)每个VT,VN和动作符号都有一个与其相关的属性的有穷集,且每个属性都有一个值域。,(2)每个VN和动作符号的属性可分为两类:继承属性或综合属性。,三、属性翻译文法,(3)继承属性求值规则:开始符号的每个继承属性具有指定的初始值;产生式右部的继
8、承属性,用该产生式左部或同一右部的左边符号属性求得。,(4)综合属性求值规则:输入符号的综合属性具有指定的初始值;产生式左部的综合属性,用该产生式左部或右部的某些符号属性求得;动作符号的综合属性,由该动作符号的其它属性值求得。,属性翻译文法,语法制导翻译是在语法分析过程中,随着分析的进展,根据每个产生式对应的语义子程序进行翻译的一种办法。,四、语法制导翻译,(1)对每个文法符号X的各方面属性进行描述,如用X.Type,X.Cat,X.Val表示类型、种属、值。,(2)对同一产生式中同一符号的多次出现,用上角标区别,如:EE(1)+E(2)。,五、对语义动作描述的约定,(3)每个产生式对应的语义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 语法 制导 翻译 中间 代码 生成
链接地址:https://www.31ppt.com/p-6599827.html