语法制导翻译精.ppt
《语法制导翻译精.ppt》由会员分享,可在线阅读,更多相关《语法制导翻译精.ppt(108页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、语法制导翻译第1页,本讲稿共108页编译中的语义处理是指两个功能:编译中的语义处理是指两个功能:一、审查每个语法结构的静态语义,即验证语法结一、审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义。构合法的程序是否真正有意义。二、如果静态语义正确,语义处理则要执行真正的二、如果静态语义正确,语义处理则要执行真正的翻译,即,要么生成程序的一种中间表示形式(中间代翻译,即,要么生成程序的一种中间表示形式(中间代码),要么生成实际的目标代码。码),要么生成实际的目标代码。第2页,本讲稿共108页教学内容教学内容n属性文法与属性翻译文法属性文法与属性翻译文法n语法制导翻译概论语法制导翻译
2、概论n常见中间语言概述常见中间语言概述n简单算术表达式和赋值语句的翻译简单算术表达式和赋值语句的翻译n布尔表达式的翻译布尔表达式的翻译n程序流程控制语句的翻译程序流程控制语句的翻译n含数组元素及其在赋值语句中的翻译含数组元素及其在赋值语句中的翻译第3页,本讲稿共108页5.1 5.1 属性文法与属性翻译文法属性文法与属性翻译文法第4页,本讲稿共108页一个属性文法包含一个上下文无关文法和一系一个属性文法包含一个上下文无关文法和一系列语义规则,这些语义规则附在文法的每个产生式列语义规则,这些语义规则附在文法的每个产生式上,在语法分析过程中,完成附加在所使用的产生上,在语法分析过程中,完成附加在所
3、使用的产生式上的语义规则描述的动作,从而实现语义处理。式上的语义规则描述的动作,从而实现语义处理。属性文法属性文法第5页,本讲稿共108页属性,常用以描述事物或人的特征、性质、品质属性,常用以描述事物或人的特征、性质、品质等等。比如,谈到一个物体,可以用等等。比如,谈到一个物体,可以用“颜色颜色”描述它,描述它,谈起某人,可以使用谈起某人,可以使用“有幽默感有幽默感”来形容他。对编译来形容他。对编译程序使用的语法树的结点,可以用程序使用的语法树的结点,可以用“类型类型”、“值值”或或“存储位置存储位置”来描述它。来描述它。第6页,本讲稿共108页G G:是一个上下文无关文法。:是一个上下文无关
4、文法。V V:有穷的属性集:有穷的属性集,每个属性与文法的一个终结符或非每个属性与文法的一个终结符或非终结符相连。终结符相连。F F:关于属性的属性断言或谓词集。每个断言与一个产:关于属性的属性断言或谓词集。每个断言与一个产生式相联生式相联.而此断言只引用该产生式左端或右端的终结符或非终而此断言只引用该产生式左端或右端的终结符或非终结符相联的属性。结符相联的属性。属性文法是一个三元组:属性文法是一个三元组:A=A=(G G,V V,F F),其中),其中第7页,本讲稿共108页如,有文法如,有文法G G为:为:ETET1 1+T+T2 2|T|T1 1orTorT2 2Tnum|true|fa
5、lseTnum|true|false因为因为T T在同一个产生式里出现了两次,使用上角在同一个产生式里出现了两次,使用上角标将它们区分开。标将它们区分开。第8页,本讲稿共108页属性文法记号中常使用属性文法记号中常使用N.tN.t的的 形式表示与非终结符形式表示与非终结符N N相相联的属性联的属性t t。比如可把完成对上面表达式的类型检查的属。比如可把完成对上面表达式的类型检查的属性文法写成形式:性文法写成形式:第9页,本讲稿共108页类型检查的属性文法类型检查的属性文法ETET1 1+T+T2 2T T1 1.t=int AND T.t=int AND T2 2.t=int.t=int ET
6、ET1 1orTorT2 2T T1 1.t=bool AND T.t=bool AND T2 2.t=bool.t=bool TfalseTfalseT.tT.t:=bool=boolTnumTnumT.tT.t:=int=int TtrueTtrueT.tT.t:=bool=bool与每个非终结符与每个非终结符T T相联的有属性相联的有属性t t,t t要么是要么是intint,要么是,要么是boolbool。与非终结符。与非终结符E E的产生式相联的断言指的产生式相联的断言指明:两个明:两个T T的属性必须相同。的属性必须相同。第10页,本讲稿共108页1)EE1+E2E.val:=E1
7、.val+E2.val可以用如下的方式定义可以用如下的方式定义E E的的“值值”的语义:的语义:2)E1 E.val:=13)E0E.val:=0 第11页,本讲稿共108页属性分成两类:继承属性和综合属性,我们不对属性文属性分成两类:继承属性和综合属性,我们不对属性文法进行理论上的研究而仅仅将它做为工具描述语义分析。法进行理论上的研究而仅仅将它做为工具描述语义分析。在编译的许多实际应用中,属性和断言以多种形式出现,在编译的许多实际应用中,属性和断言以多种形式出现,也就是说,与每个文法符号相联的可以是各种属性、断也就是说,与每个文法符号相联的可以是各种属性、断言、以及语义规则,或者某种程序设计
8、语言的程序段等言、以及语义规则,或者某种程序设计语言的程序段等等。等。第12页,本讲稿共108页产生式语义规则产生式语义规则(0 0)LELE printprint(E.valE.val)(1 1)EEEE1 1+T+TE.val:=EE.val:=E1 1.val+T.val.val+T.val(2 2)ETET E.val:=T.valE.val:=T.val(3 3)TTTT1 1*F*FT.val:=TT.val:=T1 1.valF.val.valF.val(4 4)TFTF T.val:=F.valT.val:=F.val(5 5)FF(E E)F.val:=E.valF.val:
9、=E.val(6 6)FdigitFdigit F.val:=digit.lexvalF.val:=digit.lexval简单算术表达式求值的语义描述简单算术表达式求值的语义描述第13页,本讲稿共108页在该描述中,每个非终结符都有一个属性:一个在该描述中,每个非终结符都有一个属性:一个整数值的称作整数值的称作valval的属性。的属性。按照语义规则对每个产按照语义规则对每个产生式来说,生式来说,它的左部它的左部E E,T T,F F的属性值的计算来自的属性值的计算来自它右部的非终结符,这种属性称作综合属性。单词它右部的非终结符,这种属性称作综合属性。单词digitdigit仅有综合属性,仅
10、有综合属性,它的值是由词法分析程序提它的值是由词法分析程序提供的。和产生式供的。和产生式LELE相联的语义规则是一个过程,相联的语义规则是一个过程,打印由打印由E E产生的表达式的值。产生的表达式的值。我们可以理解为我们可以理解为L L的属的属性是空的或是虚的。性是空的或是虚的。第14页,本讲稿共108页5.2 5.2 语法制导翻译的概述语法制导翻译的概述基本思想:基本思想:在在语语法法分分析析过过程程中中,随随着着分分析析的的步步步步进进展展,每每当当使使用用一一条条产产生生式式进进行行推推导导(对对于于自自上上而而下下分分析析)或或归归约约(对对于于自自下下而而上上分分析析),就就执执行行
11、该该产产生生式式所所对对应应的的语语义义动动作作,完完成成相相应应的的翻翻译译工工作作。语语法法制制导导翻翻译译就就是是把把语语言言的的一一些些属属性性附附加加到到代代表表语语言言结结构构的的文文法法符符号号上上,这这些些属属性性值值是是由由附附加加到到文文法法产产生生式式的的“语语义义规规则则”中中计计算算的的,也也就就是是为为每每个个产产生生式式配配备备翻翻译译子子程程序序,即即语语义义子子程程序序。语语法法制制导导翻翻译译法法不不论论对对自上而下分析或自下而上分析都适用。自上而下分析或自下而上分析都适用。第15页,本讲稿共108页v翻译的任务:语法结构的静态翻译的任务:语法结构的静态语义
12、分析和正确性语义分析和正确性检查,若正确,则翻译成中间代码或目标代码。检查,若正确,则翻译成中间代码或目标代码。v使用的方法使用的方法:称作语法制导翻译。称作语法制导翻译。v基本思想(简言之)基本思想(简言之):根据翻译的需要设置文法根据翻译的需要设置文法符号的符号的属性属性(这些属性代表与文法符号相关的信息这些属性代表与文法符号相关的信息这些属性代表与文法符号相关的信息这些属性代表与文法符号相关的信息),以描述语法结构的语义。,以描述语法结构的语义。第16页,本讲稿共108页n属性一般分为两类:综合属性和继承属性。属性一般分为两类:综合属性和继承属性。简简单的说,综合属性用于单的说,综合属性
13、用于“自下而上自下而上”传递信息,而传递信息,而继承属性用于继承属性用于“自上而下自上而下”传递信息。传递信息。n属性加工的过程即是语义处理的过程,对于文法的属性加工的过程即是语义处理的过程,对于文法的每一个产生式都配备了一组属性的计算规则,则称每一个产生式都配备了一组属性的计算规则,则称为语义规则。为语义规则。第17页,本讲稿共108页一个属性文法它包含一个一个属性文法它包含一个上下文无关文法和一系列语义上下文无关文法和一系列语义规则,这些语法规则附在文法的每个产生式上。规则,这些语法规则附在文法的每个产生式上。在一个在一个语法制导定义语法制导定义中,中,A A P P都有与之相关联的都有与
14、之相关联的一套语义规则,规则形式为一套语义规则,规则形式为 b b b b:=f=f=f=f(c c1 1 1 1,c c2 2 2 2,c ck k k k),f f是一个函数,而且是一个函数,而且 1 1b b是是A A A A的一个的一个综合属性综合属性并且并且c c1 1,c c2 2,c ck k是是 中中的的符号的属性,或者符号的属性,或者 2 2b b是是 中的中的符号的一个符号的一个继承属性继承属性继承属性继承属性并且并且c c1 1,c c2 2,c ck k是是A A A A或或 中的中的任何文法符号的属性。任何文法符号的属性。在两种情况下,都说在两种情况下,都说 属性属性
15、b b依赖于属性依赖于属性c c1 1,c c2 2,c ck k。语法制导定义的形式语法制导定义的形式第18页,本讲稿共108页 一般来讲,对出现在产生式右边的继承属性和出现在产生式左一般来讲,对出现在产生式右边的继承属性和出现在产生式左一般来讲,对出现在产生式右边的继承属性和出现在产生式左一般来讲,对出现在产生式右边的继承属性和出现在产生式左边的综合属性都必须提供一个计算规则,属性计算规则中只能使边的综合属性都必须提供一个计算规则,属性计算规则中只能使边的综合属性都必须提供一个计算规则,属性计算规则中只能使边的综合属性都必须提供一个计算规则,属性计算规则中只能使用相应产生式的文法符号的属性
16、,这有利于产生式范围内用相应产生式的文法符号的属性,这有利于产生式范围内用相应产生式的文法符号的属性,这有利于产生式范围内用相应产生式的文法符号的属性,这有利于产生式范围内“封装封装封装封装”属性的依赖性。然而,出现在产生式左边的继承属性和出现在属性的依赖性。然而,出现在产生式左边的继承属性和出现在属性的依赖性。然而,出现在产生式左边的继承属性和出现在属性的依赖性。然而,出现在产生式左边的继承属性和出现在产生式右边的综合属性不由所给的产生式的属性计算规则进行计产生式右边的综合属性不由所给的产生式的属性计算规则进行计产生式右边的综合属性不由所给的产生式的属性计算规则进行计产生式右边的综合属性不由
17、所给的产生式的属性计算规则进行计算,它们由其它产生式的属性规则计算算,它们由其它产生式的属性规则计算算,它们由其它产生式的属性规则计算算,它们由其它产生式的属性规则计算,由属性计算器的参数提由属性计算器的参数提供。供。特例:开始符号没有继承属性,在开始时要确定;终结符则特例:开始符号没有继承属性,在开始时要确定;终结符则特例:开始符号没有继承属性,在开始时要确定;终结符则特例:开始符号没有继承属性,在开始时要确定;终结符则只能有综合属性,而不能有继承属性。非终结符既可有综合只能有综合属性,而不能有继承属性。非终结符既可有综合只能有综合属性,而不能有继承属性。非终结符既可有综合只能有综合属性,而
18、不能有继承属性。非终结符既可有综合属性也可有继承属性属性也可有继承属性属性也可有继承属性属性也可有继承属性第19页,本讲稿共108页语义规则所描述的工作可以包括属性计算、静态语义检查、符号语义规则所描述的工作可以包括属性计算、静态语义检查、符号语义规则所描述的工作可以包括属性计算、静态语义检查、符号语义规则所描述的工作可以包括属性计算、静态语义检查、符号表操作、代码生成等。语义规则可能产生副作用(如产生代码)表操作、代码生成等。语义规则可能产生副作用(如产生代码)表操作、代码生成等。语义规则可能产生副作用(如产生代码)表操作、代码生成等。语义规则可能产生副作用(如产生代码),也可能不是变元的严
19、格函数(如某个规则给出可用的下一个数,也可能不是变元的严格函数(如某个规则给出可用的下一个数,也可能不是变元的严格函数(如某个规则给出可用的下一个数,也可能不是变元的严格函数(如某个规则给出可用的下一个数据单元的地址)。这样的语义规则通常写成过程调用,或过程段。据单元的地址)。这样的语义规则通常写成过程调用,或过程段。据单元的地址)。这样的语义规则通常写成过程调用,或过程段。据单元的地址)。这样的语义规则通常写成过程调用,或过程段。综合属性:综合属性:在语法树中,一个结点的综合属性的值由其子结点的在语法树中,一个结点的综合属性的值由其子结点的属性值确定。因此,通常使用自底向上的方法在每一个结属
20、性值确定。因此,通常使用自底向上的方法在每一个结点处使用语义规则计算综合属性的值。仅仅使用综合属性点处使用语义规则计算综合属性的值。仅仅使用综合属性的属性文法称的属性文法称SS属性文法。属性文法。属性文法。属性文法。继承属性:继承属性:在语法树中,一个结点的继承属性由此结点的父结点和在语法树中,一个结点的继承属性由此结点的父结点和在语法树中,一个结点的继承属性由此结点的父结点和在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定。用继承属性来表示程序语言或兄弟结点的某些属性确定。用继承属性来表示程序语言结构中的上下文依赖关系很方便。结构中的上下文依赖关系很方便。第20页,
21、本讲稿共108页例例6.1 台式计算器程序的语法制导定义(表台式计算器程序的语法制导定义(表6.1)产生式产生式 语义规则语义规则SSE print(EE print(E val)val)E E1+T E+T E val:=Eval:=E1 val+T val+T val valE T E val:=T valT T T T1 1*F T*F T val:=Tval:=T1 1 val*F val*F val valT T F T F T val:=F val:=F val valF F(E)F(E)F val:=Eval:=E val valF F digit F digit F val:=
22、digitval:=digit lexvallexval 每个文法符号和一个属性值每个文法符号和一个属性值val val 联系,属性值的设置和联系,属性值的设置和联系,属性值的设置和联系,属性值的设置和语法结构的语义以及翻译程序的需要有关。语法结构的语义以及翻译程序的需要有关。语法结构的语义以及翻译程序的需要有关。语法结构的语义以及翻译程序的需要有关。例如:把左例如:把左例如:把左例如:把左例中的类型例中的类型例中的类型例中的类型扩充到扩充到扩充到扩充到 intint和和和和realreal。第21页,本讲稿共108页 综合属性综合属性 S-S-属性定义属性定义 唯独唯独只只使用综合属性的语法
23、制导定义。使用综合属性的语法制导定义。结点属性值的计算正好和自底向上分析建立分结点属性值的计算正好和自底向上分析建立分析树结点同步进行。析树结点同步进行。例例 6.2 输入:输入:3*5+4n 第22页,本讲稿共108页digitlexval:=3Fval:=3Tval:=3digitlexval:=5Fval:=5Tval:=15*Eval:=15+digitlexval:=4Fval:=4Tval:=4Eval:=19例例6.26.2输入输入3*5+4n3*5+4nL LEn En E E E E1 1+T E+T E T TT T T T1 1*F T*F T F F F F(E)F(E
24、)F digitdigit第23页,本讲稿共108页 综合属性值的计算方法综合属性值的计算方法 对于对于s-s-属性定义通常使用自底向上的分析方法属性定义通常使用自底向上的分析方法在在建立建立每一个每一个结点处结点处综合综合属性值属性值使用使用语义规则语义规则来计算来计算即:即:哪个产生式进行归约哪个产生式进行归约后,就执行那个产后,就执行那个产生式的生式的s-属性定义计算属性的值,属性定义计算属性的值,从从叶结点到根结点叶结点到根结点进行计算进行计算。第24页,本讲稿共108页继承属性继承属性继承属性值是由此结点的父结点和或兄弟结点的某些属性值来继承属性值是由此结点的父结点和或兄弟结点的某些
25、属性值来继承属性值是由此结点的父结点和或兄弟结点的某些属性值来继承属性值是由此结点的父结点和或兄弟结点的某些属性值来决定的。决定的。决定的。决定的。例例 描述说明语句中各种变量的类型信息的语义规则。描述说明语句中各种变量的类型信息的语义规则。文法定义了一种说明语句,该说明语句的形式由关键字文法定义了一种说明语句,该说明语句的形式由关键字int或或real开头,后跟一个标识符表,每个标识符间有逗号隔开。非终结符号开头,后跟一个标识符表,每个标识符间有逗号隔开。非终结符号T有一个综合属性有一个综合属性type,它的值由关键字,它的值由关键字int或或real决定。与产生式决定。与产生式D-TL相联
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语法 制导 翻译
限制150内