第8章 语法制导翻译和中间代码生成.ppt

第8章 语法制导翻译和中间代码生成.ppt

ID:48796031

大小:266.50 KB

页数:52页

时间:2020-01-25

第8章 语法制导翻译和中间代码生成.ppt_第1页
第8章 语法制导翻译和中间代码生成.ppt_第2页
第8章 语法制导翻译和中间代码生成.ppt_第3页
第8章 语法制导翻译和中间代码生成.ppt_第4页
第8章 语法制导翻译和中间代码生成.ppt_第5页
资源描述:

《第8章 语法制导翻译和中间代码生成.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第8章语法制导翻译和中间代码生成编译程序的任务是把源程序翻译成目标程序,这个目标程序必须和源程序的语义等同。编译中的语义处理指以下两个功能:审查每个语法结构的静态语义如果静态语义正确则将源程序翻译成中间代码或生成实际的目标代码第8章语法制导翻译和中间代码生成8.1属性文法8.2语法制导翻译概论8.3中间代码的形式8.4简单赋值语句的翻译8.5布尔表达式的翻译8.6控制结构的翻译8.7说明语句的翻译8.8数组的翻译8.1属性文法目前很多编译程序采用属性文法和语法制导翻译方法对语义处理工作进行比较规范的描述。属性:用于描述事物或人的特征、性质和品质等。一个属性文法包含一个上下文无关文法和一系列语

2、义规则,这些语义规则附在文法的每个产生式上。所谓语法制导翻译是指在语法分析过程中,完成附加在所使用的产生式上的语义规则描述的动作。8.1属性文法属性文法(attributegrammar)是一个三元组:A=(G,V,F),其中G:一个上下文无关文法。V:一个属性的有穷集,每个属性与文法的一个终结符或非终结符相连,这些属性代表与文法符号相关信息,如它的类型、值、代码序列、符号表内容等等。属性与变量一样,可以进行计算和传递。属性加工的过程即是语义处理的过程。F:关于属性的断言或一组属性的计算规则(称为语义规则)。断言或语义规则与一个产生式相联,引用该产生式左端或右端的终结符或非终结符相联的属性。

3、8.1属性文法例,文法G:ET1+T2ET1orT2TnumTtrueTfalse类型检查的属性文法ET1+T2{T1.t=intANDT2.t=int}ET1orT2{T1.t=boolANDT2.t=bool}Tnum{T.t=int}Ttrue{T.t=bool}Tfalse{T.t=bool}与每个非终结符T相联的有属性t,t要么是int,要么是bool。与非终结符E的产生式的断言指明:两个T的属性必须相同。EE{T1.t=intANDT2.t=int}T+T{T1.t=int}T+T{T2.t=int}34348.1属性文法属性通常分为两类:综合属性和继承属性。

4、属性文法中,对应于每个产生式A都有一套与之相关联的语义规则,每条规则的形式为b:=f(c1,c2…ck)f是一个函数,b和c1,c2…ck是该产生式文法符号的属性.并且(1)如果b是A的一个属性,c1,c2…ck是产生式右部文法符号的属性或A的其他属性,则称b是A的综合属性。(2)如果b是产生式右部某个文法符号X的一个属性,并且c1,c2…ck是A或产生式右边任何文法符号的属性,则称b是文法符号X的继承属性。在两种情况下,我们都说属性b依赖于属性c1,c2…ck8.1属性文法非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性。终结符只有综合属性,它们由词法程序提供。出现在产

5、生式左边的继承属性和出现在产生式右边的综合属性不由所给定的产生式的属性计算规则进行计算,它们由其它产生式的属性规则计算或者由属性计算器的参数提供。Eg.如非终结符A,B和C,其中A有一个继承属性a和一个综合属性b,B有综合属性c,C有继承属性d在产生式ABC的语义规则中可计算A.b:=f(A.a,B.c,C.d)Eg.A.b:=A.a+B.cC.d:=f(A.a,A.b,B.c)Eg.C.d:=B.c而属性A.a和B.c是在其他地方计算的。8.1属性文法语义规则所描述的工作可以包括属性计算、静态语义检查、符号表操作、代码(中间)生成等等。通常把这样的语义规则写成过程调用或过程段。8.1属性

6、文法属性文法和综合属性的示例简单算术表达式文法及其求值的语义描述产生式语义规则LE{Print(E.val)}EE1+T{E.val:=E1.val+T.val}ET{E.val:=T.val}TT1*F{T.val:=T1.valF.val}TF{T.val:=F.val}F(E){F.val:=E.val}Fdigit{F.val:=digit.lexval}E.Val,T.val,F.val是综合属性。digit.lexval是综合属性,其值由词法分析程序提供。8.1属性文法属性文法和继承属性的示例描述说明语句文法及其语句中各种变量的类型信息的语义规则。产生式语义规则D

7、TL{L.in:=T.type}Tint{T.type:=integer}Treal{T.type:=real}LL1,id{L1.in:=L.inaddtype(id.entry,L.in)}Lid{addtype(id.entry,L.in)}过程addtype的功能是把每个标识符的类型信息登录到符号表的相关项中。Realid1,id2,id3每个L结点都带有继承属性的语法树DL.in=real

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

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

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