PSEUDOCODE                                          COMMENTS

1 parse primary operand or subexpression primary() 2 advance to next token 3 if token == [ or ( 4 loop: 5 if token == [ subscript 6 if operand not in symbol table 7 issue "can't subscript" 8 bypass subscript expression skip() 9 enforce ] token 10 return <request no fetch> 11 if operand is an address 12 FETCH INTO PRIMARY if necessary 13 else 14 issue "can't subscript" 15 set <request no fetch> for return k=0 16 save staging buffer address setstage() 17 set <not constant> in temporary array is2[TC]=0 18 parse subscript expression level1() 19 enforce ] token 20 if subscript is a constant ...[constant] 21 purge subscript code clearstage() 22 if subscript is not zero 23 if operand is an integer 24 double constant 25 generate GETw2n 26 else generate GETw2n 27 generate ADD12 28 else if operand is an integer ...[variable] 29 generate DBL1 30 generate ADD12 31 pass <not an address> is[TA]=0 32 pass indirect type from symbol table is[TI] 33 set <request fetch> for return k=1 34 else 35 if token == ( function call 36 if not symbol table reference 37 INDIRECT CALL callfunc(0) 38 else if not a function reference 39 if <request fetch> 40 and not already fetched is[CV]==0 41 FETCH OPERAND fetch() 42 INDIRECT CALL callfunc(0) 43 else DIRECT CALL callfunc(ptr) 44 pass <not symbol table reference> is[ST]=0 45 pass <not constant> is[TC]=0 46 pass <reference fetched> is[CV]=0 47 set <request no fetch> for return k=0 48 else return <pre-set fetch request> 49 loop back 50 if operand is in symbol table and is a function no ( 51 generate POINTm 52 pass <not symbol table reference> is[ST]=0 53 return <request no fetch> 54 return <fetch request from below>