d(* APL.INC .. BEGIN *) (*---------------------------*) ,CONST  PREFIX1 = 60;  PREFIX2 = 62; (* PREFIX FOR CDC CODES *) X MAXVARNAMLEN = 10;  MAXINPUTLINE = 132;  INPUTARRAYSIZE = 134;  NUMOFMSG = 100;  ERRMSGSIZE = 80; L(*---------------------------*) TYPE  MLrng = 1..50; x PACSTR = PACKED ARRAY[1..MAXVARNAMLEN] OF 0..8191;  TKNSET = (FORMRES,FORMARG,GLOBVAR,MONADOPER, @ REDUCTOPER,DYADOPER,SPECOPER,CONSTANT,  STATEND);  REALRCD = RECORD l REALVAL: REAL;  NEXTVALUE: ^REALRCD; 4 END;  VARRCD = RECORD  VARNAME: PACSTR; (* V1 *) ` FUNRCDPTR: ^FUNRCD; (* V2 - FTAB *) ARGRCDPTR: ^ARGRCD; (* V3 - VTAB *) ( DEFARGRCDPTR:^PARRCD; NEXTVARRCDPTR: ^VARRCD; END; T ARGRCD = RECORD INTERMEDRESULT: BOOLEAN;  DIMENSIONS: INTEGER; FIRSTDIMEN: ^DIMRCD; FORWARDORDER: BOOLEAN; H FIRSTVALUE: ^REALRCD; NEXTARGRCDLINK:^ARGRCD  END; t TKNRCD = RECORD  NXTTKN: ^TKNRCD; < CASE NOUN : TKNSET OF (* P *)  FORMRES,FORMARG,GLOBVAR: (* VTAB *)  (VARRCDPTR: ^VARRCD); h MONADOPER: (MONINDX:INTEGER);  REDUCTOPER: (REDINDX:INTEGER); 0 DYADOPER: (DOPINDX:INTEGER);  SPECOPER: (CHARINDX:INTEGER);  CONSTANT: (ARGRCDPTR: ^ARGRCD); \ STATEND: (ENDADJ:INTEGER);  END; $ VFNRCD = RECORD  NEXTSTMNT:^TKNRCD;  NEXTVFNRCDPTR:^VFNRCD; P STATLABEL:PACSTR  END;  FUNRCD = RECORD | FUNCNAME: PACSTR; (* F1 *)  ARITY: (NILADIC,MONADIC,DYADIC); (* F2 *) D RESULT : BOOLEAN; (* TRUE = EXPLICIT *) (* F3 *)  RESULTNAME: PACSTR; (* F4 *)  LEFTARG: PACSTR; (* F5 *) p RIGHTARG: PACSTR; (* F6 *)  FIRSTATEMENT:^VFNRCD; 8 NEXTFUNRCDPTR : ^FUNRCD;  NUMOFSTATEMENTS: INTEGER;  END; d PARRCD=RECORD  PTRVAL:^ARGRCD; (* SD1 AND SD2 *) , LASTPARM:^PARRCD; (* LINK TO LAST *)  (* SD1 OR SD2 *)  END; X DIMRCD = RECORD  NEXTDIMEN: ^DIMRCD;  DIMENLENGTH: INTEGER;  END;  OTORRCD = RECORD L OPINDEX: INTEGER;  OPSYMBOL: INTEGER;  END; x OANDRCD=RECORD  OPERPTR:^ARGRCD; (* SVAL *) @ LASTOPER:^OANDRCD; (* LINK TO LAST SVAL *)  END;  SUBRCD=RECORD (* SF *) l CALLEDSUBR:^FUNRCD; (* S1 *) TKNSUBCALL:^TKNRCD; (* S2 *) 4! STATSUBCALL:^VFNRCD; (* S3 *) ! LASTSUBRPTR:^SUBRCD; (* LINK TO LAST SF *) ! END; `" OTYPRCD = ARRAY[1..16] OF OTORRCD; " VARPTRTYPE = ^VARRCD; (# ARGPTRTYPE = ^ARGRCD; # TKNPTRTYPE=^TKNRCD; # FUNPTRTYPE=^FUNRCD; T$ REALPTRTYPE=^REALRCD; $ APLCHARSET=(ASYMBOL, BSYMBOL, CSYMBOL, % DSYMBOL, ESYMBOL, FSYMBOL, GSYMBOL, % HSYMBOL, ISYMBOL, JSYMBOL, KSYMBOL, LSYMBOL, MSYMBOL, NSYMBOL, % OSYMBOL, PSYMBOL, QSYMBOL, RSYMBOL, SSYMBOL, TSYMBOL, USYMBOL, H& VSYMBOL, WSYMBOL, XSYMBOL, YSYMBOL, ZSYMBOL, & ONESYMBOL, TWOSYMBOL, THREESYMBOL, FOURSYMBOL, FIVESYMBOL, ' SIXSYMBOL, SEVENSYMBOL, EIGHTSYMBOL, NINESYMBOL, ZEROSYMBOL, t' COLON, RIGHTARROW, LEFTARROW, SMALLCIRCLE, PERIOD, LEFTPAREN, ' RIGHTPAREN, LEFTBRACKET, RIGHTBRACKET, SEMICOLON, QUADRANGLE, <( SPACE, ( PLUS, MINUS, TIMES, DIVIDE, ASTERISK, IOTA, RHO, COMMA, TILDE, ) EQUALS, NOTEQUAL, LESSTHAN, LESSOREQUAL, GREATEROREQUAL, h) GREATERTHAN, ANDSYMBOL, ORSYMBOL, ) CEILING, FLOOR, LARGECIRCLE, FORWARDSLASH, 0* DOUBLEQUOTE, NEGATIVE, QUESTIONMARK, OMEGA, EPSILON, * UPARROW, DOWNARROW, ALPHA, UNDERSCORE, DEL, DELTA, * SINGLEQUOTE, EASTCAP, WESTCAP, SOUTHCAP, NORTHCAP, \+ IBEAM, TBEAM, VERTICALSTROKE, BACKWARDSLASH); +(*---------------------------*) $,VAR , QQFLAG:integer; QQLEV:integer; , XCOLONSYM,XRIGHTARROW,XLEFTARROW,XLITTLECIRCLE,XPERIOD, P- XLEFTPAR,XRIGHTPAR,XLEFTBRACKET,XRIGHTBRACKET, - XSEMICOLSYM,XQUADSYM:INTEGER; . APLCHR:ARRAY[APLCHARSET] OF INTEGER; |. APLSTMT:ARRAY[1..INPUTARRAYSIZE] OF INTEGER; . DIGITS:ARRAY[ONESYMBOL..ZEROSYMBOL] OF INTEGER; D/ ERRMSG:PACKED ARRAY[1..NUMOFMSG,1..ERRMSGSIZE] OF CHAR; / APLFILE:TEXT; 0 MOPTAB, DOPTAB, REDTAB, CHARTAB, SPECTAB:OTYPRCD; p0 SAVELABEL:PACSTR; 0 NAME: PACSTR; 81 NEWTKNPTR, OLDTKNPTR, HOLDTKNPTR, SAVETKNPTR: ^TKNRCD; 1 TESTFUNCPTR, NEWFUNRCDPTR, OLDFUNRCDPTR: ^FUNRCD; 2 NEWVARRCDPTR, OLDVARRCDPTR: ^VARRCD; d2 LEFTVALPTR,RIGHTVALPTR,VALPTR:^REALRCD; 2 NEWREALRCD, NEWVALPTR: ^REALRCD; ,3 NEWDIM: ^DIMRCD; 3 DIMPTR,NEWPTR,LEFTDIMPTR,RIGHTDIMPTR:^DIMRCD; 3 VARPOINTER:^VARRCD; X4 OLDVFNRCDPTR, NEWVFNRCDPTR:^VFNRCD; 4 NEWARGRCDLINK, OLDARGRCDLINK: ^ARGRCD; 5 POSITION:INTEGER; 5 LINELENGTH:INTEGER; 5 CODE,COLCNT:INTEGER; L6 FUNCSTATEMENTS:INTEGER; 6 TKNERROR, FIRSTFUNCTION:BOOLEAN; 7 YESLONGLINE,HASLABEL:BOOLEAN; x7 SWITCH, FUNCTIONMODE, TKNSWITCH, TRUEIDEN:BOOLEAN; 7 OPERTABPTR:^OANDRCD; (* SV *) @8 PTRLASTOPER:^OANDRCD; 8 SUBRCDPTR:^SUBRCD; 9 RPARPTR:^PARRCD; (* P1 *) l9 LPARPTR:^PARRCD; (* P2 *) 9 VFNRCDPTR:^VFNRCD; (* NL *) 4: HOLD:^TKNRCD; (* HOLDS LAST SYMBOL *) :(*---------------------------*) :(* APL.INC .. END *)