第11讲西北农林科技大学本科教程主讲教师:赵建邦第四章语义分析和中间代码生成4
1语义分析概述4
2属性文法4
3几种常见的中间语言4
4表达式及赋值语句的翻译4
5控制语句的翻译4
6数组元素的翻译4
7过程或函数调用语句的翻译4
8说明语句的翻译4
9递归下降语法制导翻译方法简介第四章《语义分析和中间代码生成》4
5控制语句的翻译条件语句if条件循环语句while多分支控制语句case(自学)转移语句goto重点掌握通过代码结构图翻译if、while语句(重点)本讲目标4
5控制语句的翻译4
5程序流程控制的三种基本结构顺序结构:一般用复合语句实现;选择结构:if-elseif-else,switch-case;循环结构:for,while,do-while4
5控制语句的翻译图4-11if(E)S的代码结构图4-10条件语句if(E)S1;elseS2的代码结构4
5控制语句的翻译为了在扫描条件语句过程中不失时机地处理和回填有关信息,可将G[S]改写为如下的G'[S]:G'[S]:(1)S→CS(1)(2)C→if(E)(3)S→TPS(2)(4)TP→CS(1);else4
5控制语句的翻译(1)无论是哪种if语句,首先用产生式(2)C→if(E)进行归约,这时E的真出口即为S(1)的第一个四元式;E的假出口地址则作为待填信息放在C的语义变量C
chain中等待回填;所以:4
5控制语句的翻译C→if(E){Backpatch(E
tc,nxq);C
chain=E
fc;}(1)S→CS(1)(2)C→if(E)扫描到“)”,立即回填E的真出口C
chain中只保存E的待填假出口if(E)S(1)elseS(2)TF(2)不含else时,用(1)S→CS(1)进行规约,E的假出口是S(1)的出口,将C