编译原理-语法制导翻译技术与中间代码生成ppt课件.ppt

编译原理-语法制导翻译技术与中间代码生成ppt课件.ppt

ID:58665049

大小:1.12 MB

页数:118页

时间:2020-10-05

编译原理-语法制导翻译技术与中间代码生成ppt课件.ppt_第1页
编译原理-语法制导翻译技术与中间代码生成ppt课件.ppt_第2页
编译原理-语法制导翻译技术与中间代码生成ppt课件.ppt_第3页
编译原理-语法制导翻译技术与中间代码生成ppt课件.ppt_第4页
编译原理-语法制导翻译技术与中间代码生成ppt课件.ppt_第5页
资源描述:

《编译原理-语法制导翻译技术与中间代码生成ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本章主要介绍:语法制导翻译法的基本思想常见的几种中间代码的形式各种不同语法结构的语法制导翻译技术第五章语法制导翻译技术和 中间代码生成静态语义审查审查每个语法结构的静态语义,即验证语法结构合法的程序,是否真正有意义。5.1概述如果静态语义正确,语义处理则要执行真正的翻译,即生成程序的某种中间代码的形式或直接生成目标代码。执行真正的翻译(1)属性对文法的每一个符号,引进一些属性,这些属性代表与文法符号相关的信息,如类型、值、存储位置等。与属性相关的信息,即属性值,可以在语法分析过程中计算和传递。1.属性文法5.2属性文法属性分为

2、两类:综合属性其计算规则按“自下而上”方式进行,即规则左部符号的某些属性根据其右部符号的属性和(或)自己的其他属性计算而得。属性加工的过程即是语义的处理过程。综合属性和继承属性。E→E(1)+E(2){E.val=E(1).val+E(2).val}5.2属性文法继承属性其计算规则按“自上而下”方式进行,即规则右部符号的某些属性根据其左部符号的属性和(或)右部其他符号的某些属性计算而得。D→TL{L.in=T.type}T→int{T.type=integer}T→real{T.type=real}L→L(1),id{L(1)

3、.in=L.in;Fill(id.entry,L.in)}L→id{Fill(id.entry,L.in)}5.2属性文法(2)属性文法为文法的每一个规则配备的计算属性的计算规则,称为语义规则(描述语义处理的加工动作)。属性文法包含一个上下文无关文法和一系列语义规则。语义规则:属性加工的过程即是语义的处理过程5.2属性文法语法制导翻译法的基本思想为文法的每个产生式都配备一个语义动作或语义子程序。在语法分析的过程中,每当使用一条产生式进行推导或归约时,就执行相应产生式的语义动作,从而实现语义处理。E→E(1)+E(2){E.va

4、l=E(1).val+E(2).val}5.3语法制导翻译概述(语义子程序)描述了一个产生式所对应的翻译工作。语义动作语义动作不仅指明了该产生式所产生符号串的意义,而且还根据这种意义规定了对应的加工动作(如查填各类表格、改变编译程序的某些变量的值、打印各种错误信息及生成中间代码等),从而完成预定的翻译工作。5.3语法制导翻译概述语法制导翻译法在语法分析过程中,依随分析的过程,根据每个产生式所对应的语义子程序(语义规则描述的语义处理的加工动作)进行翻译的方法。5.3语法制导翻译概述为文法每一产生式设计相应的求值的语义描述(语义动

5、作):例如,设有简单算术表达式的文法:E→E+E

6、E*E

7、(E)

8、digit1.E→E(1)+E(2){E.val=E(1).val+E(2).val}2.E→E(1)*E(2){E.val=E(1).val*E(2).val}3.E→(E(1)){E.val=E(1).val}4.E→digit{E.val=Lex.digit}{7+8*5,3+8,6*5,…}5.3语法制导翻译概述E.val=47E.val=8E.val=40E.val=7E.val=5+5*871.E→E(1)+E(2){E.val=E(1).val+E

9、(2).val}2.E→E(1)*E(2){E.val=E(1).val*E(2).val}3.E→(E(1)){E.val=E(1).val}4.E→digit{E.val=Lex.digit}句子7+8*5EEEEE5.3语法制导翻译概述语法制导翻译技术分为:自底向上语法制导翻译自顶向下语法制导翻译5.3语法制导翻译概述LR分析制导的具体实现方法:为文法的每一个产生式设计相应的语义动作为文法构造LR分析表5.3语法制导翻译概述扩充LR分析栈,以便存放文法符号对应的语义值语义值栈状态栈文法符号栈S0$—S1X1X1.valS

10、kXkXk.val.........修改总控程序:查分析表,当用某产生式归约时,调用相应的语义动作5.3语法制导翻译概述例如,设有简单算术表达式的文法:E→E+E

11、E*E

12、(E)

13、digit1.E→E(1)+E(2){E.val=E(1).val+E(2).val}2.E→E(1)*E(2){E.val=E(1).val*E(2).val}3.E→(E(1)){E.val=E(1).val}4.E→digit{E.val=Lex.digit}为文法每一产生式设计相应的语义动作(求值的语义描述):5.3语法制导翻译概述2.为上述

14、文法构造LR分析表如下图:90状态ACTIONGOTO+digit*()$ES3S9S5S4S2S3S2S3S5S4S2S5S2S3r4r4r4r4r1r1r1r2r3r2r3r3r2r2r3123456781678acc5.3语法制导翻译概述自下而上语法制导翻译法的特点:语

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

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

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