【精品】【考研计算机专业课】天津大学 编译原理讲义 表达式的翻译5.2.4-5.3(可编辑.ppt
《【精品】【考研计算机专业课】天津大学 编译原理讲义 表达式的翻译5.2.4-5.3(可编辑.ppt》由会员分享,可在线阅读,更多相关《【精品】【考研计算机专业课】天津大学 编译原理讲义 表达式的翻译5.2.4-5.3(可编辑.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【考研计算机专业课】天津大学 编译原理讲义 表达式的翻译5.2.4-5.3例例,赋值语句,赋值语句A:=-B*(C+D)可表示成四元式表可表示成四元式表:凡只需一个运算量的算符凡只需一个运算量的算符(单目单目运算符运算符),一律使用,一律使用ARG1。T1临时变量临时变量T1B(1)T2临时变量临时变量T2DC+(2)T3临时变量临时变量T3T2T1*(3)赋值运算赋值运算AT3:=(4)注解注解RESULTARG2ARG1OP序号序号运算量和运算结果运算量和运算结果有时指用户自定义的变量,有时指编译有时指用户自定义的变量,有时指编译程序引进的临时变量。程序引进的临时变量。四元式间的联系是通过
2、四元式间的联系是通过临时变量临时变量实现的,这样更改四实现的,这样更改四元式表很容易。元式表很容易。相对来说,更改三元式比较困难,因为它意味着必须相对来说,更改三元式比较困难,因为它意味着必须改变其中一系列指示器的值。改变其中一系列指示器的值。在对中间代码进行优化处理时,四元式比三元式方便。在对中间代码进行优化处理时,四元式比三元式方便。学习要点学习要点:熟悉语法制导翻译的过程。熟悉语法制导翻译的过程。掌握各种语法结构生成的中间代码。掌握各种语法结构生成的中间代码。了解语义子程序的设计。了解语义子程序的设计。5.3表达式及赋值语句的翻译表达式及赋值语句的翻译5.3.1算术表达式与赋值语句的翻译
3、算术表达式与赋值语句的翻译1.只含只含整型变量整型变量的简单赋值语句的翻译的简单赋值语句的翻译Ai:=EEE+E|E*E|-E|(E)|i上述文法的上述文法的语义动作描述语义动作描述:产生式产生式语义动作语义动作(1)Ai:=EGEN(:=,E.PLACE,ENTRY(i)(2)EE(1)+E(2)E.PLACE=NEWTEMP;GEN(+,E(1).PLACE,E(2).PLACE,E.PLACE)(3)EE(1)*E(2)E.PLACE=NEWTEMP;GEN(*,E(1).PLACE,E(2).PLACE,E.PLACE)(4)E-E(1)E.PLACE=NEWTEMP;GEN(,E(1
4、).PLACE,E.PLACE)(5)E(E(1)E.PLACE=E(1).PLACE(6)EiE.PLACE=ENTRY(i)输入输入栈栈PLACE四元式四元式A:=-B*(C+D):=-B*(C+D)i-B*(C+D)i:=A_B*(C+D)i:=-A_*(C+D)i:=-iA_B*(C+D)i:=-EA_B(,B,T1)*(C+D)i:=EA_T1(C+D)i:=E*A_T1_C+D)i:=E*(A_T1_+D)i:=E*(iA_T1_C+D)i:=E*(EA_T1_C例例,A:=-B*(C+D)的语法制导翻译过程的语法制导翻译过程i:=-i*(i+i)D)i:=E*(E+A_T1_C_
5、)i:=E*(E+iA_T1_C_D)i:=E*(E+EA_T1_C_D(+,C,D,T2)i:=E*(EA_T1_T2i:=E*(E)A_T1_T2_i:=E*EA_T1_T2(*,T1,T2,T3)i:=EA_T3(:=,T3,A)A输入输入栈栈PLACE四元式四元式最终生成最终生成:(,B,T1)(+,C,D,T2)(*,T1,T2,T3)(:=,T3,A)2.类型转换类型转换一个表达式中可能出现各种不同类型的变量和常数。一个表达式中可能出现各种不同类型的变量和常数。所以,编译程序必须做到所以,编译程序必须做到:或者拒绝接受某种混合运算,或者拒绝接受某种混合运算,或者产生有关类型转换的指
6、令。或者产生有关类型转换的指令。Ai:=EEE+E|E*E|-E|(E)|i文法中的文法中的 i既可是整型量,又可是实型量。当两个不同类型既可是整型量,又可是实型量。当两个不同类型的量进行运算时,规定首先必须把整型量转换成实型量。的量进行运算时,规定首先必须把整型量转换成实型量。(1)(1)为实现类型转换,每个非终结符的语义值必须增加为实现类型转换,每个非终结符的语义值必须增加类型信息类型信息。用用E.MODE表示,取值为表示,取值为r(实型实型)或或int(整型整型)。例,例,对于整形运算,产生式对于整形运算,产生式EE(1)opE(2),E.MODE的语义规则将定义为的语义规则将定义为:i
7、f(E(1).MODE=int)&(E(2).MODE=int)E.MODE=int;(2)(2)在四元式中增加一个整型变量转换为实型变量的四元在四元式中增加一个整型变量转换为实型变量的四元式式:(itr,A,T),同时在运算符上应指出相应的类型,同时在运算符上应指出相应的类型,这里规定用上角标表示这里规定用上角标表示(opi i,opr r)。例例,赋值语句,赋值语句:X:=Y+I*J其中其中:X,Y为实型为实型;I,J为整型为整型它产生的四元式为它产生的四元式为:(*i,I,J,T1)(itr,T1,T2)(+r,Y,T2,T3)(:=,T3,X)产生式产生式:EE(1)opE(2)的语义
8、子程序的描述是的语义子程序的描述是:if(E(1).MODE=int)&(E(2).MODE=int)GEN(opi,E(1).PLACE,E(2).PLACE,T);E.MODE=int;elseif(E(1).MODE=r)&(E(2).MODE=r)GEN(opr,E(1).PLACE,E(2).PLACE,T);E.MODE=r;T=NEWTEMP;elseif(E(1).MODE=int)/*&(E(2).MODE=r)*/U=NEWTEMP;GEN(itr,E(1).PLACE,U);GEN(opr,U,E(2).PLACE,T);E.MODE=r;else/*(E(1).MODE
9、=r)&(E(2).MODE=int)*/U=NEWTEMP;GEN(itr,E(2).PLACE,U);GEN(opr,E(1).PLACE,U,T);E.MODE=r;E.PLACE=T;输入输入栈栈PLACE四元式四元式X:=Y+I*J:=Y+I*JiY+I*Ji:=X_+I*Ji:=iX_Y+I*Ji:=EX_YI*Ji:=E+X_Y_*Ji:=E+iX_Y_I*Ji:=E+EX_Y_I例例,X:=Y+I*J的语法制导翻译过程的语法制导翻译过程i:=i+i*iJi:=E+E*X_Y_I_i:=E+E*iX_Y_I_Ji:=E+E*EX_Y_I_J(*i i,I,J,T1)i:=EX_T
10、3(:=,T3,X)i:=E+EX_Y_T1(itr,T1,T2)(+r,Y,T2,T3)输入输入 栈栈PLACE四元式四元式A5.3.2布尔表达式的翻译布尔表达式的翻译布尔表达式在程序语言中有两个基本功用布尔表达式在程序语言中有两个基本功用:一是作为控制语句一是作为控制语句(如如if或或while语句语句)的条件式;的条件式;二是作逻辑运算,获得逻辑值。二是作逻辑运算,获得逻辑值。IfX=0thenY:=3;1(00)0布尔表达式由布尔表达式由布尔算符布尔算符作用于作用于布尔变量布尔变量或或常量常量,或,或关系表关系表达式达式而形成的。而形成的。布尔算符布尔算符(按优先级按优先级)有有:(:
11、(非非),(与与),(或或)。关系符关系符rop有有:,布尔变量布尔变量:Boolean:A,B,C。布尔常量布尔常量:true,false,1,0。关系表达式是由关系符作用于算术表达式而形成,如关系表达式是由关系符作用于算术表达式而形成,如E1ropE2。布尔表达式的文法布尔表达式的文法:EEE|EE|E|(E)|i|iropi计算布尔表达式的值计算布尔表达式的值:1.直接计算直接计算按算术表达式的计算方式根据布尔运算符的优先级和结按算术表达式的计算方式根据布尔运算符的优先级和结合关系计算布尔表达式。合关系计算布尔表达式。例例,令令true=1,false=0,计算布尔表达式,计算布尔表达式
12、:1(00)000)0=1(10)01(10)0=100100=1010=1 12.采用某种优化措施来计算采用某种优化措施来计算计算计算AB,只要计算出,只要计算出A=1,则不必再算,则不必再算B,可知结果为,可知结果为1;计算计算AB,只要计算出,只要计算出A=0,则不必再算,则不必再算B,可知结果为,可知结果为0;用条件句来解释布尔计算用条件句来解释布尔计算:AB解释为解释为ifAthentrueelseBAB解释为解释为ifAthenBelsefalseA解释为解释为 ifAthenfalseelsetrue针对两种算法有两种不同的翻译方法。针对两种算法有两种不同的翻译方法。优化优化计算
13、条件语句的翻译计算条件语句的翻译:条件语句条件语句ifEthenS1elseS2中的布尔式中的布尔式E,它的作,它的作用在于控制对用在于控制对 S1和和S2的选择。的选择。E的代码的代码S1的代码的代码S2的代码的代码真真假假为了表述真、假出口,引入三种形式的四元式为了表述真、假出口,引入三种形式的四元式:(1)(jnz,A1,p)若若A1为为真真,则转向第,则转向第p个四元式。个四元式。(2)(j,A1,A2,p)若若A1A2为为真真,则转向第则转向第p个四元式。个四元式。(3)(j,p)无条件转向第无条件转向第p个四元式。个四元式。例例,将,将ifABDthenS1elseS2翻译成四元式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 考研计算机专业课 【精品】【考研计算机专业课】天津大学 编译原理讲义 表达式的翻译5.2.4-5.3可编辑 考研 计算机 专业课 天津大学 编译 原理 讲义 表达式 翻译 5.2 5.3 编辑
链接地址:https://www.taowenge.com/p-86274395.html
限制150内