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

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

ID:43218698

大小:1.16 MB

页数:100页

时间:2019-10-04

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

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

1、第8章语法制导翻译和中间代码生成§8.1概述语法分析后的源程序语义处理中间代码或目标代码一、语义处理的任务:根据语义规则对识别出的各种语法成分析其含义,进行初步翻译,生成相应的中间代码或直接生成目标代码。第一静态语义分析或静态审查。第二动态语义处理:编译中的语义处理是指两个功能①类型检查。②控制流检查:确保控制语句有合法的转向点。③一致性检查。④相关名字检查。⑤名字的作用域分析第一:静态语义分析通常包括:如果静态语义正确,语义处理则要执行真正的翻译,即,或者将源程序翻译成程序的一种中间表示形式(中间代码),或者将源程序翻译成目标代码。第二动态语义

2、处理:实际应用中比较流行的语义分析方法:基于属性文法的语法制导翻译方法8.2属性文法属性文法:属性:所谓属性,用以描述事物或人的特征、性质,品质等等。比如,谈到一个物体,可以用“颜色”描述它,谈起某人,可以使用“有幽默感“来形容他。对一个文法,文法中的每个符号都有属性,可以用"类型"、"值"或"存储位置"来描述它。附加了一组属性和运算(语义)规则的文法属性文法文法符号X的属性t常用X.t来表示语义规则用花括号{}括起来,可被插入到产生式右部的任何合适的位置上。不同的产生式对应不同的语义规则不同的分析目标也对应不同的语义规则1.属性的表示2.语义规

3、则的表示语义信息语义之间的关系一个属性文法是一个三元组:A=(G,V,F),G:是一个上下文无关文法V:有穷的属性集,每个属性与文法的一终结符或非终结符相连。F:关于属性的属性断言或谓词集.每个断言与一个产生式相联。一个断言就是一个语义规则,描述各属性的关系。用法:针对语义:为每个符号设置一个属性,终结符号用单词属性。为每个产生式设置语义规则——描述各属性的关系。属性文法的定义:属性分为两种继承属性和综合属性综合属性:在语法树中,一个结点的综合属性由该结点的子结点的属性值确定。它的计算规则由底向上.继承属性:在语法树中,一个结点的继承属性由该结点

4、的父结点/兄弟结点的属性确定。例 综合属性LEEE1+TETTT1*FTFF(E)Fiprint(E.val)E.val=E1.val+T.valE.val=T.valT.val=T1.valF.valT.val=F.valF.val=E.valF.val=i.lexval语义规则产生式计算3*5+4的值3*5+4的分析树只使用综合属性.LEETTFTFFi5i4i3+*3*5+4的分析树一个结点的综合属性值是其子结点的某些属性来决定的通常使用自底向上的分析方法在每个结点处使用语义规则来计算综合属性值当一个产生式获得匹配时,就调用

5、相应的语义子程序从叶结点到根结点进行计算LEEE1+TETTT1*FTFF(E)Fiprint(E.val)E.val=E1.val+T.valE.val=T.valT.val=T1.valF.valT.val=F.valF.val=E.valF.val=i.lexval语义规则产生式继承属性一个结点的继承属性值是由此结点的父结点和/或兄弟结点的某些属性来决定的。例,添加标识符类型的语义描述:继承属性L1.in:=L.in产生式语义规则DTLTintTrealLL1,idLidL.in:=T.typeT.type=int

6、egerT.type:=realaddtype(id.entry,L.in)addtype(id.entry,L.in)与L产生式相联的语义规则中有一个过程调用addtype,过程addtype的功能是把每个标识符的类型信息登录在符号表的相关项中。句子intid1,id2的语法树,使用表示属性的传递情况。L1.in:=L.in产生式语义规则DTLTintTrealLL1,idLidL.in:=T.typeT.type=integerT.type:=realaddtype(id.entry,L.in)addtype(id.entry,L.

7、in)DTLLid1id2,int1、文法非终结符既可有综合属性,也可有继承属性;2、开始符号没有继承属性;3、终结符只有综合属性,由词法分析器提供。几点说明:语法制导翻译:将语义规则与语法规则相结合,在语法分析的过程中通过执行语义动作,计算语义属性值,从而完成预定的翻译工作。8.3语法制导翻译自底向上语法制导翻译自顶向下语法制导翻译语法制导翻译的实现语法制导翻译分为两种处理方法:(1)自底向上的翻译:(只有综合属性)对每个产生式编制一个语义子程序,在进行语法分析的过程中,当一个产生式获得匹配时,就调用相应的语义子程序实现语义检查与翻译。这种实现

8、方案隐藏了其中语义规则的计算次序等实现细节,不必规定翻译顺序。(2)自顶向下翻译(含有继承属性):在产生式右部的适当位置,插入相应的语义

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

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

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