书签 分享 收藏 举报 版权申诉 / 82
上传文档赚钱

类型语义分析和中间代码产生课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2870211
  • 上传时间:2022-06-06
  • 格式:PPT
  • 页数:82
  • 大小:103KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《语义分析和中间代码产生课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    语义 分析 中间 代码 产生 课件
    资源描述:

    1、第七章第七章 语义分析和中间代码产生语义分析和中间代码产生71 中间代码 7.1.1 逆波兰表示法逆波兰表示法是波兰逻辑家Lukasiewicz发明的一种表示表达式的方法。该方法是将运算量写在前面,算符写在后面,用这种方法表示的表达式称为后缀式,如a+b可写成ab+。一般而言,若是K目算符,它对后缀式e1 ,e2 ,.,ek作用的结果将被表示为e1 e2. ek。后缀式的计算:一个后缀式的计算过程是使用一个栈,然后自左向右扫描后缀式,每遇到运算量就将它推进栈中,每遇到K目运算符就把它作用于栈顶部的K个项,并用运算结果来替代这K个项。可以看出表达式的后缀式表示法对进行表达式的计算而言具有很强的方

    2、便性。 后缀式的推广:后缀式这种表示法可以比较方便的推广到其它的描述地方,例如对条件算术表达式 if e then x else y (含义为,若e=0,此式为y,否则等于x)而言,可以将if-then-else看成一个三目算符,则该条件表达式的后缀式可写为,考虑一下该表示法的缺点,和解决该缺点的方法。语法制导生成后缀式:EE(1)+ E(2) E.CODE := E(1).CODE| E(2).CODE E(EE(E(1)) ) E.CODE := E E.CODE := E(1).CODE.CODEEiEi E.CODE:=i E.CODE:=i7.1.27.1.2三元式和树三元式和树 三

    3、元式的形式为:(OP ,ARG1,ARG2);OP是运算符,ARG1、ARG2分别为第一运算量和第二运算量。表达式A+B*C可以表示为:(*,B,C)(+,A,(1)) 其中三元式(2)是表达式A+B*C的最终代表,三元式(2)中的(1)指第一个三元式的结果。 为产生中间代码,现定义几个相关的函数,这些函数主要是为使用符号表和保存中间代码而定义的。 LOOKUP(NAME):对NAME查找符号表。若此名出现在表中,则将其表项位置(入口)作为LOOKUP的值;否则,LOOKUP取值为null。 FILLSYM(NAME):在符号表中开辟一新项,项目名为NAME,把此项的入口作为FILLSYM的值

    4、。 TRIP(OP,ARG1,ARG2):产生一个新三元式(OP,ARG1,ARG2),该过程将新的三元式放入三元式代码区中,并返回在三元式表中的位置。 ERTRY(i):对i所代表的标识符查找符号表以获得它在表中的位置通常的表达式翻译成三元式的语义动作如下:(1)EE(1)op E(2) E.VAL:=TRIP(op,E(1).VAL,E(2).VAL (2)E-E(1) E.VAL := TRIP(,E(1).VAL,-) (3)E(E(1) E.VAL:= E(1).VAL(4)Ei E.VAL:=ENTRY(i)试将下面语句序列给出其相应的三元式代码序列:X:=(A+B)*C;Y:=D

    5、(A+B); 三元式序列如下:(+,A,B)(*,C)(:=,X,) (+,A ,B) (,D,) (:=,Y,) 可以看出,该三元式序列是可以优化的,但是优化过程需要调整运算顺序,例如三元式(4)与(1)是相同的,可去掉(4),此时三元式(5)和(6)都需要修改,为解决三元式优化修改的困难,可辅助以一张间接码表加以解决,这种表示法称为间接三元式。(+,A,B)(*,C)(:=,X,) (,D,) (:=,Y,) 间接码表:(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) (5) E-E(1) E.PLACE:=NEWTEMP; 如果考虑标号的作用域,语义动作应该如何表示?按循环语句的这个实现模型进行翻译,我们改写文法并写出各产生式相应的语义动作如下:

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:语义分析和中间代码产生课件.ppt
    链接地址:https://www.163wenku.com/p-2870211.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库