北大编译原理chapter7-精选课件(公开).ppt

北大编译原理chapter7-精选课件(公开).ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
产生式 语义规则 E→E1 and E2 E1.true:= newlabel; E1.false:= E.false; E2.true:=E.true; E2.false:=E.false; E.code:=E1.code‖ gen(E1.true’:’) ‖ E2.code (接上页) E→not E1 E1.true:= E.false; E1.false:= E.true; E.code:=E1.code 7.3 赋值语句 赋值语句的翻译 表达式的类型可以是整型、实型、数组 和记 录 7.3.1 符号表中的名字 ◆名字可以理解为指向符号表中相应该名字 表项的指针 如何根据名字查找符号表的表项? ◆过程lookup(id.name)检查是否在符号表中存在相应此名字的表项。 采用最近嵌套作用域规则查找非局部名字时,lookup过程先通过top(tblptr)指针在当前符号表中查找名字为name的表项。 若找到,返回有关信息。 若未找到,lookup就利用当前符号表表头 的指针找到该符号表的外围符号表,然后在那里查找名字为name的表项,直到所有外围过程的符号表中均无此name表项,则lookup返回nil,表明查找失败。 图7.8 产生赋值语句三地址代码的翻译模式 S→id:=E {p:=lookup(id.name); if pnil then emit(p:= E.place) else error } E→E1+E2{E.place=newtemp; emit(E.place:=E1.place+E2.place)} E→E1*E2{E.place=newtemp; emit(E.place:=E1.place*E2.place)} E →-E { E.place:=newtemp; emit(E.place ′ := ′ ′uminus′E1.place} E→(E1) {E.place:=E1.place} E→id {p:=lookup(id.name); if pnil then E.place:=p else error} lookup(id.name)= id.entry nil emit 它将生成的三地址代码送到输出文件上。 语义动作应包括类型分析,文法符号应有类型属性,在类型分析的基础上,进行相容和赋值相容检查,生成类型转换的三地址代码。 7.3.2 数组元素地址分配 数组元素的三地址代码是什么? 如何生成数组元素的三地址代码。 一. 数组元素地址的计算公式 ◆ 数组A的下标为i的元素的开始地址 VAR a:ARRAY [low..high] OF real; 求 a[i]的地址. base+(i-low )* w (7.3) =bace-low*w + i*w 常量部分(可在编译时计算出来)+变量部分 其中, base 是数组元素a[low]的地址。 ◆对于一个二维数组,可以按行或按列存放 若按行存放,则可用如下公式计算A[i1,i2] 的相对地址: base+((i1 一low1)* n2+i2 一low2)*w) = base-((low1 *n2)+low2)*w + (i1*n2)+i2)* w (7.4) 令c= ((low1 *n2)+low2)*w 则常量部分=a[low1,low2]-c. ◆计算元素A[i1,i2,...,ik] 相对地址的推广公式((...((i1*n2+i2)*n3+i3...)*nk+ik)*w+base-((...((low1*n2+low2)*n3+low3...)*nk+lowk)*w (7.5) c=((...((low1*n2+low2)*n3+low3)...)*nk

文档评论(0)

saodishenseng2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档