38 D(NAME) D(ICONST) D(CONST) D(ONAME) D(N) D(S) D(TEXT) D(BIGHOLE) D(N255) D(HOLE) D(MARK) D(READLINE?) D(CHKIMPS) D(DUMMYAPP) D(DOWN) D(UP) D(LISTON) D(LISTOFF) D(COLON) D(NOTECONST) D(TRACE) D(SETNEM) D(PRIMFORM) D(SECNFORM) D(TERTFORM) D(OP) D(CHUI) D(+') D(NOTECYCLE) D(,') D(CHTYPE) D(COMP1) D(ASSOP) D(NOTESTART) D(NOTEFINISH) D(NOTEREPEAT) D(COMP2) D(INCLUDE) D(PLUS') D(OPERAND) D(COPERAND) D(APP) D(%IU) D(%WU) D(BTYPE) D(TYPE) D(NLIST') D(ADECLN) D(RESTOFARLIST) D(RESTOFFPLIST) D(RESTOFUI) D(%SPEC') D(RESTOFNLIST) D(RESTOFSWLIST) D(RESTOFBPLIST) D(RESTOFEXPR) D(RESTOFCEXPR) D(RESTOFCOND) D(RESTOFANDC) D(RESTOFORC) D(RESTOFSC) D(RT) D(FM) D(DECLN) D(%FORMAT') D(AUI) D(RESTOFIU) D(OPEXPR) D(ENDLIST) D(RSTMNT) D(%EVENT') D(%ARRAY') D(%NAME') D(%QNAME') D(FPP) D(FPDEL) D(SC) D(RESTOFSS1) D(RESTOFREPEAT) D(ELSE') D(RESTOFUCS) D(UCI) D(RESTOFUCI) D(PRIMOP) D(TERTOP) D(INDIRECTABLE) D(=') D(REG) D(DRORN) D(NN) D(OPTINC) D(OPTMOD) D(ENAME'') D(ENAME') D(BPAIR) D(%LN) D(CONST') D(%SEX) D(RESTOFRFDEC) D(RESTOFAINRDC) D(RFDEC) D(CYCPARM) D(OWNSTMT) D(CONSTLIST) D(ROCL) D(REPFACT) D(RESTOFAPP) D(EXPR) D(CEXPR) D(XOWN) D(OWNDEC) D(RESTOFOWNDEC) D(UI) D(SS) P(PLUS') ='+', '-', 0; P(OPERAND) =(NAME)(APP)(ENAME'), (CONST)(NOTECONST), '('(EXPR)')'; P(COPERAND) =(NAME)(DUMMYAPP), (CONST), '('(CEXPR)')'; P(CEXPR) =(HOLE)(+')(COPERAND)(MARK)(RESTOFCEXPR); P(EXPR) =(HOLE)(+')(OPERAND)(MARK)(RESTOFEXPR); P(RESTOFEXPR) =(OP)(OPERAND)*, 0; P(RESTOFCEXPR) =(OP)(COPERAND)*, 0; P(APP) ='('(EXPR)(RESTOFAPP)')', 0; P(RESTOFAPP) =','(EXPR)*, 0; P(%IU) ='%IF', '%UNLESS'; P(%WU) ='%WHILE'(HOLE)(SC)(RESTOFCOND)(MARK), '%UNTIL'(HOLE)(SC)(RESTOFCOND)(MARK), '%FOR'(HOLE)(NAME)'='(EXPR)','(EXPR)','(EXPR)(MARK); P(NLIST') =','(NAME)*, 0; P(BTYPE) ='%REAL', '%INTEGER', '%LONGREAL'; P(TYPE) ='%INTEGER', '%REAL', '%LONG'(BTYPE), '%BYTEINTEGER', '%STRING'(RESTOFUCS), '%HALFINTEGER'; P(RT) ='%ROUTINE', (CHTYPE)(TYPE)(FM); P(FM) ='%FN', '%MAP', '%FUNCTION'; P(FPDEL) =(TYPE)(%QNAME')(NAME)(NLIST'), '%RECORD'(%ARRAY')'%NAME'(NAME)(NLIST'), (RT)(%NAME')(NAME)(NLIST')(FPP), '%NAME'(NAME)(NLIST'); P(%ARRAY') ='%ARRAY', 0; P(%NAME') ='%NAME', 0; P(%QNAME') ='%ARRAYNAME', '%NAME', 0; P(FPP) ='('(HOLE)(FPDEL)(MARK)(RESTOFFPLIST)')', 0; P(RESTOFFPLIST)=(,')(HOLE)(FPDEL)(MARK)*, 0; P(ENDLIST) ='%OFPROGRAM'(UP), '%OFFILE', '%OFLIST'(LISTOFF), (UP); P(%FORMAT') ='%FORMAT', 0; P(RSTMNT) ='%FORMAT'(NAME)'('(RFDEC)(RESTOFRFDEC)')', '%SPEC'(HOLE)(NAME)(ENAME'')(MARK)'('(NAME)')', (HOLE)(DECLN)(MARK)'('(NAME)')'; P(SC) =(EXPR)(COMP1)(EXPR)(RESTOFSC), '('(SC)(RESTOFCOND)')', '%NOT'(SC); P(RESTOFSC) =(COMP2)(EXPR), 0; P(RESTOFCOND) ='%AND'(SC)(RESTOFANDC), '%OR'(SC)(RESTOFORC), 0; P(RESTOFANDC) ='%AND'(SC)*, 0; P(RESTOFORC) ='%OR'(SC)*, 0; P(RESTOFUI) =(ASSOP)(EXPR), ':', 0; P(%SPEC') ='%SPEC'(BIGHOLE), (DOWN); P(%LN) ='%LONG', '%NORMAL'; P(RESTOFBPLIST)=','(EXPR)':'(EXPR)(RESTOFBPLIST), 0; P(DECLN) =(%QNAME')(NAME)(NLIST'), '%ARRAY'(%FORMAT')(ADECLN); P(ADECLN) =(NAME)(NLIST')(BPAIR)(RESTOFARLIST); P(RESTOFARLIST)=','(ADECLN), 0; P(OWNDEC) =(%QNAME')(HOLE)(NAME)(NLIST')(CONST') (MARK)(RESTOFOWNDEC)(S), '%ARRAY'(%FORMAT')(NAME)(BPAIR)(CONSTLIST) ; P(RESTOFOWNDEC)=','(HOLE)(NAME)(NLIST')(CONST')(MARK)(RESTOFOWNDEC), 0; P(XOWN) ='%OWN', '%EXTERNAL', '%EXTRINSIC', '%CONSTANT', '%CONST'; P(OWNSTMT) =(TYPE)(OWNDEC), '%RECORD'(%QNAME')(HOLE)(NAME)(NLIST') (MARK)'('(NAME)')'(S), '%RECORD' '%ARRAY'(%FORMAT')(HOLE)(NAME)(BPAIR)(MARK) '('(NAME)')'(S); P(CONSTLIST) ='='(+')(COPERAND)(RESTOFCEXPR)(REPFACT)(ROCL), 0; P(ROCL) =','(READLINE?)(+')(COPERAND)(RESTOFCEXPR)(REPFACT)*, 0; P(REPFACT) ='('(+')(COPERAND)(RESTOFCEXPR)')', 0; P(RESTOFNLIST) =','(N255)*, 0; P(%EVENT') ='%EVENT', 0; P(OPEXPR) =','(EXPR), 0; P(RESTOFSWLIST)=','(NAME)(NLIST')'('(EXPR)':'(EXPR)')'*, 0; P(RESTOFREPEAT)='%UNTIL'(SC)(RESTOFCOND), 0; P(RESTOFSS1) =(COLON), (S), (%IU)(SC)(RESTOFCOND)(S), (%WU)(S); P(RESTOFIU) ='%START'(NOTESTART), '%THENSTART'(NOTESTART), '%THEN'(HOLE)(UI)(MARK)(ELSE'); P(AUI) ='%AND'(UI), 0; P(ELSE') ='%ELSESTART'(NOTESTART), '%ELSE'(%IU)(HOLE)(SC)(RESTOFCOND)(MARK)(RESTOFIU), '%ELSE'(UI), 0; P(ENAME'') ='_'(NAME), 0; P(ENAME') ='_'(NAME)(APP)(ENAME'), 0; P(BPAIR) ='('(EXPR)':'(EXPR)(RESTOFBPLIST)')'; P(CONST') ='='(+')(COPERAND)(RESTOFCEXPR), 0; P(%SEX) ='%SYSTEM'(CHKIMPS), '%EXTERNAL', '%DYNAMIC', 0; P(CYCPARM) =(NAME)'='(EXPR)','(EXPR)','(EXPR), 0; P(RESTOFRFDEC) =','(RFDEC)*, 0; P(RFDEC) =(TYPE)(%QNAME')(NAME)(NLIST'), (TYPE)'%ARRAY'(NAME)(NLIST')(BPAIR)(RESTOFAINRDC), '%RECORD'(%ARRAY')'%NAME'(NAME)(NLIST'), '%RECORD'(HOLE)(NAME)(NLIST')(MARK)'('(NAME)')', '%RECORD' '%ARRAY' (HOLE) (NAME)(NLIST') (BPAIR) (RESTOFAINRDC) (MARK) '('(NAME)')'; P(RESTOFAINRDC)=','(NAME)(NLIST')(BPAIR)*, 0; P(RESTOFUCS) ='('(N255)')', 0; P(UCI) ='*='(NAME), '*'(NAME), 'PUT_'(ICONST), (SETNEM)(RESTOFUCI), 'CNOP_'(N255)','(N255); P(RESTOFUCI) =(PRIMFORM)(PRIMOP), (SECNFORM)'%L='(DRORN)(NN), (TERTFORM)(N)','(TERTOP); P(PRIMOP) ='<'(NAME)'>', (INDIRECTABLE), '('(INDIRECTABLE)(OPTMOD)')', '(%DR+'(INDIRECTABLE)')', '(''%DR'(OPTMOD)')', '%B'; P(TERTOP) ='<'(NAME)'>', (INDIRECTABLE), '(''%DR'(OPTMOD)')', '(%DR+'(N)')'; P(DRORN) ='%DR', (N); P(NN) =','(N)','(N), 0; P(OPTINC) ='+'(N), '-'(N), 0; P(OPTMOD) ='+' '%B', 0; P(=') ='=', 0; P(INDIRECTABLE)=(=')(PLUS')(CONST), (NAME)(OPTINC), '('(REG)(OPTINC)')', '%TOS'; P(REG) ='%LNB', '%XNB', '%PC', '%CTB'; P(UI) =(HOLE)(NAME)(APP)(ENAME')(MARK)(RESTOFUI)(AUI), '->'(NAME)(APP), '%RETURN', '%RESULT'(ASSOP)(EXPR), '%MONITOR'(AUI), '%STOP', '%SIGNAL'(%EVENT')(N255)(OPEXPR), '%EXIT', '%CONTINUE'; P(SS) =(CHUI)(HOLE)(UI)(MARK)(RESTOFSS1), (TEXT), (%IU)(HOLE)(SC)(RESTOFCOND)(MARK)(RESTOFIU)(S), '%FINISH'(NOTEFINISH)(ELSE')(S), '%CYCLE'(NOTECYCLE)(CYCPARM)(S), '%REPEAT'(NOTEREPEAT)(RESTOFREPEAT)(S), (%WU)'%CYCLE'(NOTECYCLE)(S), (CHTYPE)(BIGHOLE)(TYPE)(DECLN)(S), '%END'(ENDLIST)(S), '%RECORD'(RSTMNT)(S), (HOLE)(%SEX)(RT)(MARK)(%SPEC')(NAME)(FPP)(S), (XOWN)(OWNSTMT), '%REALS'(%LN)(S), '%BEGIN'(DOWN)(S), '%ON'(TRACE)(%EVENT')(N255)(RESTOFNLIST)'%START' (NOTESTART)(S), '%SWITCH'(NAME)(NLIST')'('(EXPR)':'(EXPR)')' (RESTOFSWLIST)(S), '%LIST'(S)(LISTON), '%SPECIAL''%NAME'(NAME)(S), '*'(UCI)(S), '%TRUSTEDPROGRAM'(S), '%MAINEP'(NAME)(S), '%CONTROL'(CONST)(S), '%INCLUDE'(CONST)(INCLUDE), (S); E