- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算Expr(1)的四元式序列,结果=临时变量T1 (=, T1, 0, i ) (i=Entry(identifier) ) 计算Expr(2)的四元式序列,结果=临时变量T1 (p) ( j≤, identifier, T2, p+2) (p+1) ( j, 0, 0, 0 ) ←Statement.Chain (p+2) Statement(1)的代码 (q) (+, identifier, ‘1’, identifier) (q+1) ( j, 0, 0, p) (q+2) ←NXQ 除了while 循环和for循环外,常见的还有一种repeat循环,其处理方法与前两种循环类似,我们将它留作习题给大家。 * * 5.6.3? 语句标号及GOTO语句的翻译 语句标号用于标识一个语句。在常见语言中,标号的定义在形式上是通过产生式 Statement→label : Statement (5.13) 所描述的方式来定义的。因此,我们通常把源程序中形如“ label : Statement”的标号出现,称为定义性出现。 在许多语言中,通过执行形如 GOTO label 的转向语句,把控制无条件地转移到由标号label 所标识的语句。这种出现在GOTO语句或其它类似语句中的标号,我们称为使用性标号。在许多语言中,允许标号的使用性出现位于定义性出现之前。 * * 标号具有的语义属性 标号除其名字外,还有一个重要的属性,就是它所标识语句的四元式序列的首地址(序号)。 另外,因标号的使用出现允许先于定义出现,所以还需有一个属性用于标志该标号是否已被定义,其初值为0(假,即尚未定义)。 由于标号的信息在程序中使用频繁,我们可将其填写在符号表中备查,因而只需把该标号在表中的序号作为其语义属性即可。 对于一个标号而言,它在符号表中的登记项通常有如下的内容: NAME | [CAT] | DEF | … | ADDR 名字 [label] 0|1 四元式序号/链 * * goto语句的翻译 对于转向语句 GOTO L,翻译程序将产生一个形如(j, 0, 0, p)的四元式。 若此时L的表项的DEF域为1(即已定义),则将相应的ADDR域作为此四元式的转向目标(p=ADDR); 若DEF=0,可利用转移四元式的Result域将所有转向同一目标的四元式拉成一个链,待L有定义时回填,链首由L在表中的ADDR域指示 源程序 四元式 goto L; (p) (j,0,0,0) … … goto L; (q) (j,0,0,p) … … goto L; (r) (j,0,0,q) NAME CAT DEF … ADDR … … … … … lab 0 … r * * goto语句的翻译(续) 下面,我们讨论转向语句与标号定义语句的翻译。转向语句的文法为 Statement→goto label (5.14) 对于标号定义语句,为了能够记录下标号的定义点(即它所标识语句的第一四元式之序号),我们将产生式(5.13)拆分为二: Statement→LabelDef Statement (5.15) LabelDef → label ‘:’ (5.16) 现在,我们可以为上述文法添加语义动作,构造属性翻译文法。 * * goto语句的翻译(续) Statement→ goto label {int i=lookup($2); if (i==0){/*该标号是首次出现*/ i=Enter($2);VarList[i].CAT=lab; VarList[i].DEF=0; VarList[i].ADDR=NXQ; GEN(j,0,0,0);} else /* 该标号已出现过*/ if (VarList[i].DEF) /*该标号已定义,可直接使用*/ GEN(j,0,0,VarList[i].ADDR); else { int n=NXQ;/*尚未定义,需拉链*/ GEN(j,0,0,VarList[i].ADDR); VarList[i].ADDR=n;} } * * 标号定义语句的翻译 LabelDef→ Label ‘:’ { int i=lookup($1); if (i==0) { i=Enter($1); VarList[i].CAT=lab; VarList[i].DEF=1; VarList[i].ADDR=NXQ;} else if(VarList[i].DEF) return ERROR;/*重复定义*/ else{VarLi
您可能关注的文档
- 一年级期末复习数学试卷.doc
- 决赛进展通报之组委会实地座谈会和赞助继续接纳中.docx
- 通风与空调分项工程质量技术交底卡.doc
- 2017----2018学年度上学期高一物理期末质量检测试卷.docx
- 半成品測試(ATX)新板操作指導書(作廢).doc
- 八年级下&九年级全册3A原文汇总.doc
- 玻璃幕墙节能分项工程质量技术交底卡.doc
- 2015年Mestre装饰门把手中国市场零售价.doc
- 16G与11G变化对比-梁平法.ppt
- 执业护士资格在线模拟考试需求文档【2017-8-5】-细化版.docx
- 2026届四川省峨眉山市二中高二化学第一学期期末调研模拟试题含答案.doc
- 2026届湖南省株洲市茶陵二中化学高一第一学期期中达标检测试题含解析.doc
- 人教版高中语文必修1 包身工 课件(共50张PPT).ppt
- 福建省泉州市南安侨光中学2026届高二化学第一学期期末质量检测试题含答案.doc
- 人教版高中语文“中国现代诗歌散文欣赏”第五单元 略读《这是四点零八分的北京》优质课件 (共30张PP.ppt
- 2026届河北省石家庄市辛集中学化学高二第一学期期中质量跟踪监视试题含解析.doc
- 人教版高中语文必修1-表达交流3《人性的光辉 写人要凸显个性》 课件 (共54.ppt
- 人教版高中英语高考 重点单词 重点句词组 微写作 小组合作(共21页PPT).ppt
- 云南省巧家县巧家第一中学2026届化学高二第一学期期中考试模拟试题含解析.doc
- 人教版高中英语选修9课件:Unit 5 Inside advertising WB Listenin.ppt
原创力文档


文档评论(0)