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