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

上传人(卖家):三亚风情 文档编号:2870211 上传时间:2022-06-06 格式:PPT 页数:82 大小:103KB
下载 相关 举报
语义分析和中间代码产生课件.ppt_第1页
第1页 / 共82页
语义分析和中间代码产生课件.ppt_第2页
第2页 / 共82页
语义分析和中间代码产生课件.ppt_第3页
第3页 / 共82页
语义分析和中间代码产生课件.ppt_第4页
第4页 / 共82页
语义分析和中间代码产生课件.ppt_第5页
第5页 / 共82页
点击查看更多>>
资源描述

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

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


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

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


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