sun编译原理第5章语法制导翻译技术和中间代码生成(第19-21讲).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《sun编译原理第5章语法制导翻译技术和中间代码生成(第19-21讲).ppt》由会员分享,可在线阅读,更多相关《sun编译原理第5章语法制导翻译技术和中间代码生成(第19-21讲).ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成5.1 概述概述语义分析的任务语义分析的任务语义分析的任务语义分析的任务首先编译程序审查每个语法结构的静态语义,如首先编译程序审查每个语法结构的静态语义,如果静态语义正确,再生成中间代码。果静态语义正确,再生成中间代码。词法分析:分析的预备阶段,输出是词法分析:分析的预备阶段,输出是单词符号序列单词符号序列;语法分析:分析的主要阶段,输出是语法分析:分析的主要阶段,输出是语法树语法树。但这样还不能完全确定源程序的正确性,也没有获得但这样还不能完全确定源程序的正确性,也没有获得翻译时所需的所有信息。翻译时所需的所有信息。注意:
2、有的编译程序不生成中间代码而直接生注意:有的编译程序不生成中间代码而直接生成实际的目标代码。成实际的目标代码。11/27/20221信息学院信息学院孙丽云孙丽云第第5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成5.2 属性文法属性文法词法规则的描述工具:词法规则的描述工具:语法规则的描述工具:语法规则的描述工具:语义规则的常用描述工具:语义规则的常用描述工具:属性文法属性文法正规文法或正规式正规文法或正规式上下文无关文法上下文无关文法属性属性属性属性是编程语言结构的任意特性,如:是编程语言结构的任意特性,如:是编程语言结构的任意特性,如:是编程语言结构的任意特性,如:v变量
3、的数据类型变量的数据类型变量的数据类型变量的数据类型v表达式的值表达式的值表达式的值表达式的值v存储器中变量的位置存储器中变量的位置存储器中变量的位置存储器中变量的位置v程序的目标代码程序的目标代码程序的目标代码程序的目标代码v数的有效位数数的有效位数数的有效位数数的有效位数基本概念基本概念基本概念基本概念X.aX.aX.aX.a是是是是与与与与X X X X关关关关联联联联的的的的a a a a的的的的值值值值 (X(X(X(X 是是是是一一一一个个个个文文文文法法法法符符符符号号号号,a a a a 是是是是 X X X X的的的的一一一一个个个个属属属属性性性性)。如如如如:X.type
4、(XX.type(XX.type(XX.type(X的的的的类类类类型型型型)、X.place(XX.place(XX.place(XX.place(X的的的的 存存存存 储储储储 位位位位 置置置置)、X.valX.valX.valX.val(X X X X的值)的值)的值)的值)11/27/20222信息学院信息学院孙丽云孙丽云第第5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成属性文法属性文法属性文法属性文法即:以语法分析为基础,对应文法的每个产生式,确定即:以语法分析为基础,对应文法的每个产生式,确定即:以语法分析为基础,对应文法的每个产生式,确定即:以语法分析为基础
5、,对应文法的每个产生式,确定相应的语义规则。相应的语义规则。相应的语义规则。相应的语义规则。属性文法是在上下文无关文法的基础上,允许每个文法属性文法是在上下文无关文法的基础上,允许每个文法属性文法是在上下文无关文法的基础上,允许每个文法属性文法是在上下文无关文法的基础上,允许每个文法符号符号符号符号X(X(X(X(终结符或非终结符终结符或非终结符终结符或非终结符终结符或非终结符)根据处理的需要,定义与根据处理的需要,定义与根据处理的需要,定义与根据处理的需要,定义与X X X X相相相相关联的属性。关联的属性。关联的属性。关联的属性。一个属性文法形式上定义为一个三元组一个属性文法形式上定义为一
6、个三元组一个属性文法形式上定义为一个三元组一个属性文法形式上定义为一个三元组AGAGAGAG,AG=(G,V,E)AG=(G,V,E)AG=(G,V,E)AG=(G,V,E)。其中。其中。其中。其中G G G G表示一个上下文无关文法;表示一个上下文无关文法;表示一个上下文无关文法;表示一个上下文无关文法;V V V V表表表表示属性的有穷集;示属性的有穷集;示属性的有穷集;示属性的有穷集;E E E E表示属性的断言或谓词的有穷集。表示属性的断言或谓词的有穷集。表示属性的断言或谓词的有穷集。表示属性的断言或谓词的有穷集。其中每个断言与文法某产生式相关联。其中每个断言与文法某产生式相关联。其中
7、每个断言与文法某产生式相关联。其中每个断言与文法某产生式相关联。例:例:例:例:E E E Em+nm+nm+nm+n,则与该产生式相关联的断言为:,则与该产生式相关联的断言为:,则与该产生式相关联的断言为:,则与该产生式相关联的断言为:E.valE.valE.valE.val=m.val+n.valm.val+n.valm.val+n.valm.val+n.val11/27/20223信息学院信息学院孙丽云孙丽云第第5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成 文法规则文法规则文法规则文法规则语义规则语义规则语义规则语义规则 规则规则规则规则 11相关的属性等式相关的属
8、性等式相关的属性等式相关的属性等式.规则规则规则规则 nn相关的属性等式相关的属性等式相关的属性等式相关的属性等式属性文法属性文法属性文法属性文法一般地,将属性文法写成表格形式,每个文法规则一般地,将属性文法写成表格形式,每个文法规则用属性等式的集合或相应规则的语义规则列出。用属性等式的集合或相应规则的语义规则列出。注意:文法规则中同一产生式中某符号出现多次注意:文法规则中同一产生式中某符号出现多次必须使用下标进行必须使用下标进行区分区分。例:。例:number1number2digit11/27/20224信息学院信息学院孙丽云孙丽云 1)1)已知无符号数文法如下,请改写成已知无符号数文法如
9、下,请改写成已知无符号数文法如下,请改写成已知无符号数文法如下,请改写成值属性文法。值属性文法。值属性文法。值属性文法。numbernumbernumberdigit|digitnumberdigit|digitdigitdigit0|1|2|3|4|5|6|7|8|90|1|2|3|4|5|6|7|8|9 例如:例如:例如:例如:文法规则文法规则文法规则文法规则语义规则语义规则语义规则语义规则numbernumber1 1numbernumber2 2digitdigit numbernumber1 1.val.val=numbernumber2 2.val*10+digit.val.val
10、*10+digit.valnumbernumber digitdigitnumber.valnumber.val=digit.valdigit.valdigitdigit 00digit.valdigit.val=0=0digitdigit 11digit.valdigit.val=1=1digitdigit 22digit.valdigit.val=2=2digitdigit 33digit.valdigit.val=3=3digitdigit 44digit.valdigit.val=4=4digitdigit 55digit.valdigit.val=5=5digitdigit 66di
11、git.valdigit.val=6=6digitdigit 77digit.valdigit.val=7=7digitdigit 88digit.valdigit.val=8=8digitdigit 99digit.valdigit.val=9=9解解解解:11/27/20225信息学院信息学院孙丽云孙丽云第第5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成grammarrulegrammarrulesemanticrulessemanticrulesexpexp1 1 expexp2 2+termexp+termexp1 1.val=exp.val=exp2 2.val+
12、term.val.val+term.valexpexp1 1 expexp2 2-termexp-termexp1 1.val=exp.val=exp2 2.val-erm.val.val-erm.valexpexptermtermexp.valexp.val=term.valterm.valtermterm1 1 termterm2 2*factor*factor termterm1 1.val=term.val=term2 2.val*.val*factor.valfactor.val termterm factorfactorterm.valterm.val=factor.valfact
13、or.val factorfactor(exp)(exp)factor.valfactor.val=exp.valexp.val factorfactor numbernumberfactor.valfactor.val=number.valnumber.val 2)2)简单的整数算术表达式文法如下,请改写成值属性文法。简单的整数算术表达式文法如下,请改写成值属性文法。简单的整数算术表达式文法如下,请改写成值属性文法。简单的整数算术表达式文法如下,请改写成值属性文法。expexpexp+term|exp-term|termexp+term|exp-term|termtermtermterm*f
14、actor|factorterm*factor|factorfactorfactor(exp)|number(exp)|number解解解解:11/27/20226信息学院信息学院孙丽云孙丽云第第5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成1.1.简单的整数算术表达式文法如下,请改写成简单的整数算术表达式文法如下,请改写成值属性文法。值属性文法。E E E+T|T E+T|T T T T*F|F T*F|FF F (E)|I(E)|I2.2.已知无符号数文法如下,请改写成值属性已知无符号数文法如下,请改写成值属性文法。文法。N NND|DND|D D D0|1|2|3|4
15、|5|6|70|1|2|3|4|5|6|7|8|9|8|9练习练习练习练习11/27/20227信息学院信息学院孙丽云孙丽云第第5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成使用属性文法来计算属性值,即把属性等式转化成计算规则使用属性文法来计算属性值,即把属性等式转化成计算规则使用属性文法来计算属性值,即把属性等式转化成计算规则使用属性文法来计算属性值,即把属性等式转化成计算规则可用依赖图(或称相关图)来决定属性值的计算顺序。可用依赖图(或称相关图)来决定属性值的计算顺序。属性的计算属性的计算属性的计算属性的计算关键:如何决定属性值的计算顺序关键:如何决定属性值的计算顺序关
16、键:如何决定属性值的计算顺序关键:如何决定属性值的计算顺序例例例例:属性等式:属性等式:属性等式:属性等式numbernumber1 1.val=number.val=number2 2.val*10+digit.val.val*10+digit.val则,文法规则则,文法规则则,文法规则则,文法规则numbernumber1 1numbernumber2 2digitdigit的依赖图:的依赖图:的依赖图:的依赖图:numbernumber2 2.valvalnumbernumber1 1.valvaldigit.valdigit.val11/27/20228信息学院信息学院孙丽云孙丽云第第
17、5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成例例例例:已知无符号数属性文法已知无符号数属性文法已知无符号数属性文法已知无符号数属性文法,请画出属性等式及请画出属性等式及请画出属性等式及请画出属性等式及345345的依赖图。的依赖图。的依赖图。的依赖图。grammarrulegrammarrulesemanticrulessemanticrulesnumbernumber1 1numbernumber2 2digitdigit numbernumber1 1.val=number.val=number2 2.val*10+digit.val*10+digit.valvaln
18、umbernumber digitdigitnumber.valnumber.val=digit.valdigit.val解解解解:(1)(1)属性等式属性等式属性等式属性等式numbernumber1 1.val=.val=numbernumber2 2.val*10+digit.val.val*10+digit.val文法规则文法规则文法规则文法规则numbernumber1 1numbernumber2 2digitdigit的依赖图:的依赖图:的依赖图:的依赖图:numbernumber2 2.valvalnumbernumber1 1.valvaldigit.valdigit.val
19、(2)(2)属性等式属性等式属性等式属性等式number.valnumber.val=digit.valdigit.val文法规则文法规则文法规则文法规则numbernumberdigitdigit的依赖图:的依赖图:的依赖图:的依赖图:numbernumber .valvaldigit.valdigit.val11/27/20229信息学院信息学院孙丽云孙丽云第第5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成所以字符串所以字符串所以字符串所以字符串345345对应的语法树对应的语法树对应的语法树对应的语法树的依赖图:的依赖图:的依赖图:的依赖图:number.valnum
20、ber.valnumber.valnumber.valdigit.valdigit.valnumber.valnumber.valdigit.valdigit.valdigit.valdigit.val依赖图以属性等式为最小结构单位。一个文法依赖图以属性等式为最小结构单位。一个文法的依赖图就是全部属性等式依赖图的总和。的依赖图就是全部属性等式依赖图的总和。11/27/202210信息学院信息学院孙丽云孙丽云第第5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成例例例例2:2:已知无符号数属性文法,请画出属性等式及已知无符号数属性文法,请画出属性等式及已知无符号数属性文法,请画出
21、属性等式及已知无符号数属性文法,请画出属性等式及floatx,yfloatx,y的依赖图。的依赖图。的依赖图。的依赖图。grammarrulegrammarrulesemanticrulessemanticrulesdecldecltypetype varvar-list-listvar-list.dtypevar-list.dtype=type.dtypetype.dtypetypetypeintinttype.dtypetype.dtype=integer=integertypetypefloatfloattype.dtypetype.dtype=real=realvar-listvar-
22、list1 1id,var-listid,var-list22id.dtypeid.dtype=var-list=var-list1 1.dtype.dtypevar-listvar-list2 2.dtype=var-list.dtype=var-list1 1.dtype.dtypevar-listvar-listididid.dtypeid.dtype=var-list.dtypevar-list.dtype解解解解:属性等式:属性等式:属性等式:属性等式id.dtypeid.dtype=var-list=var-list1 1.dtype.dtypevar-listvar-list2
23、2.dtype=var-list.dtype=var-list1 1.dtype.dtype文法规则文法规则文法规则文法规则var-listvar-list1 1id,var-listid,var-list2 2的依赖图:的依赖图:的依赖图:的依赖图:id.dtypeid.dtypevar-listvar-list1 1.dtype.dtypevar-listvar-list2 2.dtype.dtype11/27/202211信息学院信息学院孙丽云孙丽云属性等式属性等式属性等式属性等式id.dtypeid.dtype=var-list.dtypevar-list.dtype文法规则文法规则文
24、法规则文法规则var-listvar-listidid的依赖图:的依赖图:的依赖图:的依赖图:id.dtypeid.dtypevar-list.dtypevar-list.dtype属性等式属性等式属性等式属性等式var-list.dtypevar-list.dtype=type.dtypetype.dtype文法规则文法规则文法规则文法规则decldecltypetype varvar-list-list的依赖图:的依赖图:的依赖图:的依赖图:typetype.dtypedtypedecldecl var-listvar-list.dtypedtype字符串字符串字符串字符串floatx,y
25、floatx,y的依赖图:的依赖图:的依赖图:的依赖图:typetype.dtypedtypefloat float id id.dtypedtype(x)(x)decldecl var-listvar-list.dtypedtypevarvar-list-list.dtypedtypeid id.dtypedtype(y)(y),11/27/202212信息学院信息学院孙丽云孙丽云第第5章章语法制导翻译技术和中间代码生成语法制导翻译技术和中间代码生成typetype(dtypedtype=real)=real)float float idid(x)(x)(dtypedtype=real)=r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sun 编译 原理 语法 制导 翻译 技术 中间 代码 生成 19 21
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内