ImageVerifierCode 换一换
格式:PPT , 页数:82 ,大小:103KB ,
文档编号:2870211      下载积分:28 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-2870211.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(三亚风情)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(语义分析和中间代码产生课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

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

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; 如果考虑标号的作用域,语义动作应该如何表示?按循环语句的这个实现模型进行翻译,我们改写文法并写出各产生式相应的语义动作如下:

侵权处理QQ:3464097650--上传资料QQ:3464097650

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


163文库-Www.163Wenku.Com |网站地图|