25 D(NAME) D(ICONST) D(CONST) D(CONSTLIST) D(N) D(S) D(TEXT) D(TEXTTEXT) D(NAMELIST) D(HOLE) D(MARK) D(UCRR) D(UCRX) D(UCRS) D(UCSI) D(UCSHIFT) D(UCSS) D(UCPD) D(UCSPEC) D(UCINM) D(CHKIMPS) D(+') D(OP) D(ASSOP) D(COMP) D(PLUS') D(OPERAND) D(IMPMULT) D(APP) D(,') D(%IU) D(%WU) D(CMARK) D(TYPE) D(ADECLN) D(RESTOFARRAYLIST) D(RESTOFFPLIST) D(RESTOFUI) D(%SPEC') D(RESTOFNLIST) D(RESTOFSWLIST) D(RESTOFBPLIST) D(RESTOFEXPR) D(RESTOFCOND) D(RESTOFANDC) D(RESTOFORC) D(RESTOFSC) D(RT) D(FM) D(DECLN) D(LABEL) D(%FORMAT') D(AUI) D(RESTOFIU) D(RESTOFWU) D(ELABEL) D(CORP) D(MON) D(ENDLIST) D(RSTMNT) D(FLIST) D(RESTOFFLIST) D(%ARRAY') D(%NAME') D(%QNAME') D(FPP) D(FPDEL) D(SC) D(RESTOFSS1) D(ELSE') D(RESTOFUCS) D(=') D(@') D(ENAME'') D(ENAME') D(BPAIR) D(%LN) D(DISP) D(CONST') D(%SEX) D(RESTOFRFDECLN) D(RFDEC) D(CYCPARM) D(OWNSTMT) D(UCI) D(UCS) D(RESTOFSI) D(RESTOFDXB) D(DLB) D(DXB) D(DB) D(RESTOFUCI) D(RESTOFAPP) D(EXPR) D(XOWN) D(OWNDEC) D(RESTOFOWNDEC) D(CBPAIR) D(UI) D(SS) P(PLUS') ='+','-',0; P(OPERAND) =(NAME)(APP)(ENAME'),(CONST)(IMPMULT), '('(EXPR)')','!'(EXPR)'!'; P(IMPMULT) =(NAME)(APP)(ENAME'),0; P(EXPR) =(HOLE)(+')(OPERAND)(MARK)(RESTOFEXPR); P(RESTOFEXPR) =(OP)(OPERAND)*,0; P(APP) ='('(EXPR)(RESTOFAPP)')',0; P(RESTOFAPP) =','(EXPR)*,0; P(,') =',',0; P(%IU) ='%IF','%UNLESS'; P(%WU) ='%WHILE','%UNTIL'; P(CMARK) ='!','%COMMENT'; P(TYPE) ='%INTEGER','%REAL','%BYTE''%INTEGER', '%SHORT''%INTEGER','%LONG''%REAL', '%STRING'(RESTOFUCS); P(RT) ='%ROUTINE',(TYPE)(FM); P(FM) ='%FN','%MAP'; P(FPDEL) =(RT)(%NAME'),(TYPE)(%QNAME'), '%NAME','%RECORD'(%ARRAY')'%NAME'; P(LABEL) =(N),(NAME); P(ELABEL) =(N),(NAME)(APP); P(%ARRAY') ='%ARRAY',0; P(%NAME') ='%NAME',0; P(%QNAME') = '%ARRAYNAME','%NAME',0; P(FPP) ='('(FPDEL)(NAMELIST)(RESTOFFPLIST)')',0; P(RESTOFFPLIST)=(,')(FPDEL)(NAMELIST)*,0; P(ENDLIST) ='%OFPROGRAM','%OFFILE','%OFLIST','%OFMCODE',0; P(%FORMAT') ='%FORMAT',0; P(RSTMNT) ='%FORMAT'(NAME)'('(RFDEC)(RESTOFRFDECLN)')', '%SPEC'(HOLE)(NAME)(ENAME'')(MARK)'('(NAME)')', (HOLE)(DECLN)(MARK)'('(NAME)')'; P(SC) =(EXPR)(COMP)(EXPR)(RESTOFSC), '('(SC)(RESTOFCOND)')'; P(RESTOFSC) =(COMP)(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',0; P(%LN) ='%LONG','%NORMAL'; P(RESTOFBPLIST)=','(EXPR)':'(EXPR)*,0; P(CORP) ='%PERM'(TEXTTEXT),'%IOCP'(TEXTTEXT), '%MAINEP'(TEXTTEXT); P(DECLN) =(%QNAME')(NAMELIST),'%ARRAY'(%FORMAT')(ADECLN); P(ADECLN) =(NAMELIST)(BPAIR)(RESTOFARRAYLIST); P(RESTOFARRAYLIST)=','(ADECLN),0; P(OWNDEC) =(HOLE)(NAMELIST)(CONST')(MARK)(RESTOFOWNDEC)(S), '%ARRAY'(NAME)(CBPAIR)(=')(CONSTLIST) ; P(RESTOFOWNDEC)=','(HOLE)(NAMELIST)(CONST')(MARK)*,0; P(XOWN) ='%OWN','%EXTERNAL','%EXTRINSIC','%CONST'; P(CBPAIR) ='('(PLUS')(ICONST)':'(PLUS')(ICONST)')'; P(RESTOFNLIST) =','(N)*,0; P(FLIST) =(N)(RESTOFNLIST)'->'(LABEL)(RESTOFFLIST); P(RESTOFFLIST) =','(FLIST),0; P(MON) ='%STOP',(N),0; P(RESTOFSWLIST)=','(NAMELIST)(CBPAIR)*,0; P(RESTOFSS1) =':',(%IU)(SC)(RESTOFCOND)(S), (%WU)(SC)(RESTOFCOND)(S),(S); P(RESTOFIU) ='%START','%THENSTART','%THEN'(HOLE)(UI)(MARK)(ELSE'); P(RESTOFWU) ='%CYCLE','%THENCYCLE','%THEN'(UI); P(AUI) ='%AND'(UI),0; P(ELSE') ='%ELSESTART','%ELSE'(UI),0; P(ENAME'') ='_'(NAME),0; P(ENAME') ='_'(NAME)(APP)(ENAME'),0; P(BPAIR) =(CBPAIR),'('(EXPR)':'(EXPR)(RESTOFBPLIST)')'; P(CONST') ='='(+')(CONST),0; P(%SEX) ='%SYSTEM'(CHKIMPS),'%EXTERNAL','%DYNAMIC',0; P(CYCPARM) =(NAME)(APP)(ENAME')'='(EXPR)','(EXPR)','(EXPR),0; P(OWNSTMT) =(TYPE)(OWNDEC),'%RECORD'(NAMELIST)'('(NAME)')'(S), '%RECORD' '%ARRAY'(HOLE)(NAME)(CBPAIR)(MARK) '('(NAME)')'(S); P(RESTOFRFDECLN)=','(RFDEC)*,0; P(RFDEC) =(TYPE)(%QNAME')(NAMELIST), (TYPE)'%ARRAY'(NAMELIST)(CBPAIR)(RESTOFSWLIST), '%RECORD'(%ARRAY')'%NAME'(NAMELIST), '%RECORD'(NAMELIST)'('(NAME)')', '%RECORD' '%ARRAY' (HOLE) (NAMELIST) (CBPAIR) (RESTOFSWLIST) (MARK) '('(NAME)')'; P(UCS) =(NAME)(DISP),'<'(LABEL)'>','*'(DISP); P(DLB) =(N)'('(N)','(N)')',(UCS)'('(N)')'; P(DXB) =(UCS)(RESTOFUCS),(N)(RESTOFDXB); P(RESTOFDXB) ='('(N)','(N)')','('(N)')',0; P(RESTOFSI) =','(ICONST),0; P(DB) =(UCS),(N)(RESTOFUCS); P(RESTOFUCI) =(UCRR)(N)','(N),(UCRX)(N)','(DXB), (UCRS)(N)','(N)','(DB),(UCSI)(DB)(RESTOFSI), (UCSHIFT)(N)','(DB),(UCSS)(DLB)','(DB), (UCPD)(DLB)','(DLB),(UCSPEC)(N); P(DISP) ='+'(N),'-'(N),0; P(UCI) ='*'(N)','(@')(NAME)(APP)(ENAME'), '->''P'(N),(UCINM)(RESTOFUCI),'PUT_'(ICONST), 'USING*,'(N),'DROP'(N); P(RESTOFUCS) ='('(N)')',0; P(=') ='=',0; P(@') ='@',0; P(UI) =(HOLE)(NAME)(APP)(ENAME')(MARK)(RESTOFUI)(AUI), '->'(ELABEL), '%PRINTTEXT'(TEXTTEXT)(AUI), '%RETURN', '%RESULT'(ASSOP)(EXPR), '%MONITOR'(MON), '%STOP', '%EXIT'; P(SS) =(HOLE)(UI)(MARK)(RESTOFSS1), '%CYCLE'(CYCPARM)(S), '%REPEAT'(S), (N)':', (%IU)(HOLE)(SC)(RESTOFCOND)(MARK)(RESTOFIU)(S), (%WU)(HOLE)(SC)(RESTOFCOND)(MARK)(RESTOFWU)(S), (TYPE)(DECLN)(S), '%END'(ENDLIST)(S), (HOLE)(%SEX)(RT)(MARK)(%SPEC')(NAME)(FPP)(S), (CMARK)(TEXT), '%REALS'(%LN)(S), '%BEGIN'(S), '%FAULT'(FLIST)(S), '%FINISH'(ELSE')(S), '%SWITCH'(NAMELIST)(CBPAIR)(RESTOFSWLIST)(S), '%LIST'(S), (XOWN)(OWNSTMT), '%SPEC'(NAME)(FPP)(S), '%SPECIAL''%NAME'(NAME)(S), '%TRUSTED''%PROGRAM'(CHKIMPS)(S), '%REGISTER'(CHKIMPS)(NAME)(RESTOFUCS)(S), '%MCODE'(S), '%SHORT''%ROUTINE'(S), '*'(CHKIMPS)(UCI)(S), '%CONTROL'(CONST)(S), '%DEFINE'(CHKIMPS)(CORP)(S), '%RECORD'(RSTMNT)(S), (S); E