欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    编译原理语义控制语句的翻译优秀PPT.ppt

    • 资源ID:74481709       资源大小:3.77MB        全文页数:27页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    编译原理语义控制语句的翻译优秀PPT.ppt

    编译原理语义控制语编译原理语义控制语句的翻译句的翻译现在学习的是第1页,共27页第四章第四章 语义分析和中间代码生成语义分析和中间代码生成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页,共27页u第四章第四章语义分析和中间代码生成语义分析和中间代码生成4.5 4.5 控制语句的翻译控制语句的翻译条件语句条件语句ifif条件循环语句条件循环语句whilewhile多分支控制语句多分支控制语句case(case(自学自学)转移语句转移语句gotogotou重点掌握重点掌握通过代码结构图翻译通过代码结构图翻译ifif、whilewhile语句语句(重点重点)本讲目标本讲目标 现在学习的是第3页,共27页4.5 4.5 控制语句的翻译控制语句的翻译u4.5 程序流程控制的三种基本结构程序流程控制的三种基本结构顺序结构:一般用复合语句实现;顺序结构:一般用复合语句实现;选择结构:选择结构:if-else if-else,switch-case;if-else if-else,switch-case;循环结构:循环结构:forfor,while,do-whilewhile,do-while现在学习的是第4页,共27页4.5 4.5 控制语句的翻译控制语句的翻译图图4-11 if(E)S的代码结构的代码结构图图4-10 条件语句条件语句if(E)S1;else S2的代码的代码结构结构现在学习的是第5页,共27页4.5 4.5 控制语句的翻译控制语句的翻译现在学习的是第6页,共27页l为了在扫描条件语句过程中不失时机地处理和回填有关信息,可为了在扫描条件语句过程中不失时机地处理和回填有关信息,可将将GS改写为如下的改写为如下的GS:GS:(1)SCS(1)(2)Cif(E)(3)STPS(2)(4)TPCS(1);else4.5 4.5 控制语句的翻译控制语句的翻译现在学习的是第7页,共27页(1)无论是哪种无论是哪种if语句,首先用产生式语句,首先用产生式(2)Cif(E)进行归约,这时进行归约,这时E的真出口即为的真出口即为S(1)的第一个四元式;的第一个四元式;E的假出口地址则作为待填信息的假出口地址则作为待填信息放在放在C的语义变量的语义变量C.chain中等待回填;中等待回填;所以:所以:4.5 4.5 控制语句的翻译控制语句的翻译 Cif(E)Backpatch(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现在学习的是第8页,共27页(2)不含不含else时,用时,用(1)SCS(1)进行规约,进行规约,E的假出口是的假出口是S(1)的出口,的出口,将将C.chain和和S(1).chain一起作为一起作为S的待填信息链用函数的待填信息链用函数merge链在一起链在一起保留在保留在S的语义值的语义值S.chain中:中:4.5 4.5 控制语句的翻译控制语句的翻译 (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现在学习的是第9页,共27页(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,_,_,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:现在学习的是第10页,共27页(4)最后用产生式最后用产生式(3)STPS(2)进行归约,进行归约,S(2)语句序列处理完后继续翻语句序列处理完后继续翻译译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);现在学习的是第11页,共27页课堂练习:将下列语句翻译成四元式课堂练习:将下列语句翻译成四元式(重点)(重点)4.5 4.5 控制语句的翻译控制语句的翻译(课本(课本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现在学习的是第12页,共27页4.5 4.5 控制语句的翻译控制语句的翻译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现在学习的是第13页,共27页4.5 4.5 控制语句的翻译控制语句的翻译2.2.翻译思想:翻译思想:S while(E)S(1)(1)(1)翻译翻译E代码段,并留两个待填的代码段,并留两个待填的E.tc和和E.fc;(2)扫描过扫描过“)”之后,就可回填之后,就可回填E.tc;(3)翻译翻译S(1),然后无条件转移到,然后无条件转移到E的第一条四元式;的第一条四元式;因此:因此:1.为了保证为了保证(3)的无条件转移,必须保存的无条件转移,必须保存E的第一条四元式序号;的第一条四元式序号;2.E为假时,需要回填,需要用为假时,需要回填,需要用S.chain保存保存E.fc;现在学习的是第14页,共27页4.5 4.5 控制语句的翻译控制语句的翻译3.给出易于及时处理和回填的条件循环语句给出易于及时处理和回填的条件循环语句while的文法的文法GS如下:如下:GS:(1)SWdS(1)(2)WdW(E)(3)Wwhile语义子程序语义子程序 例:例:while(ab)S(1)(1)使用使用(3)Wwhile进行规约。保存条件的开始位置,也就是无条进行规约。保存条件的开始位置,也就是无条件语句转移的位置。件语句转移的位置。Wwhile W.quad=nxq;现在学习的是第15页,共27页4.5 4.5 控制语句的翻译控制语句的翻译例:例:while(ab)S(1)(2)使用使用(2)WdW(E)进行规约。进行规约。由于由于E的真出口已经确定为的真出口已经确定为nxq,回填,回填E.tc;E.fc无法确定,无法确定,Wd.chain用于保存待填信息,以备回填;用于保存待填信息,以备回填;的首入口的首入口(W.quad)用用Wd.quad保存,以备强制转移。保存,以备强制转移。WdW(E)Backpatch(E.tc,nxq);Wd.chain=E.fc;Wd.quad=W.quad;现在学习的是第16页,共27页4.5 4.5 控制语句的翻译控制语句的翻译例:例:while(ab)S(1)(3)使用使用(1)SWdS(1)进行规约。进行规约。如果如果S(1)也是也是if-else语句,语句,S(1).chain表示表示S(1)后续的四元式序列,但不后续的四元式序列,但不是是while循环体外的四元式。这时的跳转一定是再回到循环体外的四元式。这时的跳转一定是再回到E条件,因此需条件,因此需要回填要回填S(1).chain对应的四元式串;对应的四元式串;产生无条件跳转四元式,回到产生无条件跳转四元式,回到E条件,进行循环;条件,进行循环;整个整个while语句的出口,是语句的出口,是Wd 的出口,也就是的出口,也就是E.fc。SWd S(1)Backpatch(S(1).chain,Wd.quad);emit(j,_,_,Wd.quad);S.chain=Wd.chain;现在学习的是第17页,共27页课堂练习:将下列语句翻译成四元式课堂练习:将下列语句翻译成四元式(重点)(重点)4.5 4.5 控制语句的翻译控制语句的翻译(课本(课本P121 例例4.6)while(AB)if(CD)X=Y+Z;解答解答:只需要画出:只需要画出代码结构图代码结构图,根据转换关系来翻译四元式:,根据转换关系来翻译四元式:一个布尔分量对应一个布尔分量对应 个四元式;个四元式;else对应对应 个无条件跳转四元式;个无条件跳转四元式;while的循环体的循环体S最后必须有最后必须有 个强制跳转四元式。个强制跳转四元式。211 while(AB)if(CD)X=Y+Z;jump q:while后面的语句后面的语句TTFF现在学习的是第18页,共27页课堂练习:将下列语句翻译成四元式课堂练习:将下列语句翻译成四元式(重点)(重点)4.5 4.5 控制语句的翻译控制语句的翻译(课本(课本P121 例例4.7)if (a b)while(xn)x=x+y;/(+,x,y,x)TTTTjumpFFFFqTF现在学习的是第19页,共27页4.5 4.5 控制语句的翻译控制语句的翻译u4.5.4 多分支控制语句多分支控制语句case的翻译的翻译(自学自学)u4.5.5 语句标号和转移语句的翻译语句标号和转移语句的翻译程序语言中直接改变控制流程的语句是程序语言中直接改变控制流程的语句是goto Lgoto L语句,其中语句,其中L L是源是源程序中的语句标号程序中的语句标号。标号。标号L L在源程序中可以以两种方式出现在源程序中可以以两种方式出现(1)定义性出现定义性出现。定义性出现的语句形式为。定义性出现的语句形式为L:S此时,带标号的语句此时,带标号的语句S所生成的第一个四元式地址即为标号所生成的第一个四元式地址即为标号L的值。的值。(2)引用性出现引用性出现。引用性出现的语句形式为。引用性出现的语句形式为 goto L它引用它引用L的值作为四元式的值作为四元式(j,_,_,L)中转向的目标地址。中转向的目标地址。现在学习的是第20页,共27页4.5 4.5 控制语句的翻译控制语句的翻译翻译翻译goto L 语句需要查询符号表,根据语句需要查询符号表,根据L是否已经定值,将该语句的使是否已经定值,将该语句的使用分为以下几种情况:用分为以下几种情况:1.先定义,后使用:先定义,后使用:(1)形式:形式:L:S GOTO L (2)文法:文法:S goto L(使用标号使用标号)Label i:(定义标号定义标号)现在学习的是第21页,共27页4.5 4.5 控制语句的翻译控制语句的翻译 (3)(3)翻译过程:遇到标号语句时,先将标号规约为翻译过程:遇到标号语句时,先将标号规约为Lable,Lable,再将再将L L填入填入符号表中:符号表中:其中,其中,S.QUAD为为S对应的入口四元式序号;对应的入口四元式序号;当后面的程序中遇到当后面的程序中遇到GOTO L时,便产生时,便产生(j,_,_,S.QUAD)。现在学习的是第22页,共27页4.5 4.5 控制语句的翻译控制语句的翻译翻译翻译goto L 语句需要查询符号表,根据语句需要查询符号表,根据L是否已经定值,将该语句是否已经定值,将该语句的使用分为以下几种情况:的使用分为以下几种情况:2.先使用,后定义:先使用,后定义:(1)形式:形式:GOTO L GOTO L L:S (2)翻译过程:当遇到符号翻译过程:当遇到符号L时,符号表中还未定义,填入符号表中时,符号表中还未定义,填入符号表中的信息与之前有些不同,如下:的信息与之前有些不同,如下:现在学习的是第23页,共27页4.5 4.5 控制语句的翻译控制语句的翻译 第一次遇到第一次遇到L L的翻译过程:的翻译过程:(a)(a)填符号表,将填符号表,将“定义否定义否”一栏填写一栏填写“未未”,地址栏暂时填写即,地址栏暂时填写即将生成的四元式序号,将生成的四元式序号,CATCAT栏填写栏填写“标号标号”;(b)(b)生成四元式生成四元式(p)(j,_,_,0)(p)(j,_,_,0)等待回填;等待回填;现在学习的是第24页,共27页4.5 4.5 控制语句的翻译控制语句的翻译 第二次遇到第二次遇到L L的翻译过程:的翻译过程:(c)(c)修改符号表,仅将地址栏内容修改为即将生成的四元式序号修改符号表,仅将地址栏内容修改为即将生成的四元式序号q q;(d)(d)生成四元式生成四元式(q)(j,_,_,p),(q)(j,_,_,p),其中第四字段的其中第四字段的p p取自取自L L的地址栏修的地址栏修改前的内容,即形成一个需要回填的链,重复改前的内容,即形成一个需要回填的链,重复(c)(d)(c)(d);现在学习的是第25页,共27页4.5 4.5 控制语句的翻译控制语句的翻译 (e)(e)遇到定义性语句遇到定义性语句L:SL:S出现时,用出现时,用S S语句第一个四元式序号语句第一个四元式序号r r回填回填L L所对应的链。修改所对应的链。修改“定义否定义否”为为“是是”,修改地址栏为,修改地址栏为r.r.现在学习的是第26页,共27页课后习题:课后习题:4.8 4.94.5 4.5 控制语句的翻译控制语句的翻译现在学习的是第27页,共27页

    注意事项

    本文(编译原理语义控制语句的翻译优秀PPT.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开