《程序设计语言与编译》课程PPT教学课件(高职)第二十讲 含数组元素的赋值语句的翻译

三.含数组元素的赋值语句的翻译 1.数组元素的地址计算公式 (1)数组定义的般形式 array A[: u, l2 u2, ...,In: un] of integer 其中l、u分别称为第k维的下、上界; d=uk-1+1称为第k维维长; A[i1i2,…i为某一数组元素
三. 含数组元素的赋值语句的翻译 1. 数组元素的地址计算公式 (1)数组定义的一般形式 array A[l1 :u1 ,l2 :u2 ,. . .,ln :un ] of integer 其中:lk、uk分别称为第k维的下、上界; dk=uk -lk+1 称为第k维维长; A[i1 ,i2 ,…,in ]为某一数组元素

(2)按行存放时的地址公式 设每个元素占一个存储单元则A[i,i2,i 的地址 D=at(i1-1)*d2*d3*…*dn+(2-12)*d3,*d4**dn +…+(n1-n1)*dn+(n-1n) D=CONSPART+VARPART CONSPART=a-C C=(….(1*d2+12)*d3+.…+1n1)*dn+n VARPART=(.i*d2+i2)d3+ .+in-1*dn+
(2)按行存放时的地址公式 设每个元素占一个存储单元,则A[i1 ,i2 ,…,in ] 的地址 D=a+(i1 -l1 )*d2*d3 *…*dn+(i2 -l2 )*d3*d4 *…*dn +…+(in-1 -ln-1 )*dn+(in -ln ) D=CONSPART+VARPART CONSPART=a-C C=(... (l1*d2+l2 )*d3+. . . +ln-1 )*dn+ln VARPART =(. . .(i1*d2+i2 )*d3+. . .+in-1 )*dn+in

(3)数组的描述符一内情向量 内容类型维数 CONSPART各维上、下 界和维长 . d n type CONSPART
(3)数组的描述符—内情向量 内容:类型,维数,CONSPART,各维上、下 界和维长 l1 l2 u1 u2 d1 d2 …... ln un dn n type CONSPART

(4 VARPART的计算 ,D=Dx1*dk+ik,(k=2,3,,n)
(4)VARPART的计算 D1=i1 , Dk=Dk-1*dk+ik , (k=2,3,. . .n)

2含数组元素赋值语句的文法及改写 A→V:=E i[Elist] i Elist→Eit1|E E→E1opE2|E1|(E)V 为了在计算 VARPART的过程中随时查找数 组的内情向量必须改写Eist→list,E|E
2.含数组元素赋值语句的文法及改写 A→V:=E V→i[Elist]│i Elist→Elist1 ,E | E E→E1 op E2│-E1│(E1 )│V 为了在计算VARPART的过程中随时查找数 组的内情向量,必须改写Elist→Elist1 ,E | E

改写后的文法为 A→V:=E V→i| Elist] Elist-→E|Eit1E E→E1opE21(E1)V
改写后的文法为: A→V:=E V→i│Elist] Elist→i[E│Elist1 ,E E→E1 op E2│-E1│(E1 )│V

3.翻译方案 (1)新的语义变量和过程 V place:简单变量的存储地址 或数组元素的 CONSPART Voffset: null 或数组元素的 VARPART
3. 翻译方案 (1)新的语义变量和过程 V.place:简单变量的存储地址 或 数组元素的CONSPART V.offset:null 或 数组元素的VARPART

Elist array:记录数组名 Elist place:记录归约过程中Ⅴ ARPART的 中间结果 Elist dim:记录当前处理这一维的序号 getc( list. array):从内情向量中取数组的 CONSPART limit( Elist array, k):从内情向量中取数组 第k维的维长
Elist.array:记录数组名 Elist.place:记录归约过程中VARPART的 中间结果 Elist.dim:记录当前处理这一维的序号 getc(Elist.array):从内情向量中取数组的 CONSPART limit(Elist.array,k):从内情向量中取数组 第k维的维长

(2)两条新的四元式 变址取数 (,TI[门,,X) 相当于X:=T[ 变址存数 ([=,,Ⅹ,T1[T] 相当于T1[T]:=X
(2)两条新的四元式 变址取数 (=[],T1[T],_,X) 相当于X:=T1[T] 变址存数 ([]=,_,X,T1[T]) 相当于T1[T]:=X

(3)语义子程序 V→1 i P: =lookup(i name) fpenil then begin V place: p Voffset: -null end else error j
(3)语义子程序 V→i { P:=lookup(i.name); if P<>nil then begin V.place:=P; V.offset:=null end else error }
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十二讲 一类控制语句的翻译.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二讲 强制式语言.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第八讲 控制结构.ppt
- 重庆大学材料学院:《计算机在材料工程中的应用》第一章 计算机应用的数学基础(汤爱涛).ppt
- 重庆大学材料学院:《计算机在材料工程中的应用》第五章 材料数据库与专家系统 (汤爱涛).ppt
- 重庆大学材料学院:《计算机在材料工程中的应用》第四章 计算机辅助材料的测试与分析(汤爱涛).ppt
- 重庆大学材料学院:《计算机在材料工程中的应用》第三章 相图的计算机分析与计算(汤爱涛).ppt
- 重庆大学材料学院:《计算机在材料工程中的应用》第二章 材料科学中的数值模拟与计算(汤爱涛).ppt
- 《photoshop》讲义(电子课件).doc
- 《计算机图形学》课程教学资源:第2章 实面积图形的生成(赵立强).ppt
- 《Matlab入门教程》教学资源:学习参考资料.doc
- 《计算机网络技术教程》第9章 各种n7网络工作站的连接.ppt
- 《计算机网络技术教程》第8章 NT网络中的TCP/IP管理.ppt
- 《计算机网络技术教程》第7章 构建Windows NT网络.ppt
- 《计算机网络技术教程》第6章 Intranet网络管理.ppt
- 《计算机网络技术教程》第5章 Internet基础.ppt
- 《计算机网络技术教程》第4章 广域网实用组网技术.ppt
- 《计算机网络技术教程》第3章 局域网实用组网技术.ppt
- 《计算机网络技术教程》第2章 网络体系结构、协议和软件系统.ppt
- 《计算机网络技术教程》第1章 计算机网络基础.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十六讲 运行时存储空间管理.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十七讲 栈式分配.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十三讲 控制语句也可采用改写文法的方法.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十四讲 代码优化.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十五讲 循环优化.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第二十一讲 一类说明语句的翻译.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第九讲 SIMULA 67协同程序.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第六讲 类型检查.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第七讲 抽象数据类型.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第三讲 程序单元.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十八讲 SLR分析表的构造.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十二讲 编译概述.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十讲 程序设计语言和编译程序.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十九讲 代码生成和代码优化.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十六讲 优先关系表的构造.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十七讲 LR分析法.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十三讲 自顶向下语法分析.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十四讲 预测分析程序.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十五讲 自底向上语法分析.ppt
- 《程序设计语言与编译》课程PPT教学课件(高职)第十一讲 自动机.ppt