编译原理第5章语义分析和中间代码产生

编译原理第5章语义分析和中间代码产生

ID:46515013

大小:775.50 KB

页数:49页

时间:2019-11-24

编译原理第5章语义分析和中间代码产生_第1页
编译原理第5章语义分析和中间代码产生_第2页
编译原理第5章语义分析和中间代码产生_第3页
编译原理第5章语义分析和中间代码产生_第4页
编译原理第5章语义分析和中间代码产生_第5页
资源描述:

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

1、第五章语法制导翻译和中间代码产生16七月20211第五章语法制导翻译和中间代码产生第五章语法制导翻译和中间代码产生16七月20212语义分析的任务:根据语法成分的结构,分析其含义,并用一种内部形式(中间代码)或直接用目标语言表示出来。具体:静态语义检查和翻译包括:类型检查(操作符是否相容,例如%)控制流检查(break是否有switch和for,while)一致性检查(inta;floata;)相关名字检查、等等第五章语法制导翻译和中间代码产生16七月20213§5.1属性文法 一、属性一、属性:一般用来描述客观存在的事物或人的特性。例如,学生的姓名、年龄、性别等;商品的颜色、重量、单价等。

2、编译技术中用属性来描述计算机处理对象的特征。例如:X.Type,X.Place,X.val等分别描述X的类型,存储位置、值等不同的特征。属性分两类:综合属性:一般用于“自下而上”传递信息。继承属性:一般用于“自上而下”传递信息。第五章语法制导翻译和中间代码产生16七月20214二、属性文法对于某个压缩了的上下文无关文法,当为每个文法符号引进一组属性,且让该文法中的重写规则附加以语义规则时,称该上下文无关文法为属性文法。形式定义:一个属性文法形式上定义为一个三元组AG,AG=(G,V,E)。其中G表示一个上下文无关文法;V表示属性的有穷集;E表示属性的断言或谓词的有穷集。第五章语法制导翻译和中

3、间代码产生16七月20215三、综合属性从语法分析树的角度来看,如果一个结点的某一属性,其值由子结点的属性之值来计算,则称该属性为综合属性。综合属性用于“自下而上”传递信息。第五章语法制导翻译和中间代码产生16七月20216例1:算术表达式求值的属性文法。规则式语义规则1.L→Eprint(E.val)2.E→E1+TE.val:=E1.val+T.val3.E→TE.val:=T.val4.T→T1*FT.val:=T1.val*F.val5.T→FT.val:=F.val6.F→(E)F.val:=E.val7.F→digitF.val:=digit.lexval与规则式关联的每一个语义

4、规则的左部符号E,T,F等的属性值的计算由右部非终结符决定,这种属性称为综合属性。第五章语法制导翻译和中间代码产生16七月20217LE.val=19F.val=5+T.val=4T.val=15F.val=4digit.lexval=4E.val=15T.val=3digit.lexval=5F.val=3digit.lexval=3*n求:3*5+4第五章语法制导翻译和中间代码产生16七月20218四、继承属性语法树分析中,若一个结点的某个属性之值由该结点的兄弟结点和/或父结点的属性之值来计算,则此结点的属性称为继承属性。继承属性用于“自上而下”传递信息。第五章语法制导翻译和中间代码产生

5、16七月20219例2、说明语句中简单变量类型信息的属性文法。规则式语义规则1.D→TLL.in:=T.type2.T→intT.type:=integer3.T→realT.type:=real4.L→L1,idL1.in:=L.inaddtype(id.entry,L.in)5.L→idaddtype(id.entry,L.in)过程addtype把每一个标识符id的类型信息(由L.in继承)登录在符号表的相关项id.entry中。DTLintL,ididT有一个综合属性type,其值为integer或real。L.in由T.type确定后逐步传递到下边有关结点使用。这种属性称为继承属性

6、。第五章语法制导翻译和中间代码产生16七月202110五、属性的初始值①终结符号只有综合属性,它们由词法分析器提供。②非终结符号既有综合属性也可有继承属性,文法开始符号的所有继承属性作为属性计算前的初始值。第五章语法制导翻译和中间代码产生16七月202111§5.2语法制导翻译法语法制导翻译法的基本思想:对文法的每一条产生式,设计语义子程序。在语法分析的过程中,当使用一条产生式推导或归约时,调用该语义子程序进行属性计算,完成预定的翻译工作。语法制导翻译法:在语法分析的过程中,依随分析过程,根据每个产生式添加的语义动作进行翻译的方法。第五章语法制导翻译和中间代码产生16七月202112语义子程

7、序语义子程序也称为翻译子程序,语义动作。它描述了有关产生式所对应的翻译工作。语义动作一方面指出了产生式所对应的符号串的意义;另一方面又按照这种意义规定了对应的属性计算加工动作。语义动作:查填各种表格计算某变量的值生成某种中间代码打印错误信息等等第五章语法制导翻译和中间代码产生16七月202113LR分析制导的具体实现方法1、为文法产生式设计语义子程序。2、为文法构造一张无冲突的LR分析表。3、修改总控程序,归

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

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

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