编译程序的组织 (20).ppt





《编译程序的组织 (20).ppt》由会员分享,可在线阅读,更多相关《编译程序的组织 (20).ppt(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6.9 GOTO语句和情况语句的翻译l l情况语句情况语句实现多分枝结构(如C和Pascal等)结构的一般形式为casecase ExprExpr ofofC C1 1:S:S1 1;C C2 2:S:S2 2;C Cn-1n-1:S:Sn-1n-1;elseelse S Sn nendendl lGOTOGOTO语句语句语句标号:标识一个语句。定义形式为 StatementStatementlabel:Statementlabel:Statement;源程序中形如“labellabel:Statement:Statement”的标号标号出现,称为定义性出现定义性出现;通过执行形如 GOTOG
2、OTO labellabel 的转向语句,把控制无条件地转移到由标标号号labellabel 所标识的语句。出现在GOTOGOTO语句或其它类似语句中的标号标号,称为使用性使用性标号标号。在许多语言中,允许标号标号的使用性出现使用性出现位于定义性出现定义性出现之前。6.9.1.语句标号及GOTO语句的翻译l标号的语义属性标号除其名字外,还有一个重要的属性,就是它所标识语句的四元式序列的首地址(序号)。另外,因标号的使用出现允许先于定义出现,所以还需有一个属性用于标志该标号是否已被定义,其初值为0(假,即尚未定义)。由于标号的信息在程序中使用频繁,我们可将其填写在符号表中备查,因而只需把该标号在
3、表中的序号作为其语义属性即可。对于一个标号而言,它在符号表中的登记项通常有如下的内容:2023/4/42NAMENAME|CATCAT|DEFDEF|ADDRADDR名字名字labellabel 0|10|1四元式序号四元式序号/链链GOTO语句的翻译转向语句 GOTO GOTO L L,翻译程序将产生一个形如(j,j,0,0,0,0,p p)的四元式。若此时L L的表项的DEFDEF域为1 1(即已定义),则将相应的ADDRADDR域作为此四元式的转向目标(p p=ADDRADDR);若DEFDEF=0 0,可利用转移四元式的ResultResult域将所有转向同一目标的四元式拉成一个链,待
4、L L有定义时回填,链首由L L在表中的ADDRADDR域指示。源程序源程序 四元式四元式gotogoto L L;(p p)(j,0,0,(j,0,0,0 0)gotogoto L L;(q q)(j,0,0,(j,0,0,p p)gotogoto L L;(r r)(j,0,0,(j,0,0,q q)NAME CAT DEF ADDR lab 0 r2023/4/43GOTO语句的翻译(续)l转向语句的文法:StatementStatementgotogoto labellabell l标号定义语句拆分文法:标号定义语句拆分文法:Statement StatementLabelDef St
5、atementLabelDef Statement LabelDefLabelDef labellabel :2023/4/44uStatement goto label int i=lookup($2);if(i=0)/*该标该标号是首次出号是首次出现现*/i=Enter($2);VarListi.CAT=lab;VarListi.DEF=0;VarListi.ADDR=NXQ;GEN(j,0,0,0);else/*该标该标号已出号已出现过现过*/if(VarListi.DEF)/*该标该标号已定号已定义义,可使用可使用*/GEN(j,0,0,VarListi.ADDR);else int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译程序的组织 20 编译程序 组织 20

限制150内