编译原理(骆婷)语法制导翻译技术和中间代码生成.ppt
文本预览下载声明
第五章 语法制导翻译技术和中间代码生成 LR分析制导生成逆波兰式 LR分析制导生成逆波兰式 LR分析制导生成逆波兰式 LR分析制导生成逆波兰式 LR分析制导生成逆波兰式 简单算术表达式和赋值语句到四元式的翻译 简单算术表达式和赋值语句到四元式的翻译 简单算术表达式和赋值语句到四元式的翻译 简单算术表达式和赋值语句到四元式的翻译 简单算术表达式和赋值语句到四元式的翻译 简单算术表达式和赋值语句到四元式的翻译 简单算术表达式和赋值语句到四元式的翻译 简单算术表达式和赋值语句到四元式的翻译 简单算术表达式和赋值语句到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 布尔表达式到四元式的翻译 while (AB) do if (CD) then x:=y+1 ; 的翻译过程如下: 例如语句 W (AB) do if (CD) then x:=y+1 { W.cobe=100; } 控制语句的翻译 W E(1) do if (CD) then x:=y+1 100 if AB goto — 101 goto — { E(1).tr=100=E.cobe; E(1).fa=101;} Wd if (CD) then x:=y+1 { bp(E(1).tr, next); Wd.chain=E(1).fa=101; Wd.cobe=E(1).cobe=100} 102 控制语句的翻译 100 if AB goto 102 101 goto — Wd if E(2) then x:=y+1 102 if CD goto — 103 goto — { E(2).tr=102= E(2).cobe; E(2).fa=103;} 104 100 { bp(E(2).tr, next); C.chain=E(2).fa=103;} Wd C x:=y+1 104 t=y+1 105 x=t Wd C S(1) { S(1).chain=0; } 控制语句的翻译 Wd S 106 Goto 100 107 { S.chain=merg(C.chain, S(1).chain)=103} S { bp(S.chain, Wd.cobe ); Goto Wd.cobe S.chain=Wd.chain=101;} 控制语句的翻译 106 Goto 100 107 100 if AB goto 102 101 goto — 102 if CD goto 104 103 goto 100 104 t=y+1 105 x=t while (AB) do if (CD) then x:=y+1 ; S.chain=101; 控制语句的翻译 程序设计语言中,程序中的每个名字(变量名)都必须在使用前进行说明。说明语句的功能就是告知编译程序每一个变量的类型信息。 翻译说明语句时,设计的语义动作应将变量的类型信息填入符号表中。 简单说明语句的翻译 简单说明语句文法 namelist→ namelist , id | id D→ integer namelist│real namelist 简单说明语句的翻译 文法改写: D→D(1),id│integer id │real id (1)函数FILL(id,A)的功能是把名字 id和性质A登录在符号表中。 对文法设计语义动作如下: (2)设置非终结符D的语义变量D.ATT, 记录说明语句所规定的相关名字性质 简单
显示全部