第6章语法制导翻译和语义探究.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2、 while语句的翻译 (4)举例 将 while (AB) do if (CD) then X:=Y+Z 翻译成四元式序列。 100:( j ,A ,B , 102 ) 101: ( j, _ , _ , ) 102: ( j , C , D , 104 ) 103: ( j , _ , _ , ) 104: ( + , Y , Z , X ) 105: ( j , _ , _ , 100) 106: 返回 106 105 3、 for语句的翻译 (1)文法 S→for i:=E1 step E2 until E3 do S1 (2)语义 begin i:=E1 goto over again: i:=i+ E2 over: if i≤E3 then begin S1; goto again end end 3、 for语句的翻译 (3)目标结构 3、 for语句的翻译 (4)举例 将 for I:=1 step 1 until N do M:=M+I翻译成四元式 100 (:= ,1 , _ , I) 101 (j ,_ ,_ ,103) 102 (+ , I , 1 ,I) 103 (j≤ ,I , N ,105) 104 (j ,_ ,_ , ) 105 (+ , M ,I ,T ) 106 (:= ,T , _ , M) 107 (j ,_ ,_ ,102) 108 100 (:= ,1 , _ , I) 101 (j ,_ ,_ ,103) 102 (+ , I , 1 ,I) 103 (j ,I , N , ) 104 (+ , M ,I ,T ) 105 (:= ,T , _ , M) 106 (j ,_ ,_ ,102) 107 或 返回 108 107 6.6 说明语句的翻译 简单说明语句的翻译 1 过程中的说明 2 1、 简单说明语句的翻译 (1)文法 简单说明语句的文法G[D]为: D → int namelist | float namelist namelist → namelist, i | i (2)语义 说明源程序中的简单变量的名字及其性质。 (3)翻译方法 我们可以把文法G[D]改为G[D]: G[D]: D→D, i∣int i∣float i 这样,就能把所说明的性质及时地告诉每个名字i;或者说,每当读进一个标识符时就可以把它的性质登记到符号表中,而无须到最后再集中登记了。 1、 简单说明语句的翻译 ①语义变量和语义过程 语义变量D.att:用于传递名字的性质 过程entry(id,A):把名字id和性质A登记在符号表中 ②翻译方案 产生式 语义子程序 D→D1 ,i entry(id,D1.att); D.att= D1.att; D→int i entry(id,int); D.att= int; D→float i entry(id,float); D.att= float; 返回 2、 过程中的说明 当考察一个过程或分程序的一系列说明语句时,便可为局部于该过程的名字分配存储空间。对每个局部名字,我们将在符号表中建立相应的表项,并填入相应的信息如类型、在存储器中的相对地址等。 (1)相关术语 活动记录:为了管理过程在一次执行中所需要的信息,使用一个连续的存储块,这个连续的存储块称为活动记录。 相对地址:指对静态数据区基址或活动记录中局部数据区基址的一个偏移量。 2、 常见的中间代码形式 (6)三地址代码 常用的三地址语句与相应四元式对应如下: 三地址语句 四元式 x=y op z (op, y, z, x) x= -y (uminus, y, _, x) x=y (=, y, _, x) param x1 (param, x1, _, _) call P (call, _, _, P) goto

文档评论(0)

1112111 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档