第4章+语义分析和中间代码产生2new.ppt

  1. 1、本文档共208页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Elist→Elist1,E { T:=newtemp; k:=Elist1.nDim+1; nk:=Limit(Elist1.array,k); emit(*,Elist1.place,nk,T); emit(+,E.place,T,T); Elist.array:=Elist1.array; Elist.place:=T; Elist.nDim:=k } x:=A [y , z] L.place=y L.offset=null y E.place=y [ A Elist.place=y Elist.ndim=1 Elist.array=A L.place=z L.offset=null z E.place=z , Elist.place=T1 Elist.ndim=2 Elist.array=A 1: (*,y,20,T1) 2:(+,T1,z, T1) L→Elist] { L.place:=newtemp; emit(-,Elist.array,C,L.place) L.offset:=newtemp; emit(:=,Elist.place*w,_,L.offset) } L.place=y L.offset=null y E.place=y [ A Elist.place=y Elist.ndim=1 Elist.array=A L.place=z L.offset=null z E.place=z , Elist.place=T1 Elist.ndim=2 Elist.array=A ] L.place=T2 L.offset=T3 E.place=T4 3: (-,A,84,T2) 4:(*,4,T1,T3) 5:(=[],T2,T3,T4) 1: (*,y,20,T1) 2:(+,T1,z, T1) C=( (l1*n2)+l2)*w S→L:=E { if (L.offset=null) then emit(=,E.place,_,L.place) else emit([]=,E.place,_,L.place[L.offset]) } L.place=y L.offset=null y E.place=y [ A Elist.place=y Elist.ndim=1 Elist.array=A L.place=z L.offset=null z E.place=z , Elist.place=T1 Elist.ndim=2 Elist.array=A ] L.place=T2 L.offset=T3 E.place=T4 L.place=x L.offset=null x := s 1: (*,y,20,T1) 2:(+,T1,z, T1) 3: (-,A,84,T2) 4:(*,4,T1,T3) 5:(=[],T2,T3,T4) 6:(:=,T4,-,X) 例4.9 已知A是一个10?×?20的数组(每维下界均为1)且按行存放,求: (1) 赋值语句X?=?A[I,J]的四元式序列; (2) 赋值语句A[I?+?2,J?+?1]?=?M?+?N的四元式序列   要求给出语法制导翻译过程。 4.6.3 数组元素翻译示例 [解答] 由于A是10?×?20的数组,故d1?=?10,d2?=?20,C?=?d2?+?1?=?21。   (1) 根据文法G[A]及对应的语义加工子程序,赋值语句X=A[I, J]的语法制导翻译过程如图4-17所示。 4.6.3 数组元素翻译示例       图4-17 X=A[I,J]的语法制导翻译过程       图4-17 X=A[I,J]的语法制导翻译过程 100(*, I, 20, T1) /*d2=20*/ 101(+, J, T1, T1) /*得到20I+J*/ 102(?, A, 21, T2) /*得到A?21*/ 103(=[?],T2[T1],_,T3) /*T2[T1]即为A[I,J],即 T3=T2[1]*/ 104(=, T3, _, X) 因此得到赋值句A[I+2, J+1]=M+N的四元式序列为   100(+,I,2,T1)   101(+,J,1,T2)   102(*,T1,20,T3)   103(+,T2,T3,T3)   104(?,A,21,T4)   105(+,M,N,T5)   106([?]=,T5,_,T4[T3]) /*

文档评论(0)

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

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

1亿VIP精品文档

相关文档