编译原理语义控制语句的翻译精选文档.ppt
《编译原理语义控制语句的翻译精选文档.ppt》由会员分享,可在线阅读,更多相关《编译原理语义控制语句的翻译精选文档.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理语义控制语编译原理语义控制语句的翻译句的翻译本讲稿第一页,共二十七页第四章第四章 语义分析和中间代码生成语义分析和中间代码生成l4.1 4.1 语义分析概述语义分析概述l4.2 4.2 属性文法属性文法l4.3 4.3 几种常见的中间语言几种常见的中间语言l4.4 4.4 表达式及赋值语句的翻译表达式及赋值语句的翻译l4.5 4.5 控制语句的翻译控制语句的翻译l4.6 4.6 数组元素的翻译数组元素的翻译l4.7 4.7 过程或函数调用语句的翻译过程或函数调用语句的翻译l4.8 4.8 说明语句的翻译说明语句的翻译l4.9 4.9 递归下降语法制导翻译方法简介递归下降语法制导翻译方法
2、简介本讲稿第二页,共二十七页u第四章第四章语义分析和中间代码生成语义分析和中间代码生成4.5 4.5 控制语句的翻译控制语句的翻译条件语句条件语句ifif条件循环语句条件循环语句whilewhile多分支控制语句多分支控制语句case(case(自学自学)转移语句转移语句gotogotou重点掌握重点掌握通过代码结构图翻译通过代码结构图翻译ifif、whilewhile语句语句(重点重点)本讲目标本讲目标 本讲稿第三页,共二十七页4.5 4.5 控制语句的翻译控制语句的翻译u4.5 程序流程控制的三种基本结构程序流程控制的三种基本结构顺序结构:一般用复合语句实现;顺序结构:一般用复合语句实现;
3、选择结构:选择结构:if-else if-else,switch-case;if-else if-else,switch-case;循环结构:循环结构:forfor,while,do-whilewhile,do-while本讲稿第四页,共二十七页4.5 4.5 控制语句的翻译控制语句的翻译图图4-11 if(E)S的代码结构的代码结构图图4-10 条件语句条件语句if(E)S1;else S2的代码的代码结构结构本讲稿第五页,共二十七页4.5 4.5 控制语句的翻译控制语句的翻译本讲稿第六页,共二十七页l为了在扫描条件语句过程中不失时机地处理和回填有关信息,可将为了在扫描条件语句过程中不失时机
4、地处理和回填有关信息,可将GS改改写为如下的写为如下的GS:GS:(1)SCS(1)(2)Cif(E)(3)STPS(2)(4)TPCS(1);else4.5 4.5 控制语句的翻译控制语句的翻译本讲稿第七页,共二十七页(1)无论是哪种无论是哪种if语句,首先用产生式语句,首先用产生式(2)Cif(E)进行归约,这时进行归约,这时E的真出的真出口即为口即为S(1)的第一个四元式;的第一个四元式;E的假出口地址则作为待填信息放在的假出口地址则作为待填信息放在C的语的语义变量义变量C.chain中等待回填;中等待回填;所以:所以:4.5 4.5 控制语句的翻译控制语句的翻译 Cif(E)Backp
5、atch(E.tc,nxq);C.chain=E.fc;(1)SCS(1)(2)Cif(E)扫描到扫描到“)”,立即回填,立即回填E的真出口的真出口C.chain中只保存中只保存E的待填假出口的待填假出口if(E)S(1)else S(2)TF本讲稿第八页,共二十七页(2)不含不含else时,用时,用(1)SCS(1)进行规约,进行规约,E的假出口是的假出口是S(1)的出口,将的出口,将C.chain和和S(1).chain一起作为一起作为S的待填信息链用函数的待填信息链用函数merge链在一起保留链在一起保留在在S的语义值的语义值S.chain中:中:4.5 4.5 控制语句的翻译控制语句的
6、翻译 (1)SCS(1)(2)Cif(E)SCS(1)S.chain=merge(C.chain,S(1).chain)if(E)S(1)TFC S(1)S(1).chain=104C.chain=101S.chain=104规约后:S(1).chainC.chain本讲稿第九页,共二十七页(3)用产生式用产生式(2)Cif(E)进行归约之后,如果:条件语句后有进行归约之后,如果:条件语句后有else,用用(4)继续规约。继续规约。4.5 4.5 控制语句的翻译控制语句的翻译(2)Cif(E)(3)STPS(2)(4)TPCS(1);elseTP CS(1);else q=nxq;emit(j
7、,_,_,0);Backpatch(C.chain,nxq);TP.chain=merge(S(1).chain,q);注意注意1:只要遇到有:只要遇到有else的规约,必须先产生一条无条件转移。的规约,必须先产生一条无条件转移。if(E)S(1);else S(2)C S(1);else S(2)TP S(2)2:S(2)就是就是C.chain3:q就是就是S(1).chainif(E)S(1);else S(2)TFq:(j,_,_,0)nxq:本讲稿第十页,共二十七页(4)最后用产生式最后用产生式(3)STPS(2)进行归约,进行归约,S(2)语句序列处理完后继续翻语句序列处理完后继续翻
8、译译if语句之后的后继语句。后继语句的四元式地址与语句之后的后继语句。后继语句的四元式地址与S(2)语句序列的出语句序列的出口一致,故将口一致,故将TP.chain与与S(2).chain链接后挂入链头为链接后挂入链头为S.chain的链中,的链中,即:即:4.5 4.5 控制语句的翻译控制语句的翻译(2)Cif(E)(3)STPS(2)(4)TPCS(1);elseSTPS(2)S.chain=merge(TP.chain,S(2).chain);本讲稿第十一页,共二十七页课堂练习:将下列语句翻译成四元式课堂练习:将下列语句翻译成四元式(重点)(重点)4.5 4.5 控制语句的翻译控制语句的
9、翻译(课本(课本P120 例例4.5)if(xy)if(a b)m=m+1;else m=m-1;else x=y;解答解答:解题技巧:不需要根据语义子程序,只需要画出:解题技巧:不需要根据语义子程序,只需要画出 代码结构图代码结构图,根据转换关系来翻译四元式:,根据转换关系来翻译四元式:if(xy)if(a b)m=m+1;else m=m-1;else x=y;一个布尔分量对应一个布尔分量对应 个四元式;个四元式;else对应对应 个无条件跳转四元式;个无条件跳转四元式;注意真假出口的预留与回填。注意真假出口的预留与回填。21TFTFTF本讲稿第十二页,共二十七页4.5 4.5 控制语句的
10、翻译控制语句的翻译u4.5.2 条件循环语句条件循环语句while的翻译的翻译1.1.循环语句的代码结构图:循环语句的代码结构图:while(E)S(1)图图4-12 4-12 条件循环语句条件循环语句whilewhile的代码结构的代码结构1:E的真出口是的真出口是S(1)2:E的假出口是循环体外的假出口是循环体外3:S(1)的后面无条件转的后面无条件转移,重新判断移,重新判断E本讲稿第十三页,共二十七页4.5 4.5 控制语句的翻译控制语句的翻译2.2.翻译思想:翻译思想:S while(E)S(1)(1)(1)翻译翻译E代码段,并留两个待填的代码段,并留两个待填的E.tc和和E.fc;(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 语义 控制 语句 翻译 精选 文档
限制150内