Trailing-Edge
-
PDP-10 Archives
-
-
There are no other files named in the archive.
COMMENT VALID 00021 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 Definition of Terms
C00008 00003 MUMBLE Classes
C00015 00004 MUMBLE Declarations
C00021 00005
C00024 00006 MUMBLE Statements
C00031 00007 MUMBLE Expression Parsers
C00033 00008 MUMBLE Main Expression Parser
C00041 00009 MUMBLE Compile-time type checking productions
C00043 00010 MUMBLE Boolean Expressions
C00045 00011 MUMBLE Leap constructs
C00049 00012
C00054 00013 MUMBLE Loop Statements, array calcs, proc names, etc
C00058 00014 MUMBLE backtracking, memory and loc, record fields
C00062 00015 MUMBLE In-line code
C00065 00016 MUMBLE Conditional Compilation Statements
C00071 00017 MUMBLE Macro DEFINE handling
C00074 00018 MUMBLE print statement
C00075 00019 MUMBLE dynamic procedure binding, etc.
C00080 00020 MUMBLE Error productions
C00085 00021 MUMBLE More error productions
C00093 ENDMK
C;
COMMENT Definition of Terms
MUMBLE
You shall be sent where no son of man
Or god shall see you again,
With earth behind you, on an eagle's mound,
Facing Hel, for ever sit.
Skirnir's Ride
;
ASG LEAPSW 1
ASG GLOBSW 1
<SYMBOLS>
; SEMI _ LARW , COMA ) RPRN ( LPRN INTER UNION - MINUS { SETO ~ SETC
[ LBR ] RBR & ANDD ^ UPRW : COL + PLUS * TIMS / SLSH . DOT ' ASSOC
| VERT XOR EQV < LES > GRE = EQU NEQ GEQ LEQ
INF IN SWAP % PRC @ INDR ? QUES
<TERMINALS>
| I < > = + - [ ] & ^ : * / . ; _ , ) ( % @ ?
IVB ISV IAR ILB ICN IIT IST ITV IPR STC ICTXT IRC
<RESERVED-WORDS>
RETURN ELSE IN DATUM WHILE DO THEN CASE OF STEP SIMPLE
MUMBLE FOLLOWING WERE INSTALLED FOR EXPORTATION PUPOSES;
NEQ GEQ LEQ SETO SETC SWAP UNION INTER ASSOC LISTO LISTC
LOP COP CVI CVN LENGTH PNAMES PRELOADWITH PRESETWITH BIND BUCKETS
STRINGSPACE SYSTEMPDL STRINGPDL ARRAYPDL LIBRARY
SOURCEFILE LOADMODULE NEWITEMS REQUIRE NEXT NEEDNEXT VERSION
ALLGLOBAL OVERLAPOK VERIFYDATUMS ILDB IDPB LDB DPB IBP BBPP
UNTIL BEGIN STARTCODE QUICKCODE IF GO TO GOTO COMMENT PROCEDURE ARRAY
REAL SET EXTERNAL OWN VALUE FORTRAN FORWARD END FOR NEW MATCHING
SUCCEED FAIL CONTEXT DONE DIV MOD FIRST SECOND THIRD PUT REMOVE
REMEMBER FORGET RESTORE KILLSET NULLCONTEXT SAMEIV INCONTEXT
INTEGER BOOLEAN ITEM ITEMVAR STRING INF
SAFE FROM NOT XOR AND OR ABS LABEL INTERNAL REFERENCE
RECURSIVE DEFINE REDEFINE EVALDEFINE EVALREDEFINE ASSIGNC NOMAC CVPS LET
EQV SUCH THAT DELETE PHI NIL ISTRIPLE MAKE ERASE FOREACH
TRUE FALSE NULL LSH ROT LAND LOR LNOT ENTRY ASH
MAX MIN SHORT LIST AFTER BEFORE CVSET CVLIST DELIMITERS REPLACEDELIMITERS
UNSTACKDELIMITERS NULLDELIMITERS
IFC IFCR THENC ELSEC ENDC WHILEC CASEC FORC FORLC DOC OFC STEPC UNTILC CVMS
ALL PROTECTACS ASSIGN APPLY
NOWSAFE NOWUNSAFE ITEMSTART
DECLARATION EXPRTYPE
GLOBAL SEGMENTNAME SEGMENTFILE
MESSAGE
CONTINUE MEMORY LOCATION
SPROUT PROCESSES DEPENDENTS
INITIALIZATION INTERROGATE CAUSE
CHECKTYPE RESERVED BUILTIN LEAPARRAY
PROPS CLEANUP POLL POLLINGINTERVAL ACCESS
REFITEM SETCP SETIP SPROUTDEFAULTS ERRORMODES ARGLIST
RECORDPOINTER RECORDCLASS NEWRECORD
NULLRECORD ANYCLASS
COMPILERSWITCHES
PRINT CPRINT CONOK LONG
<NON-TERMINAL-SYMBOLS>
PDEC BLAT S SICL LHS FCALL PCALL SE ST BE SF
STID LDAT TR BP SP P SIP IP SIFC EIFC LIP
DS AE PDNO ARDEC E ARID EN CASEX T
DPL ASSDO WHILC ELHS BT FORCA
DOL CRAP OPC LSP BLKFRC
CTRU1 CTRU2 CFLS1 CFLS2 DUMMY NOCOND EOFILE NOMORE
WDPL CDPL FRDPL FLDPL OPPS MPRO
MUMBLE Classes ;
<CLASSES>
@ALGLP ITEM ITEMVAR SET LABEL REAL INTEGER
STRING BOOLEAN LIST KILLSET CONTEXT
@HEL ITEM ITEMVAR MUMBLE NEW DATA TYPES;
@XO INTERNAL SAFE EXTERNAL OWN RECURSIVE FORTRAN FORWARD SHORT SIMPLE
MATCHING GLOBAL MESSAGE CONOK LONG
@VAL REFERENCE VALUE QUES
@UNOPE LNOT ABS + -
@PM + - EQV LAND LOR
@ASOP ' *
@TD * % / LSH ROT DIV MOD ASH &
@RL < > = MUMBLE RELATIONS;
@MX MAX MIN
@ALG STRING REAL INTEGER BOOLEAN SET LIST CONTEXT
@DCL SET ITEM ITEMVAR LABEL REAL INTEGER STRING LIST CONTEXT
BOOLEAN PROCEDURE INTERNAL SAFE EXTERNAL OWN DEFINE
REDEFINE EVALDEFINE EVALREDEFINE NOMAC
RECURSIVE FORWARD FORTRAN REQUIRE PRELOADWITH PRESETWITH SHORT
LET MATCHING
GLOBAL MESSAGE
PROTECTACS SIMPLE CLEANUP SPROUTDEFAULTS
RECORDCLASS RECORDPOINTER LONG
@E E BE AE
@IRCC IRC ANYCLASS IPR
MUMBLE
@SETOP
;
@REQ PNAMES SYSTEMPDL STRINGPDL STRINGSPACE ARRAYPDL
NEWITEMS VERSION LIBRARY LOADMODULE SOURCEFILE DELIMITERS
REPLACEDELIMITERS UNSTACKDELIMITERS NULLDELIMITERS
ALLGLOBAL SEGMENTNAME SEGMENTFILE
PROCESSES POLLINGINTERVAL BUCKETS ITEMSTART ERRORMODES
COMPILERSWITCHES OVERLAPOK VERIFYDATUMS
@CALL PCALL FCALL
@LOOP ASSDO FORCA WHILC
@NXT STEP UNTIL WHILE : TO FOR
@END UNTIL END ELSE ;
@IN IN FROM
@OTH ; DO , ) END ELSE UNTIL
@MAKER MAKE ERASE
@PUT PUT REMOVE
@SUCCEED SUCCEED FAIL
@REMEMB REMEMBER FORGET RESTORE
@BEAFT AFTER BEFORE
@TFAL INF NULL TRUE FALSE
@FUNC1 ISTRIPLE LOP CVN LENGTH ILDB LDB
@FUNC2 FIRST SECOND THIRD COP CVI
@FUNCL FIRST SECOND THIRD ISTRIPLE
@CVSET CVSET CVLIST
@PRO1 IDPB DPB IBP
@AR T P BP BT BE
@DC DO ,
@I I IVB ISV IAR ILB ICN IIT IST ITV IPR STC IRC ICTXT
@IARY IAR ILB
@ISTO IVB ISV IST ITV
@IASS IIT ITV
@IALG IVB ISV ICN STC
@FUNC ISTRIPLE FIRST SECOND THIRD LOP COP CVI CVN LENGTH ILDB LDB BBPP
CVSET CVLIST
@IDC IVB ISV IAR ILB ICTXT ICN IIT IST ITV IPR STC
@STA FOR WHILE DATUM MAKE ERASE DONE PUT REMOVE DELETE REMEMBER FORGET RESTORE
MEMORY SUCCEED FAIL PROPS IRC
@EXS ( LNOT ABS + - NOT [
@STCO STARTCODE QUICKCODE
@BEG BEGIN STARTCODE QUICKCODE
@EDN AFTER ARDEC ARID ASSIGNC BBPP BEFORE BEGIN CASE CASEC CASEX CDPL COL COP CVI
CVLIST CVN CVSET DATUM DELETE DOC DPB DPL EIFC ELHS ELSE FCALL FIRST
FLDPL FOR FOREACH FORGET FROM FRDPL IBP IDPB IFC IFCR CTRU1 CFLS1 CTRU2
INCONTEXT
CFLS2 IN ILDB ISTRIPLE LARW LDAT LDB LENGTH LHS LIP LOP LSP NEW OF OFC PCALL
PROPS QUICKCODE REMEMBER REMOVE REQUIRE RESTORE RETURN SECOND SIP
STARTCODE STEP STID THEN THENC THIRD TO UNTIL WDPL WHILE WHILEC : [ ,
PROTECTACS ASSIGN APPLY MEMORY SPROUT CAUSE INTERROGATE EXPRTYPE
PDEC REFITEM ARGLIST IRC REFERENCE PRINT CPRINT
@LCON @EDN AND DATUM IF IN MAX MIN NOT OR
( < > =
@EDR DO DOC ELSE ELSEC END ENDC FOR FROM IN OF OFC STEP STEPC THEN THENC TO UNTIL
UNTILC WHILE , ) ] ; @ ( : LISTC ~ @REQ MESSAGE
@RCON @EDR AND CASE EQV OR > < = - +
@LOWER + - * % / & = < > LNOT ABS EQV LAND LOR LSH ROT DIV ASH
MOD MAX MIN
@MKSU NOWSAFE NOWUNSAFE
@TERMINAL
MUMBLE JFR 7-4-76 SO CHECKTYPE(LEAPARRAY) WORKS;
@RSTDC RESERVED BUILTIN LEAPARRAY
@RESERVED
@CONS ICN STC
@IDQ IVB ISV IAR ILB IST ITV IPR ICTXT
@IDD @RESERVED @IDQ IIT I IRC
@C1 , ; ) [ ]
MUMBLE
@C2 UNTIL WHILE IF CRAP
@STM SIFC BEGIN STARTCODE QUICKCODE CASEX PDEC ASSDO FORCA WHILC
;
MUMBLE
@GAR GO GOTO FOR WHILE DATUM MAKE ERASE PUT DELETE DONE SUCCEED FAIL
BEGIN IF FOREACH IDPB DPB CASE DO RETURN REMEMBER FORGET RESTORE
DEFINE REDEFINE EVALDEFINE EVALREDFINE NOMAC NEXT NEEDNEXT
GLOBAL LET
;
@SEND END ELSE ; UNTIL
MUMBLE
@LPR NEW RETURN CASEX DELETE ISTRIPLE FIRST SECOND THIRD
LOP COP CVI CVN LENGTH ILDB LDB , PCALL FCALL CVSET CVLIST
PRINT CPRINT
;
@SIP LIP SIP
@THT THEN THENC
@CONBG IFC IFCR WHILEC CASEC FORC FORLC
@DOCA DO DOC
MUMBLE #XJ JFR 7-4-76 ADD IRC SO DECLARATION(record!class name) WORKS;
@LDC IVB ISV IAR ILB IST ITV IPR I IRC
@STEPCA STEP STEPC
@UNTLCA UNTIL UNTILC
MUMBLE
@OFCA OF OFC
;
@CTRUE CTRU1 CTRU2
@CFALSE CFLS1 CFLS2
@EQC LARW EQU
@QEND END ;
@QBEG BEGIN STARTCODE QUICKCODE CASEX
@REFXX REFERENCE REFITEM ARGLIST
MUMBLE Declarations;
<PRODUCTIONS>
BB0: ENTRY EXEC ENTENT SCAN ENT
BEGIN BLAT BEGIN EXEC ENTOUT LPNAME DWN SCAN BDS #Q1
ENT: ; SCAN BB0
ENT0: SG EXEC ENTMAK SCAN ENT1
ENT1: , SCAN ENT0
ENT2: ; SCAN BB0 #Q2
MUMBLE OUTER BEGIN-END PAIR IS ALWAYS A BLOCK! ;
BDS: @BEG STC @BEG EXEC BLNAME SCAN BDS1
BDS1: @BEG SG EXEC BLOCK KLSTG CLRSET DS0 #TRAP
DS: @BEG STC @BEG EXEC BLNAME SCAN DS2
DS2: @BEG @DCL EXEC BLOCK CLRSET DS0 #DS3
DS3: SG EXEC OFFDEF S0
DS0:
@ALGLP EXEC @ALGLP TYPSET SCAN D1
PDEC @VAL PDEC EXEC @VAL VALSET SCAN DS0
@XO SCAN ZDS2
PROCEDURE SCAN TYP
DEFINE EXEC MACOFF DLMPSH DPSHBT
SCAN ^DFR ZDS1
REDEFINE EXEC SETRDF MACOFF DLMPSH DPSHBT
SCAN ^DFR ZDS1
EVALDEFINE EXEC SETEDF DLMPSH DPSHBT SCAN ^DFR ZDS1
EVALREDEFINE EVALDEFINE EXEC SETRDF ^EDF ZDS1
NOMAC EXEC MACOFF SCAN ^NM1 ZDS1
LET EXEC MACOFF TRIGOF SCAN ^LTR DS0
REQUIRE SCAN ^RQQ DS0
PRELOADWITH EXEC LDYBEG SCAN ^CONX LW1
PRESETWITH EXEC LDYSET SCAN ^CONX LW1
CLEANUP SCAN 2 CLN
PROTECTACS SCAN ^CONX PACL
SPROUTDEFAULTS SCAN ^CONX SDSS
BEGIN RECORDCLASS SCAN RCD
RECORDPOINTER INTEGER SCAN 2 RPD
; SCAN DS0
STC EXEC SCOMM SCAN DS0
@BEG SG EXEC ENDDEC S0 #XXQQ
RCD: @IDD PDEC EXEC RCBIT0 PRDEC RCCREM
SCAN PD0 #QRC1
ZDS1: SG SCAN DS0
ZDS2: @XO @DCL @DCL EXEC @XO XOWSET DS0
GLOBAL SG SG EXEC ENDDEC GLBSET S01 #XXQQ
D1: @XO EXEC @XO XOWSET SCAN D1
@ALG @HEL EXEC @HEL HELSET SCAN TYP
@ALG ARRAY ARRAY SCAN D2
@ALGLP SG SG TYP
D2: SG ITEMVAR EXEC HELAR1 SCAN TYP
SG ITEM ARDEC EXEC HELAR2 SCAN DA1
TYP: ARRAY SCAN TYP1
PROCEDURE SCAN TYP1
TYP1: BEGIN PROCEDURE @IDD BEGIN PDEC
EXEC KLSET PRDEC SCAN PD0
ARRAY @IDD ARDEC @IDD
EXEC STARY DA1
PDEC PROCEDURE @IDD PDEC @IDD
EXEC PRSET IDL
IDL: @DCL SCAN QIDC
@IDD EXEC ENTID SCAN IDL1 #Q4
IDL1: , SCAN IDL
; EXEC CLRSET SCAN DS0
PDEC ( PDEC EXEC DFVPV0 SCAN ^CONX DFVP
PDEC ) PDEC EXEC TWPR2 SCAN PD1 #Q5
PD0: ( EXEC CLRSET SCAN DS0
PDEC SG EXEC TWPR1 PD1 #TRAP
PD1:
RECORDCLASS PDEC SG PDEC SG RCD1
RECORDCLASS PDNO SG PDEC SG RCD1
PDEC ; PDEC EXEC ENDPR KOUNT1 SCAN S1
PDNO ; EXEC ENDPR FWUNDO SCAN DS0 #Q7
CLN: IPR , EXEC CLNSET SCAN 2 CLN
IPR ; EXEC CLNSET SCAN DS0
DFVP: SG ) EXEC DFVPV SCAN IDL1 #Q4
RCD1: PDEC [ PDEC SCAN 2 RCD2 #RCD3
RCD2: PDEC IPR ] PDEC EXEC URCHLR SCAN RCD3 #QRC2
RCD3: PDEC ; EXEC ENDRC SCAN DS0 #QRC2
RPD: ( @IRCC EXEC SETIRP @IRCC TWDIRC
SCAN 2 RPD1 #QRP1
RPD1: , @IRCC EXEC @IRCC TWDIRC SCAN 2 RPD1
) SG SG D1 #QRP1
PACL: SG , EXEC PACDO SCAN ^CONX PACL
SG ; EXEC PACDO SCAN DS0 #Q8
SDSS: E ; EXEC SDFLTS SCAN DS0 #XXQQ
RQQ:
REQUIRE @REQ REQUIRE
EXEC DEFZRO @REQ RQSET SCAN RQ1
IPR SCAN RQ5
SG ^CONX RQQQ #TRAP
RQQQ:
E SOURCEFILE SCAN RQ3
E @REQ EXEC @REQ RQSET SCAN RQ1 #RQQ2
RQQ2:
E MESSAGE EXEC TYPMSG SCAN RQ1 #Q10
RQ1: REQUIRE ; EXEC CLRSET SCAN
REQUIRE , REQUIRE SCAN RQQ #Q10
RQ3: REQUIRE E SOURCEFILE , REQUIRE
EXEC REQERR SCAN RQQ
REQUIRE E SOURCEFILE ;
EXEC SRCSWT SCAN RQ4 #Q11
RQ4: SG EXEC SRCCHK
RQ5: IPR INITIALIZATION IPR SCAN RQ6
IPR SG IPR EXEC SCNBAK ^CONX RQQQ #XXQQ
RQ6: [ SCAN ^CONX RQ7
IPR SG SG EXEC REQINI RQ1 #XXQQ
RQ7: IPR [ E ] EXEC RQINIX SCAN RQ1 #XXQQ
LW1: [ E ] EXEC LDYREP SCAN ^CONX LW1
LW: E , EXEC LDYNO SCAN ^CONX LW1
E ; EXEC LDYNO CLRSET SCAN DS0 #Q12
DA0: ARDEC ; SG SG EXEC CLRSET DS0
ARDEC , SG ARDEC SG DA1 #Q13
DA1: PDEC ARDEC SG PDEC SG IDL
DA2: @IDD EXEC ENTARY SCAN DA3 #Q4
DA3: , SCAN DA2
[ SCAN ^NEX AR0 #Q15
AR0: ARDEC E : E , ARDEC EXEC ARRSUB SCAN ^NEX AR0
ARDEC E : E ] ARDEC EXEC ARRSUB ARRDEC SCAN 2 DA0 #Q16
LTR: @IDD EXEC LETSET SCAN 2 LT1 #Q4
LT1: SG = @RESERVED EXEC LETENT SCAN LTR1 #XXQQ
LTR1: , EXEC MACOFF SCAN LTR
; EXEC TRIGON SCAN #Q23
MUMBLE Statements;
S0: BLAT BEGIN SG EXEC UINCLL S1
@STCO SG EXEC @STCO CODNIT COD
S1: SG EXEC CAPOLL LSTKCK S01
S01: @IDQ SCAN SID
@STA S1Q
@BEG EXEC DWN SCAN DS
IF SCAN ^BEX IFQ
CASEX ELSE CASEX EXEC CASEME SCAN S01 #S02
S02: @END S @END S9
GO SCAN G1
GOTO GO SCAN G2
FOREACH BLKFRC FOREACH
EXEC DWN1 FRC0
GLOBAL EXEC GLBSET SCAN S01
@PRO1 SCAN ^EXD PROS
CASE SCAN ^EX CSES
DO DOL EXEC DOLOOP KOUNT1 SCAN S1
PRINT SCAN %PRT
CPRINT SCAN %CPRT
RETURN SCAN RT0
NEEDNEXT EXEC NEXTR SCAN S1
NEXT SCAN NXTX
CONTINUE SCAN CTUX
STC EXEC SCOMM SCAN S1
REQUIRE SCAN ^RQQ S1
CASEX [ SCAN ^CONX CASD
OPPS BEGIN [ SCAN ^CONX CASD
@MKSU SCAN 2 MS
APPLY PCALL APPLY SCAN %EV1
ASSIGN SCAN %BP1
SPROUT SCAN FK
CAUSE SCAN ^EXD %CS2
INTERROGATE PCALL SCAN ^EXD %IR2
POLL S EXEC INMAIN EPOLL SCAN S9
SETCP SCAN SIC
SETIP SCAN SIC
ASSIGNC ASSIGNC ^ASG SS1
I EXEC UNDEC SCAN USID #Q24
SS1: SG SCAN S01 #TRAP
S1Q: FOR SCAN S1
WHILE EXEC WHIL1 KOUNT1 SCAN ^BEX WHG
DATUM LDAT EXEC GLBST2 SCAN LDA
@MAKER EXEC @MAKER MKSET SCAN ^EX1 FRG
@PUT SCAN ^EX1 PT0
DELETE EXEC GLBST2 SCAN ^EXD DEL
@REMEMB SCAN RFR
PROPS EXEC GLBST2 SCAN ^EXD SPRP
@SUCCEED S EXEC @SUCCEED SUCCEX SCAN S9
MEMORY SCAN ^MEMX SID
IRC SCAN ^RCF SID
DONE SCAN DNEX #XXQQ
NXTX: NEXT STC S EXEC NEXTBN SCAN S9
NEXT SG S SG EXEC DNEXT S9 #XXQQ
DNEX: DONE STC S EXEC DONEBN SCAN S9
DONE SG S SG EXEC DDONE S9 #XXQQ
CTUX: CONTINUE STC S EXEC CONTBN SCAN S9
CONTINUE SG S SG EXEC CNTNUE S9 #XXQQ
RT0: @OTH S @OTH EXEC RESLT1 S9
( RETURN SCAN ^EX RESL #XXQQ
RESL: RETURN @E ) S EXEC @E ECHK RESULTS SCAN S9 #Q30
G1: GO TO GO SCAN G2
G2: GO ILB S EXEC TRA SCAN S9 #Q32
SID: FOR @ISTO _ FORCA LHS
EXEC FORBG TWID10 SCAN ^NEX FOR1
@ISTO _ LHS EXEC TWID10 SCAN ^EX STO
@IARY [ ARID EXEC ARYIDX SCAN ^ARY SID
IPR ( PCALL EXEC RDYCAL SCAN ^EX PARM
IPR SG S SG EXEC RDYCL1 ISUCL1 PRST S9
ILB : EXEC ENTLAB APOLL KOUNT2
SCAN S1
IST [ EXEC REFINF SCAN ^EX REP0
@ISTO SCAN ^EX STO
ICTXT COL SCAN ^EX1 LCEL
I SG USID #XXQQ
S9: SIFC S ELSE EXEC IFLS1 SCAN S1
OPPS S SG SG EXEC ERR105 FUSH
S8: BEGIN S ; BEGIN SCAN S1
SIFC S ELSE S @SEND S @SEND
EXEC IFLS2 S9
SIFC S @SEND S @SEND EXEC IFNLS S9
BLAT BEGIN S END S EXEC QREM2 UP2 DONES OKEOF
SCAN FIN
BEGIN S END S EXEC QREM2 UP2 SCAN S7
@LOOP S @SEND S @SEND EXEC LOPPS KOUNT1 FR9
DOL S UNTIL EXEC CNFXP SCAN ^BEX DOLS
CASEX S ; CASEX EXEC CASEMT KOUNT1 SCAN S1
CASEX S END CASEX EXEC CASEMT CASEND SCAN S7
PDEC S ; EXEC PRUP SCAN DS0 #Q34
S7: S STC S EXEC NAMCHK SCAN S9
CASEX STC S EXEC NAMCHK SCAN S9
CASEX SG S SG S9 #S9
FR9: BLKFRC S SG S SG EXEC UP2 S9 #S9
FIN: S STC EXEC NAMCHK OKEOF SCAN FIN1
S SG SG FIN1 #FIN1
FIN1: EOFILE
SG EXEC OKEOF SCAN FIN1 #FIN1
MS: @MKSU IAR , @MKSU EXEC @MKSU DOSFTY SCAN 2 MS
@MKSU IAR SG S SG EXEC @MKSU DOSFTY S9 #Q35
MUMBLE Expression Parsers;
EXD: ( SCAN EX #Q36
EX: SG ^EX1 EX22
EX22: TR SG P SG EXEC ISIT ^P2 EX22
BE SG E SG EXEC EXPOP
SG #TRAP
BEX: SG ^EX1 BX2
BX2: BE SG
E SG BE SG EXEC BOOP
TR SG P SG EXEC ISIT ^P2 BX2 #Q38
CONX: SG ^EX CX1
CX1: CFLS1 E SG
E SG EXEC CHKCON #Q39
NEX: SG ^EX NEX1 #TRAP
NEX1: ( E @NXT P @NXT EXEC ER40 TWID10 ^P2 NEX1
( BE @NXT ( BE ) @NXT
EXEC ER40 TWID10 ^BP4 NEX1
SG @E @NXT EXEC @NXT WAIT SCAN NEX2 #NXQ
NEX2: WHILE SG ^BEX NEX1 #NEX
NXQ: SG
MUMBLE Main Expression Parser;
EX1: @IDC SCAN XID
@EXS SCAN EX1
@FUNCL EXEC GLBST2 SCAN ^EXD RTN
@FUNC SCAN ^EXD RTN
IF EXEC CHKLEP SCAN ^BEX EIF
@TFAL P EXEC @TFAL TCON SCAN P2
DATUM EXEC GLBST2 SCAN ^EDAT XID
{ SIP SCAN BRK1
PHI SP EXEC LPPHI SCAN SF1
NIL SP EXEC STKNIL SCAN SF1
DEPENDENTS SCAN 3 DPS1
NEW EXEC GLBST2 SCAN NW1
LISTO LIP SCAN BRK2
? SCAN 2 IPQ
BIND SCAN 2 IP0
REMOVE ALL REMOVE EXEC REMAST SCAN EX1
PROPS EXEC GLBST2 SCAN ^EXD PRP
SAMEIV SCAN 6 SIV
REFITEM EXEC GLBST2 SCAN 2 RFI
REFERENCE SCAN 2 RFI
GLOBAL EXEC GLBSET SCAN EX1
MESSAGE EXEC MESCL SCAN EX1
MEMORY SCAN ^MEMX XID
IRC SCAN ^RCF XID
LOCATION SCAN LOCX
APPLY FCALL APPLY SCAN %EV1
INTERROGATE FCALL SCAN ^EXD %IR2
ARGLIST SCAN AGL
I EXEC UNDEC SCAN UXID
CASE EXEC CHKLEP SCAN ^EX CSEX
@SUCCEED ITV EXEC @SUCCEED SUCCEX ONEITV SCAN XIF
ICTXT SCAN ECEL
NULLCONTEXT EXEC NLCNXT SCAN
INCONTEXT SCAN ^EXD NCXT
CVMS SCAN ^CV1 CV2
CVPS SCAN ^CVP1 XID
NEWRECORD SCAN 3 NRCD
NULLRECORD IVB EXEC NLLREC SCAN XID
DECLARATION SCAN ^CV1 DL1
EXPRTYPE SCAN DE1
CHECKTYPE EXEC SPRZER SCAN CK0 #Q41
DE1: ( EXEC DCLBEG SCAN ^EX1 DE2
DE2: EXPRTYPE @E ) ICN EXEC @E ECHK DCLEND DCLNT1
SCAN XID #Q114
MUMBLE %DS% 2! JFR 8-21-76 added DL1A;
DL1: @LDC ICN EXEC DCLNT2 SCAN DL2
@RESERVED ICN EXEC @RESERVED DCLNT3 SCAN DL2 #Q107
DL2: ) SCAN XID #XXQQ
CV1: ( EXEC MACOFF SCAN
CV2: I STC EXEC STCAT SCAN CV3 #XXQQ
CV3: ) SCAN XID #Q106
CVP1: ( EXEC INTSCN SCAN CVP2 #Q119
CVP2: ICN STC EXEC CVPFRM SCAN CVP3 #Q120
CVP3: ) SCAN #XXQQ
XID: @EDN @IALG @EDR @EDN E @EDR
@ISTO _ XSTO #XIE
XSTO: ICTXT COL @ISTO _ XST1 #XST2
XST1: @IALG SG E SG
@IASS SG AE SG EXEC STITM
IST SG AE SG EXEC STSET #Q115
XST2: @ISTO _ ELHS EXEC TWID10 SCAN ^EX ESTO
XIE:
@IARY [ ARID EXEC ARYIDX SCAN ^ARY XID
ICTXT COL @I SG XST1
@IALG SG P SG P2
XIF:
@IASS SG IP SG EXEC STITM IP2
IST SG SP SG SF0
IPR ( FCALL EXEC RDYCAL SCAN ^EX PARM
@CALL @IDC @OTH @CALL E @OTH
IPR SG P SG EXEC RDYCL1 ISUCL1 TYPR1 PAM2
ICTXT SG ECEL
@REMEMB IAR @EDR @REMEMB E @EDR
INCONTEXT IAR @EDR INCONTEXT IAR @EDR
NEW @IARY )
REFITEM @IARY )
I SG UXID #Q42
NW1: ( SCAN ^EX NW2
NEW SG IP SG EXEC NEWNOT IP2
NW2: NEW SG ) IP EXEC NEWART SCAN IP2 #Q43
P2: @LCON P @RCON @LCON E @RCON E2
P ^ SCAN EX1
P [ STID EXEC SVSTR TWID10 SCAN ^NEX BSTR
E @PM P SG E @PM T SG T2
@UNOPE P SG P SG EXEC @UNOPE UNARY P2
P ^ P SG P SG EXEC EXPON P2
T1: T @TD P SG T SG EXEC @TD TIMDIV T2
T2: @AR @TD T @TD SCAN EX1
EN1: E @PM @AR SG E SG EXEC @PM PLUSM E2
@AR SG E SG E2 #XXQQ
E2: E @PM SCAN EX1
@EDN E @EDR
@EDN E @I
MUMBLE PREVIOUS FOR BENEFIT OF STARTCODE, WHICH IS ONLY CONSTRUCT
IN SAIL WHICH IS NOT OPERATOR GRAMMAR-LIKE (THEREFORE
I'M SAFE?) (DCS -- 8/19/70);
( E ) P EXEC TWID10 SCAN P2
E @MX E SG E SG EXEC @MX MAXMIN E2
E @MX SCAN EX1 #BX1
RFI: SG ( VALUE SG EXEC RFVAL SCAN ^EX RF0
SG1 ( SG2 SG1 SG2 EXEC RFZERO ^EX RF0 #Q36
RF0: REFITEM @E ) IP EXEC @E ECHK RFIMAK SCAN IP2
MUMBLE fix to allow arrays as args to REF!ITEM \UR#35\ ;
REFITEM IAR ) IP EXEC @0 ECHK RFIMAK SCAN IP2
REFERENCE @E ) IVB EXEC @E ECHK RFNCDO SCAN XID
ARGLIST @E @EDR @EDR IP
EXEC @E ECHK RFTEMP RFIMAK AGL4 #QRFI
AGL: ( LIP SCAN AGL1 #XXQQ
AGL1: LIP ) SP EXEC STKNIL SCAN SF1
AGL2: LIP SG EXEC LIPGO AGL3 #XXQQ
AGL3: SG ARGLIST ( SG EXEC GLBST2 RFI #XXQQ
AGL4: LIP @EDR IP LIP AE @EDR AGL5 #XXQQ
AGL5: LIP AE @EDR LIP @EDR EXEC SIP1 AGL6
AGL6: LIP ) SP EXEC STPRIM SCAN SF1
AGL7: , ARGLIST ( EXEC GLBST2 SCAN RFI #XXQQ
NRCD: ( IRC ) E EXEC NRCDO SCAN #XXQQ
MUMBLE Compile-time type checking productions;
CK0: ( SCAN CK1
CK1: ) ICN EXEC MKINT SCAN XID
CK2:
@ALGLP EXEC @ALGLP TYPST1 SCAN CK4
@XO EXEC @XO XOWST1 SCAN CK1
DEFINE EXEC @4 RSTST1 SCAN CK1
REDEFINE EXEC @4 RSTST1 SCAN CK1
EVALDEFINE EXEC @4 RSTST1 SCAN CK1
EVALREDEFINE EXEC @4 RSTST1 SCAN CK1
RECORDPOINTER EXEC @6 RSTST1 SCAN CK1
RECORDCLASS EXEC @7 RSTST1 SCAN CK1
@VAL EXEC @VAL VALST1 SCAN CK1
ARRAY SCAN CK5
PROCEDURE EXEC @5 RSTST1 SCAN CK1
@RSTDC EXEC @RSTDC RSTST1 SCAN CK1 #Q108
CK3: ARRAY EXEC @3 RSTST1 SCAN CK1
CKP: PROCEDURE EXEC @5 RSTST1 SCAN CK1 #CK1
CK4: @XO EXEC @XO XOWST1 SCAN CK4
@ALG @HEL EXEC @HEL HELST1 SCAN CK3
@ALG ARRAY ARRAY SCAN CK5
ARRAY SCAN CK5
@ALGLP SG SG CK3
CK5: SG ITEMVAR EXEC @0 HELAR3 SCAN CK3
SG ITEM EXEC @1 HELAR3 SCAN CK1
ARRAY SG SG EXEC @3 RSTST1 CK1 #CKP
MUMBLE Boolean Expressions;
BX1: @E @RL @E @RL BT AND @E @RL
EXEC @E ESET @RL BOREL1 SCAN EX1
@E @RL @E SG BP SG EXEC @E ESET @RL BOREL BP2
@RL SCAN EX1
@E SG BP SG EXEC BOOP BP2
BP2: NOT BP SG BP SG EXEC BONOT BP2
BP3: BT AND BP SG BP SG EXEC BOAND BP2
BT2: @AR AND BT AND SCAN EX1
BT3: BE OR @AR SG BE SG EXEC BOOR BE2
BE2: @AR OR BE OR SCAN EX1
( @AR ) EXEC TWID10 SCAN BP4
@AR SG BE SG #XXQQ
BP4: @LOWER SG @AR SG1 SG2 @LOWER P SG2
EXEC EXPOP1 P2
SG @AR SG1 @LOWER P @LOWER
EXEC EXPOP1 P2
SG @AR SG1 SG2 BP SG2
EXEC TWID21 BP2 #XXQQ
MUMBLE Leap constructs;
SPRP: PROPS AE ) AE EXEC PPROP SCAN 2 SPP2 #Q110
SPP2: _ SG ^EX SPP3 #Q111
SPP3: AE _ E SG S SG EXEC PPSTO S9 #Q111
PRP: PROPS AE ) AE EXEC PPROP SCAN PRP2 #Q110
PRP2: SG _ SCAN ^EX PRP3
AE SG P SG EXEC GTPROP P2
PRP3: AE _ E SG E SG EXEC EPPSTO E2 #Q111
EDAT: DATUM ( DATUM SCAN ^EX1 EDA1 #XXQQ
EDA1: SG EXEC CLRSET EDA2
EDA2: DATUM AE , DATUM AE SCAN ^DTTP EDA3 #EDA3
EDA3: DATUM AE ) I EXEC DDATA SCAN #XXQQ
LDA: LDAT ( LDAT SCAN ^EX1 LDA1 #XXQQ
LDA1: SG EXEC CLRSET LDA2
LDA2: LDAT AE , LDAT AE SCAN ^DTTP LDA3 #LDA3
LDA3: LDAT AE ) I EXEC LDATA SCAN SID #XXQQ
DTTP: @ALGLP EXEC @ALGLP TYPSET SCAN DTTP #DTT3
DTT3: SAFE EXEC SAFSET SCAN DTTP #DTT4
DTT4: ARRAY EXEC ARYSET SCAN DTTP #DTT5
DTT5: SG #TRAP
IPQ: ? ITV SG IP SG EXEC STITM QUESET IP2
@IARY [ ARID EXEC ARYIDX SCAN ^ARY IPQ
@REFXX ? @IDC SG @REFXX @IDC SG
EXEC RFQKLG XID #Q109
IP0: BIND ITV SG IP SG EXEC STITM FRESET IP2
@IARY [ ARID EXEC ARYIDX SCAN ^ARY IP0
@REFXX BIND @IDC SG @REFXX @IDC SG
EXEC RFBKLG XID #Q109
IP2: @REMEMB IP @IN @REMEMB E @IN
IP @IN IP @IN SCAN EX1
@EDN IP @EDR @EDN AE @EDR
[ AE IP SCAN EX1
[ AE IP IP ] IP EXEC BTRIP SCAN IP2
AE IP AE AE IE3
IP @ASOP AE @ASOP EXEC GLBST2 SCAN EX1
@ASOP IP SG @ASOP AE SG IE3
IP @RL AE @RL EXEC ITMREL IE3
IP SG AE SG IE3 #XXQQ
BRK1: SIP { LIP SCAN BRK2
SIP ~ SP EXEC LPPHI SCAN SF1
SG EXEC SIPGO ^EX1 SPP0 #TRAP
BRK2: LIP ~ SP EXEC STKNIL SCAN BRK3 #BRK4
BRK3: ~ SCAN SF1 #SF1
BRK4: LIP LISTC SP EXEC STKNIL SCAN SF1 #BRK5
BRK5: LIP SG EXEC LIPGO ^EX1 SPP0 #TRAP
SPP0: @SIP AE @EDR @SIP @EDR EXEC SIP1 SPP1 #Q48
SPP1: @SIP , @SIP SCAN ^EX1 SPP0
LIP LISTC SP EXEC STPRIM SCAN SF1
LIP ~ SP EXEC STPRIM SCAN LIP2
SIP ~ SP EXEC STPRIM SCAN SF1 #Q48
LIP2: SP ~ SP SCAN SF1 #SF1
FRC0: BLKFRC FOREACH EXEC BLOCK EACH4 ENDDEC SCAN FRC
FRC: ? SCAN FRD1
ITV SCAN FRC1
| EXEC DUMITV FRCHGO SCAN FRE
SUCH EXEC DUMITV FRCHGO SCAN FRD #Q485
FRC1: ITV , EXEC ENTITV SCAN FRC
ITV | EXEC ENTITV FRCHGO SCAN FRE
ITV SUCH EXEC ENTITV FRCHGO SCAN FRD #XXQQ
FRD: THAT SCAN FRE #FRE
FRD1: ? ITV ITV EXEC QLOCAL SCAN FRC1 #Q486
FRE: ( CRAP EXEC BOPREP SCAN ^BEX FRF
SG ^EX1 FRG
FRF: CRAP BE ) TR EXEC FRBOL SCAN FRG #Q50
FRG: FOREACH MPRO SG FOREACH TR SG
EXEC INMAIN CALMP FRG
FRG2: FOREACH TR AND FOREACH
EXEC FRCH1 SCAN FRE
FOREACH TR DO ASSDO EXEC FRCH2 KOUNT1 SCAN S1
@MAKER TR SG S SG
EXEC @MAKER MAKIT S9 #Q51
SIV: ( ITV , ITV ) SG P SG
EXEC SAMEV P2 #Q112
LSB1: SP [ @E ] IP EXEC ELSSUB SELIP SCAN IP2
SP [ @E @NXT SCAN ^EX LSB2 #Q52
LSB2: SP [ @E @NXT @E ] SP
EXEC ELSSUB @NXT SELSBL SCAN SF1 #Q53
SF0: SP @BEAFT EXEC REFINF SFS #SFS
SFS: SP SG EXEC STSET SF1 #TRAP
SF1: @PUT SG @IN SP SG1
@IN SP SG SF1A
@EDN SP @EDR @EDN AE @EDR
SF1A: SP [ EXEC LSSUB SCAN ^EX LSB1
SP & SP SG SP SG EXEC LSTCAT SF1
SP & SCAN EX1
SF - SP SG SF SG EXEC STMIN SF2
SP SG SF SG SF2
SF2: SF - SCAN EX1
ST1: ST SF SG ST SG EXEC STINT ST2
SF SG ST SG ST2
ST2: ST SCAN EX1
SE1: SE ST SG SE SG EXEC STUNI SE2
ST SG SE SG SE2
SE2: SE SCAN EX1
( SE ) SP EXEC TWID10 SCAN SF1
FOREACH IP IN SE SG FOREACH TR SG
EXEC STSRC
IP IN SE SG P SG EXEC STIN P2
SE SG AE SG IE3
IE3: @EDN AE @EDR
AE @ASOP AE SG IE4
DS AE SG TR SG EXEC FID1
AE @RL BX1
@RL AE SG BX1
( AE ) AE SCAN ETYP
PT0: REMOVE E FROM SCAN ^EX1 PT1
PT1: @PUT IP @IN SP @OTH S @OTH
EXEC @PUT PUTIN S9
REMOVE E FROM SP @OTH S @OTH
EXEC REMXD S9
PUT IP IN SP @BEAFT EXEC HLDPNT SCAN ^EX PTII #XXQQ
PTII: PUT IP IN SP @BEAFT @E @OTH S @OTH
EXEC @BEAFT PUTINL ELSSUB S9 #Q55
IE4: AE AE DS SCAN EX1
MUMBLE FOLLOWING PRODUCTION BECAUSE EQV CAN'T BE IN TWO CLASSES AT SAME
TIME AND STILL USE INDEX PROPERTY;
AE AE SG SP SG
EXEC @3 DERIV SF1
AE @ASOP AE SG SP SG
EXEC @ASOP DERIV SF1 #XXQQ
REP0: IST [ E ] IST E SCAN REP1 #Q57
REP1: IST E _ IST E LSP EXEC ELSSUB SCAN ^EX REP2 #XXQQ
REP2: IST E LSP AE SG S SG
EXEC REPLCX S9 #Q59
MUMBLE Loop Statements, array calcs, proc names, etc;
FOR1: FORCA LHS E STEP E UNTIL E @DC FORCA LHS @DC
EXEC @DC FRSTE FOR4
FORCA LHS E UNTIL E @DC FORCA LHS @DC
EXEC @DC FRSTE FOR4
FORCA LHS @E @DC FORCA LHS @DC
EXEC @E ESET @DC FRSTO FOR4
FOR2: FORCA LHS E STEP E WHILE BE @DC FORCA LHS @DC
EXEC @DC FRWHILE FOR4 #Q60
FOR4: , SCAN ^NEX FOR1
FORCA LHS DO FORCA EXEC KOUNT1 SCAN S1
STO: LHS @E SG S SG EXEC @E STORE S9
@ISTO @E SG S SG EXEC @E SWPR S9 #Q61
ARY: SG ^EX ARY1
ARY1: ARID E , ARID EXEC ARRSBY SCAN ^EX ARY1
ARID E ] I EXEC ARRSB1 SUBSCR TYPAR
SCAN #Q62
PARM: SPROUT PCALL @E ) SPROUT
EXEC @E ECHK CALARG SPRPD SCAN FK3
PCALL @E ) S EXEC @E ECHK CALARG ISUCAL PRST
SCAN S9
FCALL @E ) P EXEC @E ECHK CALARG ISUCAL TYPPRO
SCAN PAM2
@CALL @E , @CALL EXEC @E ECHK CALARG SCAN ^EX PARM #Q63
PAM2: MPRO SG #XID
IFQ: IF BE THEN SIFC EXEC STIF KOUNT1 SCAN S1 #Q64
MUMBLE JFR 4-17-76 separate entries for statement (CSES) and expression (CSEX).
Under old (combined) method, a CASE expression used as a statement caused parser
to POPJ at E2 (via ETYP), quitting compilation in the middle of the file without
telling anyone.;
CSES: CASE E OF CASEX EXEC CASSTR SCAN CAS1 #Q65
CAS1: BEGIN EXEC KOUNT1 SCAN CAS2 #Q24
CAS2: CASEX STC CASEX EXEC CSNAME SCAN S1 #S1
CSEX: CASE E OF CASEX EXEC CASSTR SCAN CAS9 #Q65
CAS9: CASEX ( CASEX EXEC CASE1 KOUNT5 SCAN ^EX CAS3 #Q66
CAS3: CASEX @E ) @E EXEC @E CASE2 CASE3 SCAN ETYP
CASEX @E , CASEX EXEC @E CASE2 KOUNT6 SCAN ^EX CAS3 #Q67
CASD: CASEX [ E ] CASEX EXEC CASEMM SCAN S1
OPPS BEGIN [ E ] OPPS BEGIN SCAN S0 #XXQQ
EIF: IF BE THEN EIFC EXEC EXIF KOUNT3 SCAN ^EX EIF1 #Q69
EIF1: EIFC @E ELSE EXEC @E EXIF1 KOUNT4 SCAN ^EX EIF2 #Q70
EIF2: EIFC SG ELSE @E SG1 SG SG1
EXEC @E EXIF2 ETYP #Q71
ETYP: E SG E2
AE SG AE SG EXEC LTYPCK ETY2
BE SG E SG E2 #XXQQ
ETY2: IP SG IP2
SP SG SF1
WHG: WHILE BE DO WHILC EXEC WHIL KOUNT1 SCAN S1 #Q73
MUMBLE backtracking, memory and loc, record fields;
RFR: @REMEMB ALL @REMEMB EXEC @REMEMB RMASET SCAN NTXT
@REMEMB ( @REMEMB EXEC @REMEMB RMBSET SCAN ^EX1 RFR2
@REMEMB SG EXEC @REMEMB RMBSET ^EX1 RFR2 #TRAP
RFR2: @REMEMB @E ) @REMEMB
EXEC RMSTK SCAN NTXT
@REMEMB @E , @REMEMB EXEC RMSTK SCAN ^EX1 RFR2
@REMEMB @E @IN @REMEMB EXEC RMSTK SCAN ^EX1 NTX2 #Q72
NTXT: @REMEMB @IN @REMEMB SCAN ^EX1 NTX2 #Q68
NTX2: @REMEMB ICTXT SG S SG EXEC CNTXTS S9 #XXQQ
NCXT: INCONTEXT SG , INCONTEXT
EXEC RMSTK SCAN ^EX1 NCX2 #Q113
NCX2: INCONTEXT ICTXT ) P
EXEC INCNTX SCAN P2 #Q113
ECEL: ICTXT COL SCAN ^EX1 CEL2 #CENO
CENO: SG
CEL2: ICTXT COL @E SG P SG
EXEC @E ECHK CONELM XID #Q115
LCEL: ICTXT COL @E SG I SG
EXEC @E ECHK CONELM SID #Q115
DEL: DELETE AE ) S EXEC DELT SCAN S9 #Q74
RTN: LOP AE ) IP EXEC STLOP SCAN IP2
@CVSET AE ) SP EXEC @CVSET CVLS SCAN SF1
BBPP @E , SCAN ^EX RTP
@FUNC1 @E ) P EXEC @FUNC1 FDO1 SCAN P2
@FUNC2 @E ) IP EXEC @FUNC2 FDO2 SCAN IP2 #XXQQ
MEMX: [ EXEC ZBITS SCAN ^EX MMX1 #XXQQ
MMX1: MEMORY E ] IVB EXEC MEMI SCAN
MMX2: , EXEC ZBITS SCAN MMX3 #Q75
MMX3:
LONG EXEC @15 XOWSET SCAN MMX6
MMX6: @ALGLP EXEC @ALGLP TYPSET SCAN MMX4 #XXQQ
MMX4: @HEL EXEC @HEL HELSET SCAN MMX5
MMX5: MEMORY E ] I EXEC MEMS SCAN #Q75.5
LOCX: LOCATION ( SCAN LCX1 #XXQQ
LCX1: IPR SCAN LCX2
IRC SCAN LCX3
LCXY: SG FCALL SG ^EX LCXX #XXQQ
LCX2: IPR ) P EXEC LOCN SCAN XID #LCX4
LCX3: IRC ) P EXEC LOCN SCAN XID
LCX4: SG EXEC SCNBAK LCXY #XXQQ
LCXX: FCALL @E ) P EXEC @E ECHK LOCN SCAN XID #XXQQ
RCF: IRC : SCAN 2 RCF1 #RCF3
RCF3: IRC @EDR IPR EXEC LOCN SCNBAK SCAN #XXQQ
RCF1: IRC : SG [ IRC : EXEC RCFPIK SCAN ^EX RCF2 #XXQQ
RCF2: IRC : E ] I EXEC RCFREF SCAN #XXQQ
MUMBLE In-line code;
RTP: BBPP @E , @E , EXEC BPTWD SCAN ^EX RTP1 #Q76
RTP1: BBPP @E , @E , @E ) P
EXEC BPNT SCAN P2 #XXQQ
ESTO: ELHS @E SG @E SG EXEC @E STOR1 ETYP #Q78
PROS: , SCAN ^EX PROS
IBP @E ) S EXEC @PRO1 BYPQ SCAN S9
@PRO1 @E , @E ) S EXEC @PRO1 BYPS SCAN S9 #XXQQ
BSTR: STID E @NXT E ] ISV EXEC @NXT SUBSTR SCAN XIE #Q80
DOLS: DOL S UNTIL BE @END S @END
EXEC DOUNT KOUNT1 S9 #Q81
MUMBLE IN-LINE CODE PRODUCTIONS.;
MUMBLE NON-ID LEVEL;
COD: @STCO END S EXEC ONEWRD WRDNIT LITOFF UP1
SCAN S7
; EXEC ONEWRD WRDNIT SCAN COD
@ EXEC CODIND SCAN COD
( SCAN ^CONX CDP
[ EXEC LITOFF SCAN ^EX CDB
: EXEC ERRCOL SCAN COD
, EXEC ERRCOM SCAN COD
ACCESS EXEC CESSGO SCAN ^EXD CDAC
SG EXEC SETSIX CDI
CDAC: @E ) EXEC @E ECHK CESSOK CODID SCAN COD #XXQQ
CDI: OPC EXEC SETOP SCAN COD
ILB ILB SCAN CDI1
IAR IAR SCAN CODS
IPR IPR SCAN CODS
IRC IRC SCAN CODS
SG SG ^EX CDI1 #XXQQ
CDI1: ILB : EXEC ENTLAB SCAN COD
ILB SG SG EXEC CODID COD
@E , EXEC @E ECHK CODREG SCAN COD
@E SG SG EXEC @E ECHK CODID COD #XXQQ
CODS: IAR [ ^CDS1 CDI1
SG SG1 SG1 EXEC CODID COD #XXQQ
CDS1: SG XIE
CDP: @E ) EXEC @E ECHK CODX SCAN COD #XXQQ
CDB: @E ] EXEC @E ECHK CODLIT SCAN COD #XXQQ
MUMBLE Conditional Compilation Statements;
IF0: IFC EXEC CPSHBT CPSHEY CNDRCN PSHLST
SCAN ^CONX IF1
IF1: IFC E @THT CTRU1 EXEC TWCOND CPOPBT POPLST IF2 #XXQQ
IF2: CTRU1 EXEC TOMACN PRESUME IF3
CFLS1 EXEC SWPOFF CPOPET PSHLST
SCAN IF4 #XXQQ
MUMBLE IF ABOVE LINE BOMBS, SOMETHING'S REALLY WRONG;
IF3: WDPL CTRU1 ENDC WDPL
EXEC SWICHM CPOPET PRESUME
@CTRUE ENDC EXEC CPOPET CNDRCP PRESUME
CTRU1 ELSEC CFLS2 EXEC SWPOFF CPOPET FRMACN PSHLST
SCAN IF4 #XXQQ
IF4: WDPL CFLS1 ENDC EXEC FREMBW SWPON POPLST
PRESUME
@CFALSE ENDC EXEC SWPON TOMACN CNDRCP POPLST
PRESUME
CFLS1 ELSEC CTRU2 EXEC SWPON CPSHEY TOMACN POPLST
PRESUME IF3
NOCOND ENDC SCAN IF4
@CONBG NOCOND SCAN IF4
SG SCAN IF4 #XXQQ
IF5: IFCR IFC EXEC CPSHBT CPSHEY CNDRCY PSHLST
SCAN ^CONX IF1 #XXQQ
WH0: WHILEC EXEC SETDLM CPSHBT CPSHEN PSHLST
SCAN WH1
WH1: STC EXEC OFFDLM SCAN WH2
WH2: @DOCA WDPL EXEC SETDLM DWPREP SCAN ^CONX WH3
WH3: STC WDPL SG ENDC WDPL
EXEC DFENT OFFDLM SETWHL CPOPBT CPOPET POPLST
PRESUME
CS0: CASEC EXEC CPSHBT CPSHEN PSHLST
SCAN ^CONX CS1
CS1: CASEC E OFC CDPL CTRU1
EXEC SETDLM SWPOFF CPOPET DCPREP
CSB
CASEC E OF CDPL CTRU1
EXEC SETDLM SWPOFF CPOPET DCPREP
CSB
CS2: CDPL CFLS1 SG , CDPL CFLS1
EXEC TWCSCN CSB
CDPL CFLS1 SG ENDC EXEC FRMBCE OFFDLM SWPON TOMACN CPOPBT POPLST
PRESUME
CDPL CTRU1 SG , CDPL CTRU1
EXEC DFENT1 OFFDLM SETCSE CPOPBT CPOPET POPLST
PRESUME CS3
CDPL CTRU1 SG ENDC CDPL NOMORE
EXEC DFENT1 OFFDLM SETCSE CPOPBT CPOPET POPLST
PRESUME CS4
@CONBG SG SG NOCOND SCAN ^CSA CS2
CSA: NOCOND ENDC SCAN
@CONBG NOCOND SCAN ^CSA CSA
SG SCAN CSA #XXQQ
CSB: CTRU1 SCAN ^CONX CS2
CFLS1 SCAN 2 CS2 #TRAP
CS3: CDPL CTRU1 ENDC CDPL CFLS1
EXEC FRMBCT SETDLM SWPOFF CPSHBT PSHLST
SCAN 2 CS2 #XXQQ
CS4: CDPL NOMORE ENDC EXEC FREMBW SWPON
PRESUME #XXQQ
FR0: FORC FRDPL EXEC DWPREP CPSHBT CPSHEN PSHLST MACOFF
SCAN ^FM0 FR1
FR1: SG @IDD @EQC SG EXEC DFPINS SCAN ^CONX FR2
FR2: FRDPL E @STEPCA FRDPL
EXEC GTSTRT SCAN ^CONX FR3
FR3: FRDPL E @UNTLCA FRDPL
EXEC GTSTEP SCAN ^CONX FR4
FR4: FRDPL E @DOCA CTRU1 FRDPL
EXEC DFSET GETERM SETDLM SCAN ^CONX FR41
FR41: CTRU1 SG SG1 SG2 FR5
CFLS1 SG SG1 SG2 EXEC SWPOFF CPOPET FR51
FR5: CTRU1 FRDPL SG ENDC FRDPL
EXEC DFENT FFPOP OFFDLM SETFR CPOPBT CPOPET POPLST
PRESUME FR6
FR51: CFLS1 FRDPL SG ENDC
EXEC OFFDLM FREMBN SWPON CPOPBT POPLST
PRESUME
FR6: FRDPL ENDC CTRU1 FRDPL
EXEC TWNUM FR7
FR7: CTRU1 FRDPL FRDPL EXEC SWCHFR PRESUME FR6
CFLS1 FRDPL EXEC FREMBF PRESUME
FL0: FORLC FLDPL EXEC DWPREP CPSHBT CPSHEN PSHLST MACOFF
SCAN ^FM0 FL1
FL1: SG @IDD @EQC SG EXEC DFPINS GETACT SCAN FL2
FL2: @DOCA EXEC DFSET SETDLM SCAN ^CONX FL3
FL3: FLDPL SG ENDC FLDPL EXEC DFENT FFPOP OFFDLM SETFL CPOPBT CPOPET POPLST
PRESUME FL4
FL4: FLDPL ENDC CTRU1 FLDPL
EXEC TWACT FL5
FL5: CTRU1 FLDPL FLDPL EXEC SWCHFL PRESUME FL4
CFLS1 FLDPL EXEC FREMBF PRESUME
FM0: SG EXEC MACON SCAN
MUMBLE Macro DEFINE handling;
DF0: DEFINE EXEC MACOFF DLMPSH DPSHBT
SCAN DFR
DFR: @IDD DPL EXEC DFPREP SCAN DFR1 #Q4
DFR1: ( EXEC MACOFF SCAN 2 DPA #LEQ
DPA: SG @IDD , SG EXEC DFPINS SCAN 2 DPA
SG @IDD ; SG EXEC DFPINS SCAN 2 DPA
SG @IDD ) SG EXEC MDFPNS SCAN LEQ #Q4
LEQ: STC EXEC SPDMBD SCAN LEQ1
LEQ1: SG @EQC SG EXEC KLSTOF DLMPOP DFSET SETDLM
SCAN ^CONX DEQ #XXQQ
DEQ: DPL SG1 , EXEC DFENT FFPOP ENDMAC EVMCOF OFFDLM DLMPSH KLSTOC
SCAN DFR
SG SG1 ; EXEC DEFOFF DFENT FFPOP ENDMAC SWDLM OFFDLM DPOPBT KLSTON
#Q20
RDF: REDEFINE EXEC SETRDF MACOFF DLMPSH DPSHBT SCAN DFR #XXQQ
EDF: EVALDEFINE EXEC SETEDF DLMPSH DPSHBT SCAN DFR #XXQQ
ERF: EVALREDEFINE EVALDEFINE EXEC SETRDF EDF #XXQQ
ASG: ASSIGNC EXEC DLMPSH DPSHBT INTSCN
SCAN AS1
AS1: ICN ASSIGNC EXEC ASGOFF SCAN AS2 #Q116
AS2: STC EXEC SPDMBD SCAN AS3
AS3: SG = SG EXEC DLMPOP DFSET SETDLM
SCAN ^CONX AS4 #XXQQ
AS4: SG SG1 , EXEC ASGENT FFPOP OFFDLM DLMPSH INTSCN
SCAN AS1
SG SG1 ; EXEC ASGENT FFPOP SWDLM OFFDLM DPOPBT
#Q20
NMC: NOMAC EXEC MACOFF SCAN NM1 #XXQQ
NM1: I EXEC MACON SCNBAK #Q118
MUMBLE print statement;
%PRT: PRINT ( PRINT EXEC STRTPT SCAN ^EX %PR1
%PR1: PRINT @E ) S EXEC @E ECHK DOPRT ENDPRT SCAN S9
PRINT @E , PRINT EXEC @E ECHK DOPRT SCAN ^EX %PR1
%CPRT: CPRINT ( CPRINT SCAN ^EX %CPR1
%CPR1: CPRINT @E , PRINT EXEC @E ECHK STCPRT SCAN ^EX %PR1
MUMBLE dynamic procedure binding, etc.;
%BP1: ( SCAN ^EX %BP2 #XXQQ
%BP2: ASSIGN @E , ASSIGN EXEC BNDITM SCAN 2 %BP3 #Q92
%BP3: ASSIGN IPR ) S EXEC PDASTK BINCL SCAN S9
DATUM ( ( ^EXD %BP4 #XXQQ
%BP4: ASSIGN @E ) S EXEC BNDITM COPPIT SCAN %BP5 #XXQQ
%BP5: S ) S SCAN S9 #XXQQ
MUMBLE apply;
%EV1: ( SCAN 2 %EV2 #XXQQ
%EV2: IPR SG SG EXEC PDASTK %EV3
DATUM ( ( ^EXD %EV4 #XXQQ
%EV3: , SCAN ^EX %EV5
FCALL APPLY ) P EXEC EVLNLL TYPIRG SCAN XID
PCALL APPLY ) S EXEC EVLNLL SCAN S9
SPROUT APPLY ) SPROUT
EXEC SAPPN SCAN FK3 #XXQQ
%EV4: APPLY @E ) APPLY EXEC BNDITM PITSTK SCAN %EV3 #Q99
%EV5: PCALL APPLY @E ) S EXEC EVLLST SCAN S9
FCALL APPLY @E ) P EXEC EVLLST TYPIRG SCAN XID
SPROUT APPLY @E ) SPROUT
EXEC SAPPL SCAN FK3 #Q100
MUMBLE sprout;
FK: SPROUT ( SPROUT EXEC INMAIN SCAN ^EX FK1 #XXQQ
FK1: SPROUT @E , SPROUT EXEC BNDITM SCAN 2 FK2 #Q97
FK2: SPROUT IPR ( SPROUT PCALL
EXEC FPREM RDYCAL SCAN ^EX PARM
SPROUT IPR SG SPROUT SG
EXEC FPREM PDASTK FK3
SPROUT APPLY ( SPROUT APPLY
EXEC SAPPL1 SCAN 2 %EV2 #XXQQ
FK3: , SCAN FK4
SPROUT ) S EXEC STDOPT STDKLL SPRIT
SCAN S9 #XXQQ
FK4: , EXEC STDOPT SCAN FK7
SG ^EX FK5
FK5: SPROUT E SG SPROUT SG EXEC STKOPT FK6 #Q98
FK6: SPROUT ) S EXEC STDKLL SPRIT SCAN S9
, SCAN FK7 #XXQQ
FK7: SPROUT STC SPROUT EXEC BNKLL SCAN FK9
FK8: SPROUT IST SPROUT EXEC EKLL SCAN FK9 #XXQQ
FK9: SPROUT ) S EXEC SPRIT SCAN S9 #XXQQ
MUMBLE CAUSE;
%CS2: @E , EXEC BNDITM SCAN ^EX %CS3 #Q101
%CS3: CAUSE @E ) S EXEC BNDITM STDOPT CSIT SCAN S9
@E , EXEC BNDITM SCAN ^EX %CS4 #Q102
%CS4: CAUSE E ) S EXEC STKOPT CSIT SCAN S9 #Q103
MUMBLE INTERROGATE;
%IR2: PCALL AE ) S EXEC STKIRG STDOPT IRIT SCAN S9
FCALL AE ) P EXEC STKIRG STDOPT IRIT TYPIRG SCAN XID
AE , EXEC STKIRG SCAN ^EX %IR3 #Q104
%IR3: PCALL E ) S EXEC STKOPT IRIT SCAN S9
FCALL E ) P EXEC STKOPT IRIT TYPIRG SCAN XID #Q105
MUMBLE DEPENDENTS;
DPS1: ( STC ) SP EXEC BDEPS SCAN SF1 #QDPS
MUMBLE SETIP & STECP;
SIC: ( SCAN ^EX SIC1 #XXQQ
SIC1: @E , EXEC BNDITM SCAN 2 ^SCX SIC2 #XXQQ
SIC2: SETCP S EXEC SCPCLL SCAN S9
SIC3: SETIP S EXEC SIPCLL SCAN S9 #XXQQ
SCX: IPR ) EXEC PDASTK
DATUM ( ( SCAN ^EXD SCX1 #XXQQ
SCX1: @E ) EXEC BNDITM PITSTK
MUMBLE Error productions;
XXQQ: SG EXEC ER7 FUSH
FUSH: @QEND FA #FB
FA: @QBEG ; @QBEG EXEC KILPOP ERR101 CLRSET SCAN QDS2
@QBEG END @QBEG S END
EXEC KILPOP ERR101 S9
SG @QEND @QEND FA
FB: @BEG OPPS @BEG EXEC ERR102 SCAN DS
SG SCAN FUSH
QDS2: @BEG @DCL DS0 #S0
RET: SG
QPAR: @E ) @E EXEC ERR103 SCAN
QPR1: ( E SG P SG EXEC TWID10 ERR104 ^P2 RET
( BE SG ( BE ) SG EXEC TWID10 ERR104 ^BP4 RET #FUSH
Q1: SG EXEC ER1 Q1A
Q1A: BEGIN BB0
SG SCAN Q1A
Q2: @IDD EXEC ER5 BB0
SG EXEC ER2 Q1A
QIDC: @DCL @IDD @DCL EXEC ER3 CLRSET SCNBAK DS0 #IDL
Q4: SG EXEC ER4 FUSH
Q5: @IDD EXEC ER5 CLRSET DS0
BEGIN S ELSE BEGIN EXEC ER6 SCAN S1 #XXQQ
Q7: PDEC SG EXEC ER5 ENDPR KOUNT1 S1
PDNO @IDD @IDD EXEC ER5 ENDPR FWUNDO DS0 #XXQQ
Q8: SG @IDD @IDD EXEC ER5 PACDO DS0 #XXQQ
Q10: @IDD EXEC ER5 #XXQQ
Q11: STC SOURCEFILE @IDD @IDD
EXEC ER5 SRCSWT #XXQQ
Q12: E @IDD @IDD EXEC ER5 LDYNO CLRSET DS0 #XXQQ
Q13: ARDEC @IDD SG @IDD EXEC ER5 CLRSET SCNBAK DS0 #XXQQ
Q15: ( EXEC ER15 SCAN ^NEX AR0
SG EXEC ERR115 XXQQ #TRAP
Q16: ARDEC E ) ARDEC E EXEC ER37 SCAN QA16
SG EXEC ER8 ^QPAR AR0
QA16: ARDEC E : SCAN ^EX AR0 #XXQQ
Q20: SG SG1 @IDD @IDD EXEC ER5 DFENT FFPOP ENDMAC SWDLM OFFDLM #XXQQ
Q23: @IDD EXEC ER5 DS0 #XXQQ
Q24: SG EXEC ER24 FUSH
Q30: RETURN @E @SEND S @SEND
EXEC ER40 @E ECHK RESULTS S9 #XXQQ
Q32: GO I EXEC UNDEC QA32 #XXQQ
QA32: I ILB EXEC QDEC0 G2
USID: I [ ARID EXEC QDEC2 SCAN ^UARY SID
I : ILB : EXEC QDEC1 SID
I ( PCALL EXEC QDEC2 SCAN ^EX UCAL
I @SEND S @SEND EXEC QDEC1 QPRDEC S9
I SG IVB SG EXEC QDEC1 SID #TRAP
UCAL: PCALL @E ) S EXEC QPARM QPRDEC SCAN S9
FCALL @E ) I EXEC QPARM QPRDEC SCAN UXID
@CALL @E , @CALL EXEC QPARM SCAN ^EX UCAL #QU63
UARY: SG ^EX URY1
URY1: ARID E , ARID EXEC QSUBSC SCAN ^EX URY1
ARID E ] IVB EXEC QSUBSC QARDEC SCAN #QU62
MUMBLE I[ at SID implies either a subscripted array variable or a list
replacement statement, which, because this is the first use of the
list, must have an argument of one. I[ at SID could be a subscripted
array, set, string, or list. However, since this is the first use of
the variable, the programmer must have intended to use its intialized
values. Thus, he could have only intended the use of an array, since
such use of the others (when declared) leads to runtime errors;
QRC2: PDEC SG EXEC RCCERR ENDRC DS0
QRC1: SG EXEC RCCERR FUSH
QRP1: SG EXEC RCPERR FUSH
MUMBLE More error productions;
Q34: S ) S EXEC ER37 SCAN S9
DOL S SG EXEC ER33 SCAN S9
S ELSE S ; EXEC ERR125 S9
S SG S ; EXEC ER5 SCNBAK S9 #XXQQ
Q35: I @C1 IAR @C1 EXEC ER35 MS #XXQQ
Q36: [ EXEC ER15 SCAN EX
SG EXEC ER36 EX
Q38: SG EXEC ER38 FUSH
Q39: SG EXEC ER39 FUSH
Q41: ) EXEC ER37 SCAN EX1
SG EXEC ER41 FUSH
Q42: @IARY ( ARID EXEC ER15 ARYIDX SCAN ^ARY XID #XXQQ
UXID: IP @IN I @SEND IP @IN IST @SEND
EXEC QDEC1 XID
LDAT I ) LDAT ITV ) EXEC QDEC1 XID
DATUM I ) DATUM ITV )
EXEC QDEC1 XID
I @ASOP ITV @ASOP EXEC QDEC1 XID
I ITV EXEC QDEC1 XID
I SG ITV SG EXEC QDEC1 XID
@SIP I , @SIP ITV , EXEC QDEC1 XID
I [ ARID EXEC QDEC2 SCAN ^UARY XID
I ( FCALL EXEC QDEC2 SCAN ^EX UCAL
I SG IVB SG EXEC QDEC1 XID #TRAP
Q43: NEW @E SG IP EXEC ER40 NEWART SCNBAK SCAN IP2 #XXQQ
QRFI: REFITEM @E SG IP EXEC ER40 @E ECHK
RFIMAK SCNBAK SCAN IP2 #XXQQ
Q48: @SIP SG @SIP ~ EXEC ER48 SCNBAK SPP1 #XXQQ
Q48: @SIP SG @SIP ~ EXEC ER48 SCNBAK SPP1 #XXQQ
Q485: I EXEC UNDEC QQA8 #XXQQ
QQA8: I ITV EXEC QDEC0 SCAN FRC1 #XXQQ
Q486: I EXEC UNDEC QQA6 #XXQQ
QQA6: I ITV EXEC QDEC0 FRD1 #XXQQ
Q50: CRAP BE DO TR EXEC ER40 FRBOL SCAN FRG #XXQQ
Q51: FOREACH TR ) FOREACH TR EXEC ER37 SCAN FRG #XXQQ
Q52: SG EXEC ER8 ^QPAR LSB1
Q53: SG EXEC ER8 ^QPAR LSB2
Q55: SG EXEC ER8 ^QPAR PTII
Q57: SG EXEC ER8 ^QPAR REP0
Q59: SG EXEC ER59 FUSH
Q60: SG EXEC ER8 ^QPAR QA60
QA60: @E @NXT EXEC @NXT WAIT SCAN ^NEX2 FOR1 #FOR1
Q61: @E ) @E EXEC ER37 SCAN STO
LHS @E SG S ; EXEC ER5 @E STORE SCNBAK S9
@ISTO @E SG S ; EXEC ER5 @E SWPR SCNBAK S9
SG EXEC ER8 ^QPAR STO
Q62: SG EXEC ER8 ^QPAR QA62
QA62: ARID E , ARY1
ARID E ] ARY1
ARID E SG I EXEC ERR108 SUBSCR TYPAR SCNBAK SCAN #FUSH
QU62: SG EXEC ER8 ^QPAR URY1
Q63: , EXEC ER8 ^QPAR PARM
PCALL @E SG S SG EXEC @E ECHK CALARG ISUCAL PRST ER40 S9
FCALL @E SG P EXEC @E ECHK CALARG ISUCAL TYPR1 ER40 SCNBAK
SCAN PAM2 #XXQQ
QU63: , EXEC ER8 ^QPAR UCAL #XXQQ
Q64: SG EXEC ER8 ^QPAR IFQ
Q65: SG EXEC ER8 ^QPAR CSES
Q66: SG EXEC ER66 FUSH
Q67: , EXEC ER8 ^QPAR CAS3
CASEX @E SG @E EXEC @E CASE2 CASE3 ER40 SCNBAK SCAN ETYP #XXQQ
Q68: SG EXEC ER68 FUSH
Q69: SG EXEC ER8 ^QPAR EIF
Q70: SG EXEC ER8 ^QPAR EIF1
Q71: SG EXEC ER8 ^QPR1 EIF2
Q72: SG EXEC ER8 ^QPAR RFR2
Q73: SG EXEC ER8 ^QPAR WHG
Q74: AE SG S SG EXEC ER37 DELT S9 #XXQQ
Q75: SG EXEC ER8 ^QPAR MMX1
Q75.5: SG EXEC ER8 ^QPAR MMX5
Q76: , EXEC ER8 ^QPAR RTP
@E ) @E EXEC ER37 SCAN RTP #XXQQ
Q78: SG EXEC ER8 ^QPR1 ESTO
Q80: SG EXEC ER8 ^QPAR QA80
QA80: @E @NXT EXEC @NXT WAIT SCAN ^NEX2 BSTR #BSTR
Q81: @E ) @E EXEC ER37 SCAN DOLS
DOL S UNTIL BE SG S SG
EXEC ER40 DOUNT KOUNT1 S9
SG EXEC ER8 ^QPAR DOLS
Q92: SG EXEC ER8 ^QPAR %BP2
Q97: SG EXEC ER8 ^QPAR FK1
Q98: SG EXEC ER8 ^QPAR FK5
Q99: SG EXEC ER8 ^QPAR %EV3
Q100: SG EXEC ER8 ^QPAR %EV5
Q101: SG EXEC ER8 ^QPAR %CS2
Q102: SG EXEC ER8 ^QPAR %CS3
Q103: SG EXEC ER8 ^QPR1 %CS4
Q104: SG EXEC ER8 ^QPAR %IR2
Q105: SG EXEC ER8 ^QPR1 %IR3
Q106: ( EXEC ERR109 ^Z1 XID #XXQQ
Q107: SG EXEC ERR110 XXQQ
Q108: SG EXEC ERR111 XXQQ
Q109: BIND SG1 SG2 SG1 SG2 EXEC ERR112 EX1 #TRAP
Q110: SG EXEC ERR113 XXQQ
Q111: SG EXEC ERR114 XXQQ
QDPS: SG XXQQ
Q112: SG EXEC ERR116 XXQQ
Q113: SG EXEC ERR117 XXQQ
Q114: SG EXEC ERR118 XXQQ
Q115: SG EXEC ERR119 XXQQ
Q116: SG EXEC ERR120 XXQQ
Q117: SG EXEC ERR121 PRESUME Q117
Q118: SG EXEC ERR122 MACON XXQQ
Q119: SG EXEC ERR123 ASGOFF XXQQ
Q120: SG EXEC ERR124 ASGOFF XXQQ
Z1: STC ( ) STC SCAN
( ) SCAN Z1
( SCAN Z1
SG SCAN Z1
TRAP: SG EXEC ERTRAP FUSH
<END>