int b; int i; int foo; int bar; int a[10][5][3]; int t[10]; b=41-5*8; foo = a[b+1][b+2][b]; //foo =*(a+[b+1]*15+[b+2]*3+[b]*1); //foo= a[0][6][0] for(i = 0 ; i<10 ; i = i + 1) { a[i][0][0]=i; } bar = a[b+1][b-1][0]; len offset dims sizes type b 1 0 INT i 1 1 INT foo 1 2 bar 1 3 [1] [1] a 150 4 [3,5,10] [15,3,1] AINT t 10 155 [10] [1] AINT $t1 1 166 [1] $t2 1 167 [1] $t3 1 168 [1] $t4 1 169 $t5 1 170 $t6 1 171 $t7 1 172 block : if_stat | assign ';' | decl ';' {while (stosdekltab!=empty) stosdekltab.pop } ; decl : type ID {IS_TAB=0;zapamiêtujemy $2;} | decl array_dim {IS_TAB=1;} ; array_dim : '[' L_INT ']' {stosdekltab.push($2);} array_idx : '[' wyr ']' {pop;}