编译原理课件第五章中间代码生成.ppt

* 2 数组元素的翻译 设数组元素为: A[ E1,E2,......En], 要取得该元素值,首先要计算 出该元素的地址: addr=conspart+varpart conspart =a -c varpart = {(...((E1d2+E2)d3+E3)d4+E4)......) dn + En } conspart 的 a c 已经通过数组说明语句的翻译登记在内 情向量表中; 而 varpart 中含有未知数,只能在程序运行时通过如 下算法实现: * varpart:=E1;k:=1; while kn do { varpart:=varpart*dk +1 + Ek +1; K:=k+1 } 下面是包含数组元素的变量的文法: V→i | i [ E1,E2,....En] 为了便于翻译上面的算法,文法改为如下形式: V→i | Elist] Elist→i [E | Elist1,E V 有两个值 : V.place , V.off 对于简单变量 , V.place = entry(i),V.off=0; 对于数组变量 , V.place = a -c , V.off=varpart

文档评论(0)

1亿VIP精品文档

相关文档