编译原理 之 语法制导翻译和中间代码生成.ppt

编译原理 之 语法制导翻译和中间代码生成.ppt

ID:51593421

大小:463.50 KB

页数:85页

时间:2020-03-25

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

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

1、第八章语法制导翻译和中间代码生成属性文法语法制导翻译中间代码的形式一些语句的翻译概述—语义处理程序设计语言的语义静态语义是对程序约束的描述,这些约束无法通过抽象语法规则来妥善地描述,它可以分为类型规则和作用域/可见性规则,类型相容性,变量先声明后引用,名称相关要求.语法分析后的源程序Þ语义处理概述—语义处理动态语义是真正的翻译成中间代码,或直接生成目标代码;编译程序的语义处理工作:静态语义审查;解释执行动态语义(计算)生成代码.8.1属性文法语义形式化—语义建模命令式或操作式模型—操作语义学应用式模型—指称语义学公理式模型—公理语义学形式语义学(如指称语义学、公理语义学、操作语义学等)的研

2、究已取得了许多重大的进展目前在实际应用中比较流行的语义描述和语义处理的方法主要还是属性文法和语法制导翻译方法。8.1属性文法属性文法(attributegrammar)是一个三元组:A=(G,V,F),其中G:是一个上下文无关文法V:有穷的属性集,每个属性与文法的一个终结符或非终结符相连,这些属性代表与文法符号相关信息,如它的类型、值、代码序列、符号表内容等等.属性与变量一样,可以进行计算和传递。属性加工的过程即是语义处理的过程。F:关于属性的断言或一组属性的计算规则(称为语义规则).断言或语义规则与一个产生式相联,只引用该产生式左端或右端的终结符或非终结符相联的属性.例:类型检查的属性文

3、法表达式文法ET+T

4、TorT Tnum

5、true

6、falseE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}属性有两种—继承属性和综合属性综合属性用于“自下而上”传递信息.继承属性用于“自上而下”传递信息.在一个属性文法中,对应于每个产生式A都有一套与之相关联的语义规则,每条规则的形式为b:=f(c1,c2…ck).这里f是一个函数.(1)如果b是A的一个属性并且c1,c2…ck是产生式右边文法符号的属性或A的其它属性

7、,则称b是A的综合属性.(2)b是产生式右边某个文法符号X的一个属性并且c1,c2…ck是A或产生式右边任何文法符号的属性,则称b是文法符号X的继承属性.在上述两种情况下,我们都说属性b依赖于属性c1,c2…ck.1)非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性(除非另有说明).2)终结符只有综合属性.例8.1简单算术表达式求值的语义描述语义规则LEEE1+TETTT1*FTFF(E)FdigitPrint(E.val)E.val:=E1.val+T.valE.val:=T.valT.val:=T1.valF.valT.val:=F.valF.val:=E.valF.

8、val:=digit.lexval产生式非终结符E、T及F都有一个综合属性val.符号digit有一个综合属性,它的值由词法分析器提供.与产生式L→E对应的语义规则仅仅是打印由E产生的算术表达式的值的一个过程,我们可认为这条规则定义了L的一个虚属性.某些非终结符加下标是为了区分一个产生式中同一非终结符多次出现.设表达式为3*5+4,则语义动作打印数值19.LE.val=19E.val=15T.val=4T.val=15F.val=4T.val=3F.val=3F.val=5digit.lexval=4digit.lexval=5digit.lexval=3+*3*5+4的带注释的分析树例8

9、.2说明语句语义规则生产式语义规则DTLTintTrealLL1,idLidL.in:=T.typeT.type=integerT.type:=realL1.in:=L.inaddtype(id.entry,L.in)addtype(id.entry,L.in)非终结符T有一个综合属性type,其值有关键字决定(int或real).L.in=T.type,L.in是继承属性,它将沿着语法树传递到下边的结点.与L相联的语义规则中有一个过程调用—addtype把标识符的类型信息登录在符号表中.一个结点的继承属性值是由此结点的父结点和/或兄弟结点的某些属性来决定的.DL.in=real

10、L.in=realT.type=realrealid1id2Realid1,id2,8.2语法制导翻译方法基于属性文法的处理—语法制导翻译在语法分析过程中,随着分析的步步进展,根据每个产生式所对应的语义子程序(或语义规则描述的语义动作)进行翻译的办法称作语法制导翻译.假如我们现在要分析的语法成分是简单算术表达式,所完成的语义处理不是将它翻译成中间代码或是目标代码,而是计算表达式的值.产生式语义规则0)L→Eprint(E

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

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

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