perm filename HEL[S,AIL]38 blob sn#177660 filedate 1975-09-21 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00020 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	β  Definition of Terms
C00007 00003	MUMBLE Classes 
C00014 00004	MUMBLE Declarations
C00020 00005	
C00023 00006	MUMBLE Statements
C00030 00007	MUMBLE Expression Parsers
C00032 00008	MUMBLE Main Expression Parser
C00039 00009	MUMBLE Compile-time type checking productions
C00041 00010	MUMBLE Boolean Expressions
C00043 00011	MUMBLE Leap constructs
C00047 00012	
C00052 00013	MUMBLE Loop Statements, array calcs, proc names, etc
C00056 00014	MUMBLE backtracking, memory and loc, record fields
C00060 00015	MUMBLE In-line code
C00063 00016	MUMBLE Conditional Compilation Statements
C00069 00017	MUMBLE Macro DEFINE handling
C00072 00018	MUMBLE dynamic procedure binding, etc.
C00077 00019	MUMBLE  Error productions
C00082 00020	MUMBLE  More error productions
C00090 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 PRELOAD_WITH PRESET_WITH BIND BUCKETS
STRING_SPACE SYSTEM_PDL STRING_PDL ARRAY_PDL LIBRARY
SOURCE_FILE LOAD_MODULE NEW_ITEMS REQUIRE NEXT NEEDNEXT VERSION
ALLGLOBAL 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 NULL_CONTEXT SAMEIV IN_CONTEXT
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 REPLACE_DELIMITERS
UNSTACK_DELIMITERS NULL_DELIMITERS
IFC IFCR THENC ELSEC ENDC WHILEC CASEC FORC FORLC DOC OFC STEPC UNTILC CVMS
ALL PROTECT_ACS ASSIGN APPLY  
NOW_SAFE NOW_UNSAFE ITEM_START
DECLARATION EXPR_TYPE
GLOBAL SEGMENT_NAME SEGMENT_FILE
MESSAGE
CONTINUE MEMORY LOCATION
SPROUT PROCESSES DEPENDENTS
INITIALIZATION INTERROGATE CAUSE
CHECK_TYPE RESERVED BUILT_IN LEAP_ARRAY
PROPS CLEANUP POLL POLLING_INTERVAL ACCESS
REF_ITEM SETCP SETIP SPROUT_DEFAULTS ERROR_MODES ARG_LIST
RECORD_POINTER RECORD_CLASS NEW_RECORD
NULL_RECORD ANY_CLASS
COMPILER_SWITCHES

<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 GLOBAL MESSAGE
@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 PRELOAD_WITH PRESET_WITH SHORT
	 LET MATCHING
	 GLOBAL MESSAGE
	PROTECT_ACS SIMPLE CLEANUP SPROUT_DEFAULTS
	RECORD_CLASS RECORD_POINTER
@E	E BE AE
@IRCC	IRC ANY_CLASS IPR
MUMBLE
@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
	ALLGLOBAL SEGMENT_NAME SEGMENT_FILE
	PROCESSES POLLING_INTERVAL BUCKETS ITEM_START ERROR_MODES
	COMPILER_SWITCHES
@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
@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  START_CODE QUICK_CODE
@BEG	BEGIN START_CODE QUICK_CODE

@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
	IN_CONTEXT
	CFLS2 IN ILDB ISTRIPLE LARW LDAT LDB LENGTH LHS LIP LOP LSP NEW OF OFC PCALL
	PROPS 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 EXPR_TYPE
	PDEC REF_ITEM ARG_LIST IRC REFERENCE
@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	NOW_SAFE NOW_UNSAFE
@TERMINAL
@RESERVED
@CONS	ICN STC
@IDQ	IVB ISV IAR ILB IST ITV IPR 
@IDD	@RESERVED @IDQ IIT I IRC
@C1	, ; ) [ ]
MUMBLE
@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 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
;

@SIP	LIP SIP
@THT	THEN THENC
@CONBG	IFC IFCR WHILEC CASEC FORC FORLC
@DOCA	DO DOC
@LDC	IVB ISV IAR ILB IST ITV IPR I
@STEPCA	STEP STEPC
@UNTLCA	UNTIL UNTILC
MUMBLE
@OFCA	OF OFC
;
@CTRUE  CTRU1 CTRU2
@CFALSE CFLS1 CFLS2
@EQC	LARW EQU
@QEND	END ;
@QBEG	BEGIN START_CODE QUICK_CODE CASEX
@RSTDC	RESERVED BUILT_IN LEAP_ARRAY
@REFXX	REFERENCE REF_ITEM ARG_LIST
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
	 PRELOAD_WITH →→	EXEC LDYBEG		SCAN 	↑CONX 	¬LW1
	 PRESET_WITH →→		EXEC LDYSET		SCAN 	↑CONX 	¬LW1
	 CLEANUP →→					SCAN 2		¬CLN
	 PROTECT_ACS →→					SCAN 	↑CONX 	¬PACL
	 SPROUT_DEFAULTS →→				SCAN	↑CONX	¬SDSS
	 BEGIN RECORD_CLASS 				SCAN		¬RCD
	 RECORD_POINTER →→ 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:	 
	 RECORD_CLASS PDEC SG →→ PDEC SG				¬RCD1
	 RECORD_CLASS 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 SOURCE_FILE					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 SOURCE_FILE , →→ REQUIRE ∞∞
				EXEC REQERR		SCAN  		¬RQQ
	 REQUIRE E SOURCE_FILE ; →→ ∞∞
				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
	 @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
	 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
	 ICTXT 						SCAN 2	↑EX1	¬LCEL
	 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       
	 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
	 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:    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
	 REF_ITEM 		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
	 ARG_LIST →→    				SCAN    	¬AGL
	 I 			EXEC UNDEC		SCAN 		¬UXID
	 CASE			EXEC CHKLEP		SCAN 	↑EX 	¬CSES 
	 @SUCCEED →→ ITV	EXEC @SUCCEED SUCCEX ONEITV   SCAN 	¬XIF
	 ICTXT						SCAN 		¬ECEL
	 NULL_CONTEXT		EXEC NLCNXT		SCAN	↓↓
	 IN_CONTEXT					SCAN	↑EXD	¬NCXT
	 CVMS →→					SCAN	↑CV1	¬CV2
	 CVPS →→					SCAN	↑CVP1	¬XID 
	 NEW_RECORD →→					SCAN 3		¬NRCD
	 NULL_RECORD →→ IVB	EXEC NLLREC		SCAN		¬XID
	 DECLARATION →→					SCAN	↑CV1	¬DL1
	 EXPR_TYPE					SCAN		¬DE1
	 CHECK_TYPE →→		EXEC SPRZER		SCAN		¬CK0	#Q41


DE1:	 ( →→			EXEC DCLBEG		SCAN	↑EX1	¬DE2
DE2:	 EXPR_TYPE @E ) →→ ICN	EXEC @E ECHK DCLEND DCLNT1 ∞∞
							SCAN		¬XID	#Q114

DL1:	 @LDC →→ ICN		EXEC DCLNT2		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			↓↓	
	 IN_CONTEXT IAR @EDR →→ IN_CONTEXT IAR @EDR			↓↓
	 NEW @IARY ) 						↓↓ 	             
	 REF_ITEM @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 #BX1

RFI:	SG ( VALUE →→ SG	EXEC RFVAL		SCAN	↑EX	¬RF0
	SG1 ( SG2 →→ SG1 SG2	EXEC RFZERO			↑EX	¬RF0 #Q36
RF0:	REF_ITEM @E ) →→ IP	EXEC @E ECHK RFIMAK	SCAN		¬IP2
	REFERENCE @E ) →→ IVB	EXEC @E ECHK RFNCDO	SCAN		¬XID
	ARG_LIST @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 →→ ARG_LIST ( 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:	, →→ ARG_LIST (		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 
	@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 @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:	 AP¬T 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


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:	 IN_CONTEXT SG , →→ IN_CONTEXT ∞∞
				EXEC RMSTK		SCAN	↑EX1	¬NCX2 #Q113
NCX2:	 IN_CONTEXT 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:
	@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 #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 OFFDLM 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 DLMPOP DFSET SETDLM ∞∞
							SCAN 	↑CONX 	¬DEQ  #XXQQ
DEQ:	 DPL SG1 , →→		EXEC DFENT FFPOP ENDMAC EVMCOF OFFDLM DLMPSH ∞∞
							SCAN 		¬DFR
	 SG SG1 ; →→		EXEC DEFOFF DFENT FFPOP ENDMAC SWDLM OFFDLM DPOPBT ∞∞
								↓↓ 	      #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 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 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  
	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:	REF_ITEM @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>
β