perm filename HEL[X,AIL]1 blob
sn#000874 filedate 1972-10-18 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00017 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00003 00002 β Definition of Terms
00007 00003 MUMBLE Classes
00013 00004 MUMBLE Declarations
00017 00005
00019 00006 MUMBLE Statements
00025 00007 MUMBLE Expression Parsers
00027 00008 MUMBLE Main Expression Parser
00032 00009 MUMBLE Boolean Expressions
00036 00010
00040 00011 MUMBLE Loop Statements, array calcs, proc names, etc
00046 00012 MUMBLE In-line code
00049 00013 MUMBLE Conditional Compilation Statements
00054 00014 MUMBLE Macro DEFINE handling
00055 00015 MUMBLE dynamic procedure binding, etc.
00059 00016 MUMBLE Error productions
00064 00017 MUMBLE More error productions
00071 ENDMK
⊗;
COMMENT β Definition of Terms
∞ASG LEAPSW 1
∞ASG GLOBSW 0
<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
<RESERVED-WORDS>
RETURN ELSE IN DATUM ANY 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 BOUND LENGTH PNAMES PRELOAD_WITH
STRING_SPACE SYSTEM_PDL STRING_PDL ARRAY_PDL LIBRARY
SOURCE_FILE LOAD_MODULE NEW_ITEMS REQUIRE NEXT NEEDNEXT VERSION
ILDB IDPB LDB DPB IBP BBPP
UNTIL BEGIN START_CODE QUICK_CODE 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 KILL_SET
INTEGER BOOLEAN ITEM ITEMVAR STRING INF
SAFE FROM NOT XOR AND OR ABS LABEL INTERNAL REFERENCE
RECURSIVE DEFINE LET EQV SUCH THAT
DELETE PHI NIL ISTRIPLE MAKE ERASE FOREACH
TRUE FALSE NULL LSH ROT LAND LOR LNOT ENTRY
MAX MIN SHORT LIST AFTER BEFORE CVSET CVLIST DELIMITERS REPLACE_DELIMITERS
UNSTACK_DELIMITERS NULL_DELIMITERS
IFC THENC ELSEC ENDC WHILEC CASEC FORC FORLC DOC OFC STEPC UNTILC CVMS
ALL PROTECT_ACS ASSIGN APPLY
NOW_SAFE NOW_UNSAFE
DECLARATION
∞IFN GLOBSW ∀ GLOBAL MESSAGE SEGMENT_NAME SEGMENT_FILE ∀
CONTINUE MEMORY LOCATION
SPROUT PROCESSES
INITIALIZATION INTERROGATE CAUSE
<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 KILL_SET CONTEXT
@HEL ITEM ITEMVAR MUMBLE NEW DATA TYPES;
@XO INTERNAL SAFE EXTERNAL OWN RECURSIVE FORTRAN FORWARD SHORT SIMPLE
MATCHING ∞IFN GLOBSW ∀ GLOBAL MESSAGE ∀
@VAL REFERENCE VALUE QUES
@UNOPE LNOT ABS + -
@PM + - EQV LAND LOR ⊗
@ASOP ⊗ ' *
@TD * % / LSH ROT DIV MOD &
@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
RECURSIVE FORWARD FORTRAN REQUIRE PRELOAD_WITH SHORT
LET MATCHING
∞IFN GLOBSW ∀ GLOBAL MESSAGE ∀
PROTECT_ACS SIMPLE
@E E BE AE
@SETOP ∩ ∪
@REQ PNAMES SYSTEM_PDL STRING_PDL STRING_SPACE ARRAY_PDL
NEW_ITEMS VERSION LIBRARY LOAD_MODULE SOURCE_FILE DELIMITERS
REPLACE_DELIMITERS UNSTACK_DELIMITERS NULL_DELIMITERS
∞IFN GLOBSW ∀ SEGMENT_NAME SEGMENT_FILE ∀
PROCESSES
@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 BOUND
@FUNC2 FIRST SECOND THIRD COP CVI
@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
@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 BOUND
@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
@EXS ( LNOT ABS + - NOT [
@STCO START_CODE QUICK_CODE
@BEG BEGIN START_CODE QUICK_CODE
@EDN AFTER ARDEC ARID BBPP BEFORE BEGIN BOUND CASE CASEC CASEX CDPL COP CVI
CVLIST CVN CVSET DATUM DELETE DOC DPB DPL EIFC ELHS ELSE FCALL FIRST
FLDPL FOR FOREACH FORGET FROM FRDPL IBP IDPB IFC CTRU1 CFLS1 CTRU2
CFLS2 IN ILDB ISTRIPLE LDAT LDB LENGTH LHS LIP LOP LSP NEW OF OFC PCALL
QUICK_CODE REMEMBER REMOVE REQUIRE RESTORE RETURN SECOND SIP START_CODE STEP
STID THEN THENC THIRD TO UNTIL WDPL WHILE WHILEC : [ ↔ , PROTECT_ACS
ASSIGN APPLY MEMORY SPROUT CAUSE INTERROGATE
@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 }
@RCON @EDR AND CASE EQV OR > < = ≠ ≥ ≤ - +
@LOWER + - * % ⊗ / & = < > ≤ ≥ ≠ LNOT ABS EQV LAND LOR LSH ROT DIV
MOD MAX MIN
@MKSU NOW_SAFE NOW_UNSAFE
@TERMINAL
@RESERVED
@CONS ICN STC
@IDQ IVB ISV IAR ILB IST ITV IPR
@IDD @RESERVED @IDQ IIT I
@C1 , ; ) [ ]
@C2 UNTIL WHILE IF CRAP
@STM SIFC BEGIN START_CODE QUICK_CODE 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 NEXT NEEDNEXT ∞IFN GLOBSW ∀ GLOBAL ∀
LET
;
@SEND END ELSE ; UNTIL
@LPR NEW RETURN CASEX DELETE ISTRIPLE FIRST SECOND THIRD
LOP COP CVI CVN BOUND LENGTH ILDB LDB , PCALL FCALL CVSET CVLIST
@SIP LIP SIP
@THT THEN THENC
@CONBG IFC WHILEC CASEC FORC FORLC
@DOCA DO DOC
@LDC IVB ISV IAR ILB IST ITV IPR
@STEPCA STEP STEPC
@UNTLCA UNTIL UNTILC
@OFCA OF OFC
@CTRUE CTRU1 CTRU2
@CFALSE CFLS1 CFLS2
@EQC LARW EQU
@QEND END ;
@QBEG BEGIN START_CODE QUICK_CODE CASEX
MUMBLE Declarations;
<PRODUCTIONS>
BB0: ENTRY →→ SCAN ¬ENT
BEGIN →→ BLAT BEGIN EXEC ENTOUT DWN SCAN ¬DS #Q1
ENT: SG →→ EXEC ENTMAK SCAN ¬ENT1
ENT1: , →→ SCAN ¬ENT
; →→ SCAN ¬BB0 #Q2
DS: @BEG STC →→ @BEG EXEC BLNAME SCAN ¬DS2
DS2: @BEG @DCL EXEC BLOCK CLRSET ¬ZDS0 #DS3
DS3: SG EXEC OFFDEF ¬S0
ZDS0: BLAT BEGIN @DCL EXEC LPNAME CLRSET ¬DS0
DS0:
∞IFN LEAPSW ∀
@ALGLP EXEC @ALGLP TYPSET SCAN ¬D1
∀ ∞IFE LEAPSW ∀
@ALGLP →→ EXEC @ALGLP TYPSET SCAN ¬TYP
∀
PDEC @VAL →→ PDEC EXEC @VAL VALSET SCAN ¬DS0
∞IFN GLOBSW ∀
@XO SCAN ¬ZDS2
∀ ∞IFE GLOBSW ∀
@XO →→ EXEC @XO XOWSET SCAN ¬DS0
∀
DEFINE →→ EXEC MACOFF SCAN ↑DFR ¬ZDS1
LET →→ EXEC MACOFF SCAN ↑LTR ¬DS0
REQUIRE →→ EXEC RQ00 SCAN 2 ↑RQQ ¬DS0
PRELOAD_WITH →→ EXEC LDYBEG SCAN ↑CONX ¬LW1
PROCEDURE SCAN ¬TYP
PROTECT_ACS →→ SCAN ↑CONX ¬PACL
; →→ SCAN ¬DS0
STC →→ EXEC SCOMM SCAN ¬DS0
@BEG SG EXEC ENDDEC ¬S0 #XXQQ
ZDS1: SG SCAN ¬DS0
∞IFN GLOBSW ∀
ZDS2: @XO @DCL →→ @DCL EXEC @XO XOWSET ¬DS0
GLOBAL SG →→ SG EXEC ENDDEC GLBSET ¬S1 #XXQQ
∀
∞IFN LEAPSW ∀
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 TWPR2 SCAN ¬PD1 #Q5
PD0: ( →→ EXEC CLRSET SCAN ¬DS0
PDEC SG EXEC TWPR1 ¬PD1 #TRAP
PD1: PDEC ; →→ PDEC EXEC ENDPR KOUNT1 SCAN ¬S1
PDNO ; →→ EXEC ENDPR FWUNDO SCAN ¬DS0 #Q7
PACL: SG , →→ EXEC PACDO SCAN ↑CONX ¬PACL
SG ; →→ EXEC PACDO SCAN ¬DS0 #Q8
RQQ: @PM ICN SCAN ¬RQQ1 # RQQQ
RQQ1: @UNOPE ICN SG →→ ICN SG ∞∞
EXEC @UNOPE UNARY ¬RQQQ
RQQQ: STC SOURCE_FILE SCAN ¬RQ3
IPR INITIALIZATION →→ EXEC REQINI SCAN ¬RQ1
@CONS @REQ →→ EXEC @REQ RQSET SCAN ¬RQ1
@REQ SG →→ SG EXEC @REQ RQSET ¬RQ1 #XXQQ
RQ1: ; →→ SCAN ↓↓
, →→ SCAN 2 ¬RQQ #Q10
RQ3: STC SOURCE_FILE , →→ EXEC REQERR SCAN 2 ¬RQQ
STC SOURCE_FILE ; →→ EXEC SRCSWT SCAN ¬RQ4 #Q11
RQ4: SG EXEC SRCCHK ↓↓
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
; →→ SCAN ↓↓ #Q23
MUMBLE Statements;
S0: @STCO SG EXEC @STCO CODNIT ¬COD
S1: @IDQ SCAN ¬SID
@STA ¬S1Q
@BEG EXEC DWN SCAN ¬DS
IF SCAN ↑BEX ¬IFQ
@END →→ S @END ¬S9
GO SCAN ¬G1
GOTO →→ GO SCAN ¬G2
∞IFN LEAPSW ∀
FOREACH →→ BLKFRC FOREACH ∞∞
EXEC DWN1 ¬FRC0
∞IFN GLOBSW ⊗
GLOBAL →→ EXEC GLBSET SCAN ¬S1
⊗
∀
@PRO1 SCAN ↑EXD ¬PROS
CASE SCAN ↑EX ¬CSES
DO →→ DOL EXEC DOLOOP KOUNT1 SCAN ¬S1
RETURN →→ SCAN ¬RT0
NEEDNEXT →→ EXEC NEXTR SCAN ¬S1
NEXT SCAN ¬NXTX
CONTINUE SCAN ¬CTUX
STC →→ EXEC SCOMM SCAN ¬S1
REQUIRE →→ EXEC RQ00 SCAN 2 ↑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
I EXEC UNDEC SCAN ¬USID #Q24
S1Q: FOR SCAN ¬S1
WHILE EXEC WHIL1 KOUNT1 SCAN ↑BEX ¬WHG
∞IFN LEAPSW ∀
DATUM →→ LDAT EXEC GLBST2 SCAN ¬LDA
@MAKER EXEC @MAKER MKSET SCAN ↑EX ¬FRG
@PUT EXEC @PUT MKSET SCAN ↑EX1 ¬PT0
DELETE EXEC GLBST2 SCAN ↑EXD ¬DEL
@REMEMB SCAN ¬RFR
∀
MEMORY SCAN ↑MEMX ¬SID
@SUCCEED →→ S EXEC @SUCCEED SUCCEX SCAN ¬S9
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 KOUNT2 SCAN ¬S1
IST [ EXEC REFINF SCAN ↑EX ¬REP0
@ISTO ↔ SCAN ↑EX ¬STO
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 SCAN ↑BEX ¬DOLS
CASEX S ; →→ CASEX EXEC CASEMT KOUNT1 SCAN ¬S1
CASEX S END →→ CASEX EXEC CASEMT CASEND SCAN ¬S7
CASEX [ E ] S END →→ CASEX ∞∞
EXEC CASEM1 CASEN1 SCAN ¬S7
CASEX [ E ] S ; →→ CASEX ∞∞
EXEC CASEM1 KOUNT1 SCAN ¬S1
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 SCAN ¬S9 #Q35
MUMBLE Expression Parsers;
EXD: ( →→ SCAN ¬EX #Q36
EX: SG ↑EX1 ¬EX22
EX22: BE SG →→ E SG EXEC EXPOP ↓↓
SG ↓↓ #TRAP
BEX: SG ↑EX1 ¬BX2
BX2: BE SG ↓↓
E SG →→ BE SG EXEC BOOP ↓↓
TR SG →→ BP SG EXEC ISIT ↑BP2 ¬BX2 #Q38
CONX: SG ↑EX ¬CX1
CX1: 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
@FUNC SCAN ↑EXD ¬RTN
IF SCAN ↑BEX ¬EIF
@TFAL →→ P EXEC @TFAL TCON SCAN ¬P2
∞IFN LEAPSW ∀
DATUM EXEC GLBST2 SCAN ↑EDAT ¬XID
{ →→ SIP SCAN ¬BRK1
ANY →→ IP EXEC LPANY SCAN ¬IP2
PHI →→ SP EXEC LPPHI SCAN ¬SF1
NIL →→ SP EXEC STKNIL SCAN ¬SF1
NEW EXEC GLBST2 SCAN ¬NW1
LISTO →→ LIP EXEC LIPGO SCAN ¬EX1
REMOVE ALL →→ REMOVE EXEC REMAST SCAN ¬EX1
∞IFN GLOBSW ⊗
GLOBAL →→ EXEC GLBSET SCAN ¬EX1
MESSAGE →→ EXEC MESCL SCAN ¬EX1
⊗
∀
MEMORY SCAN ↑MEMX ¬XID
LOCATION SCAN ¬LOCX
APPLY →→ FCALL APPLY SCAN ¬%EV1
INTERROGATE →→ FCALL SCAN ↑EXD ¬%IR2
I EXEC UNDEC SCAN ¬UXID
CASE SCAN ↑EX ¬CSES
ICTXT SCAN ↓↓
CVMS →→ SCAN ↑CV1 ¬CV2
DECLARATION →→ SCAN ↑CV1 ¬DL1 #Q41
DL1: @LDC →→ ICN EXEC DCLINT SCAN ¬DL2
I →→ ICN EXEC DCLZER SCAN ¬DL2 #Q107
DL2: ) →→ SCAN ¬XID #XXQQ
CV1: ( →→ EXEC MACOFF SCAN ↓↓
CV2: I →→ STC EXEC STCAT SCAN ¬CV3 #XXQQ
CV3: ) →→ SCAN ¬XID #Q106
XID: @EDN @IALG @EDR →→ @EDN E @EDR ↓↓
@ISTO ← →→ ELHS EXEC TWID10 SCAN ↑EX ¬ESTO
XIE: @IALG SG →→ P SG ¬P2
@IARY [ →→ ARID EXEC ARYIDX SCAN ↑ARY ¬XID
∞IFN LEAPSW ∀
@IASS SG →→ IP SG EXEC STITM ¬IP2
IST SG →→ SP SG EXEC STSET ¬SF1
∀
IPR ( →→ FCALL EXEC RDYCAL SCAN ↑EX ¬PARM
@CALL @IDC @OTH →→ @CALL E @OTH ↓↓
IPR SG →→ P SG EXEC RDYCL1 ISUCL1 TYPR1 ¬XID
ICTXT SG ↓↓
@REMEMB IAR @EDR →→ @REMEMB E @EDR ↓↓
NEW @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 START_CODE, 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
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
∞IFN LEAPSW ∀
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 ↓↓
IP2: @REMEMB IP @IN →→ @REMEMB E @IN ↓↓
IP @IN →→ IP @IN SCAN ¬EX1
@EDN IP @EDR →→ @EDN AE @EDR ↓↓
IP @ASOP →→ AE @ASOP EXEC GLBST2 SCAN ¬EX1
[ AE ⊗ IP ≡ SCAN ¬EX1
[ AE ⊗ IP ≡ IP ] →→ IP EXEC BTRIP SCAN ¬IP2
IE2: 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 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 #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 ↑EX ¬FRG
FRF: CRAP BE ) →→ TR EXEC FRBOL SCAN ¬FRG #Q50
FRG: FOREACH MPRO SG →→ FOREACH TR SG EXEC 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
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
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 →→ BP SG EXEC STIN ¬BP2
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 ¬IE3
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 REFINF 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
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 @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
CSES: CASE E OF →→ CASEX EXEC CASSTR SCAN ¬CAS1 #Q65
CAS1: BEGIN →→ EXEC KOUNT1 SCAN ¬CAS2
CASEX ( →→ CASEX EXEC CASE1 KOUNT5 SCAN ↑EX ¬CAS3 #Q66
CAS2: CASEX STC →→ CASEX EXEC CSNAME SCAN ¬S1 #S1
CAS3: CASEX @E ) →→ @E EXEC @E CASE2 CASE3 SCAN ¬ETYP
CASEX @E , →→ CASEX EXEC @E CASE2 KOUNT6 SCAN ↑EX ¬CAS3 #Q67
CASD: CASEX [ E ] SCAN ¬S0
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
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
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: , →→ SCAN ¬MMX3 #Q75
MMX3:
∞IFE LEAPSW ∀
@ALGLP →→ EXEC @ALGLP TYPSET SCAN ¬MMX5 #XXQQ
∀ ∞IFN LEAPSW ∀
@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
SG →→ FCALL SG ↑EX ¬LCXX #XXQQ
LCX2: IPR ) →→ P EXEC LOCN SCAN ¬XID #XXQQ
LCXX: FCALL @E ) →→ P EXEC @E ECHK LOCN SCAN ¬XID #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
SG EXEC SETSIX ¬CDI
CDI: OPC →→ EXEC SETOP SCAN ¬COD
ILB →→ ILB SCAN ¬CDI1
IAR →→ IAR SCAN ¬CODS
IPR →→ IPR 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 SCAN ↑CONX ¬IF1
IF1: IFC E @THT →→ CTRU1 EXEC TWCOND ¬IF2 #XXQQ
IF2: CTRU1 PRESUME ¬IF3
CFLS1 EXEC SWPOFF SCAN ¬IF4 #XXQQ
MUMBLE IF ABOVE LINE BOMBS, SOMETHING'S REALLY WRONG;
IF3: WDPL CTRU1 ENDC →→ WDPL ∞∞
EXEC SWICHM PRESUME ↓↓
@CTRUE ENDC →→ PRESUME ↓↓
CTRU1 ELSEC →→ CFLS2 EXEC SWPOFF SCAN ¬IF4 #XXQQ
IF4: WDPL CFLS1 ENDC →→ EXEC FREMBW TMACIN PRESUME ↓↓
@CFALSE ENDC →→ EXEC SWPON PRESUME ↓↓
CFLS1 ELSEC →→ CTRU2 EXEC SWPON PRESUME ¬IF3
NOCOND ENDC →→ SCAN ¬IF4
@CONBG →→ NOCOND SCAN ¬IF4
SG →→ SCAN ¬IF4 #XXQQ
WH0: WHILEC →→ EXEC SETDLM SWPOFF 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 SWPON ∞∞
PRESUME ↓↓
CS0: CASEC EXEC SWPOFF SCAN ↑CONX ¬CS1
CS1: CASEC E @OFCA →→ CDPL CTRU1 ∞∞
EXEC SETDLM DCPREP SCAN ↑CONX ¬CS2
CS2: CDPL CFLS1 SG , →→ CDPL CFLS1 ∞∞
EXEC FRMBCF TWCSCN SCAN ↑CONX ¬CS2
CDPL CFLS1 SG ENDC →→ EXEC FRMBCE OFFDLM SWPON TMACIN ∞∞
PRESUME ↓↓
CDPL CTRU1 SG , →→ CDPL CTRU1 ∞∞
EXEC DFENT1 OFFDLM SETCSE SWPON ∞∞
PRESUME ¬CS3
CDPL CTRU1 SG ENDC →→ CDPL NOMORE ∞∞
EXEC DFENT1 OFFDLM SETCSE SWPON ∞∞
PRESUME ¬CS4
CS3: CDPL CTRU1 ENDC →→ CDPL CFLS1 ∞∞
EXEC FRMBCT SETDLM SWPOFF ∞∞
SCAN ↑CONX ¬CS2 #XXQQ
CS4: CDPL NOMORE ENDC →→ EXEC FREMBW OFFDLM SWPON TMACIN ∞∞
PRESUME ↓↓ #XXQQ
FR0: FORC →→ FRDPL EXEC DWPREP SWPOFF SCAN 2 ¬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 ¬FR5
FR5: CTRU1 FRDPL SG ENDC →→ FRDPL ∞∞
EXEC DFENT OFFDLM SETFR SWPON ∞∞
PRESUME ¬FR6
CFLS1 FRDPL SG ENDC →→ ∞∞
EXEC OFFDLM FREMBN SWPON ∞∞
PRESUME ↓↓
FR6: FRDPL ENDC →→ CTRU1 FRDPL ∞∞
EXEC TWNUM ¬FR7
FR7: CTRU1 FRDPL →→ FRDPL EXEC SWCHFR PRESUME ¬FR6
CFLS1 FRDPL →→ EXEC FREMBF TMACIN PRESUME ↓↓
FL0: FORLC →→ FLDPL EXEC DWPREP SWPOFF SCAN 2 ¬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 OFFDLM SETFL SWPON ∞∞
PRESUME ¬FL4
FL4: FLDPL ENDC →→ CTRU1 FLDPL ∞∞
EXEC TWACT ¬FL5
FL5: CTRU1 FLDPL →→ FLDPL EXEC SWCHFL PRESUME ¬FL4
CFLS1 FLDPL →→ EXEC FREMBF TMACIN PRESUME ↓↓
MUMBLE Macro DEFINE handling;
DF0: DEFINE →→ EXEC MACOFF 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 MDFPNS SCAN ¬LEQ #Q4
LEQ: STC →→ EXEC SPDMBD SCAN ¬LEQ1
LEQ1: SG = →→ SG EXEC DFSET SETDLM SCAN ↑CONX ¬DEQ #XXQQ
DEQ: DPL SG1 , →→ EXEC DFENT ENDMAC MACOFF OFFDLM ∞∞
SCAN ¬DFR
SG SG1 ; →→ EXEC DFENT ENDMAC SWDLM OFFDLM ∞∞
↓↓ #Q20
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 #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 #Q100
MUMBLE sprout;
FK: SPROUT ( →→ SPROUT 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 #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 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 SOURCE_FILE @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 #XXQQ
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 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;
MUMBLE More error productions;
Q34: S ) →→ S EXEC ER37 SCAN ¬S9
DOL S SG →→ EXEC ER33 SCAN ¬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
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
Z1: STC ( ) →→ STC SCAN ↓↓
( ) →→ SCAN ¬Z1
( SCAN ¬Z1
SG →→ SCAN ¬Z1
TRAP: SG EXEC ERTRAP ¬FUSH
<END>
β