编译原理第5章第1节语法制导翻译和中间代码生成

编译原理第5章第1节语法制导翻译和中间代码生成

ID:46514994

大小:1.51 MB

页数:34页

时间:2019-11-24

编译原理第5章第1节语法制导翻译和中间代码生成_第1页
编译原理第5章第1节语法制导翻译和中间代码生成_第2页
编译原理第5章第1节语法制导翻译和中间代码生成_第3页
编译原理第5章第1节语法制导翻译和中间代码生成_第4页
编译原理第5章第1节语法制导翻译和中间代码生成_第5页
资源描述:

《编译原理第5章第1节语法制导翻译和中间代码生成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、5.1概述任务:词法分析和语法分析的基础上,进一步分析其含义,为生成相应的目标代码做好准备或直接生成目标代码功能:(1)审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义(静态语义分析或静态审查)(2)如果静态语义正确,就执行真正的翻译,即要么生成中间代码(便于优化),要么生成实际的目标代码语义分析及其功能5.1概述类型检查:每个操作是否遵循语言的类型系统控制流检查:控制流语句必须使控制转移到合法的地方一致性检查:在很多场合要求对象只能被定义一次,如枚举类型相关名字检查:同一名字必须出现两次或多次名字的作

2、用域分析静态语义检查5.1概述复杂性介于源程序语言和机器语言的一种表示形式引入原因:快速编译程序直接生成目标代码,没有将中间代码翻译成目标代码的额外开销。使编译程序结构在逻辑上更为简单明确,将与机器相关的某些实现细节置于代码生成阶段仔细处在中间代码一级进行优化工作使得代码优化比较容易实现。中间代码5.1.1翻译文法(TG)逆波兰表示法:一种把运算符写在运算量后面的表达式表示方法。a+bab+a+b*cabc*+(a+b)*cab+c*a+b*c#的处理过程:Read(a)Print(a)aRead(+)Read(b)Pr

3、int(b)abRead(*)Read(c)Print(c)abcPrint(*)abc*Print(+)abc*+a@a+b@b*c@c@*@+Read(#)原文法:1.EE+T2.ET3.TT*F4.TF5.F(E)6.Fa7.Fb8.Fc增加动作描述后文法:1.EE+T@+2.ET3.TT*F@*4.TF5.F(E)6.Fa@a7.Fb@b8.Fc@cETT*FF*F(E)*F(E+T)*F(a+b)*cETT*F@*T*c@c@*F*c@c@*(E)*c@c@

4、*(E+T@+)*c@c@*(E+F@+)*c@c@*(E+b@b@+)*c@c@*(a@a+b@b@+)*c@c@*产生式右部的动作描述5.1.1翻译文法(TG)5.1.1翻译文法(TG)翻译文法是一个上下文无关文法,在该文法中终极符号集由输入符号(即原来终极符)和动作符号组成。GT=(VN,VT,P,E)VN={E,T,F}VT={a,b,c,+,*,(,),@a,@b,@c,@+,@*}P={产生式}5.1.2属性翻译文法扩充翻译文法的概念,使非终极符号、终极符号、动作符号都包含属性值。这些属性代表与文法符

5、号相关的信息,例如,文法符号的类型、值、符号表内容等。与这些属性相关的信息,称为值属性。值属性可以在语法分析过程中计算和传递,属性加工的过程即语义的处理过程(c↑3+c↑9)*(c↑2+c↑41)2.EE+T3.ET4.TT*F5.TF6.F(E)7.Fc1.SE@Answer(c↑3+c↑9)*(c↑2+c↑41)@Answer↓516SE@AnswerTT*FF(E)E+TTFc↑3Fc↑9(E)E+TTFc↑2Fc↑41F↑3T↑3E↑3F↑9T↑9E↑12F↑12T↑12F↑2T↑2E↑2F↑41T

6、↑41E↑43F↑43T↑516E↑516综合属性2.EE+T3.ET4.TT*F5.TF6.F(E)7.Fc1.SE@Answer2.E↑pE↑q+T↑rp=q+r3.E↑pT↑qp=q4.T↑pT↑q*F↑rp=q*r5.T↑pF↑qp=q6.F↑p(E↑q)p=q7.F↑pc↑qp=q1.SE↑q@Answer↓rr=q5.1.2属性翻译文法一、综合属性如果一个结点的某一属性之值由子节点的属性值来计算,则称该属性为综合属性1.说明TypeV变量表2.变量表,V变量表3.变量表ε1.

7、说明TypeV@Set-Type变量表2.变量表,V@Set-Type变量表3.变量表εSet-Type有两个参数:Set-Type(指针,类型)相应的动作符号:@Set-Type↓指针,类型inti,j,k5.1.2属性翻译文法二、继承属性若某一结点的某一属性之值由该结点的兄弟结点和(或)父节点的属性值来计算,则称该属性为继承属性1.说明TypeV@Set-Type变量表2.变量表,V@Set-Type变量表3.变量表εinti,j,k@Set-Type↓j,int@Set-Type↓i,int变量表↓in

8、t变量表↓int@Set-Type↓k,int变量表↓int继承属性5.1.2属性翻译文法说明Type↓intV↓i@Set-Type变量表,V↓j@Set-Type变量表,V↓k@Set-Type变量表ε二、继承属性1.说明TypeV@Set-Type变量表2.变量表,V@Set-Type变量表3.变量表ε1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。