File PARSTB.MA (MACREL macro assembler source file)

Directory of image this file is from
This file as a plain text file

	TITLE	PARSTB - PARSE TABLE FOR PPL  
	SUBTTL	E.TAFT/ESR/EAT	--  17 JUNE 74

;PARAMETERS AND DEFINITIONS

	HISEG
	SEARCH	PPL		;ACCESS PARAMETERS AND DEFINITIONS


	RADIX	10


	NREPO==	10		;ASSEMBLY PROGRESS REPORTING FREQUENCY

	CSTATE==1		;INIT STATE COUNTER

IF2,<
	PRINTX	BEGIN PASS 2
>

BPARST:

IF1,< ;MACRO TO CONSTRUCT A CODED READ-TRANSITION POINTER. ;POINTER IS RETURNED RIGHT-JUSTIFIED AS VALUE OF SYMBOL RDNNN (NNN=STATE#). DEFINE RD(RVEC) < ;;ARG IS ROW OF READ-TRANSITION STATES ZZ==<RDPTR==0> IFNB <RVEC>,< IRP RVEC <IFN RVEC,< ZZ== ZZ+1 ;;COUNT NONZERO TRANSITIONS >>> IFN ZZ,< REDEF (BYTE) ;;INIT BYTE-CONSTRUCTION MACRO IFG ZZ-MXRDPR,< ;;USE VECTOR FORMAT IF MANY TRANSITIONS IRP RVEC < APPEND (REDEF,(7)RVEC) ;;APPEND "(7)STATE#" TO DEF. >> IFLE ZZ-MXRDPR,< ;;USE PAIR ROW FOR FEW TRANSITIONS RDPTR== ACCCD1 ;;SET ACCESS CODE TO 1 ZZ== 0 IRP RVEC < ZZ== ZZ+1 ;;CURRENT TERMINAL NUMBER IFN RVEC,< ;;APPEND "(5)TERM#(7)STATE#" TO DEF. CONC (<APPEND REDEF,(5)>,\ZZ,(7)RVEC) >>> ;;EXPAND CONSTRUCTED BYTE STMT MACRO WITHIN LITERAL RDPTR== RDPTR+[APPEND()]-READB > CONC (RD,\CSTATE==RDPTR) ;;ASSIGN RESULT VALUE > ;CIRCULAR MACRO REDEFINITION FOR BUILDING UP STRINGS DEFINE REDEF(THIS) < DEFINE APPEND(OP,NEW) < OP THIS''NEW >>
;AUXILIARY MACROS FOR GENERAL USE ;MACRO TO RETURN FIRST ARG DEFINE LHS(A,B) <A> ;MACRO TO RETURN SECOND ARG DEFINE RHS(A,B) <B> ;MACRO TO GET ONE SIDE OF A NESTED PAIR DEFINE HS(SIDE,PAIR) <SIDE'HS(PAIR)> ;MACRO TO CALL A SUB-MACRO, STRIPPING A LEVEL OF BRACKETS OFF ONE ARG DEFINE STRIP(OP,ARG) <OP(ARG)> ;MACRO TO EXCHANGE TWO VALUES DEFINE EXCHNG(A,B) < TMP== A A== B B== TMP >
;MACRO TO CONSTRUCT A CODED TOP POINTER. ;POINTER IS RETURNED RIGHT-JUSTIFIED AS VALUE OF TOPNNN (NNN=STATE#). DEFINE XTOP(TSET) < TOPPTR==<NTOP==<NRHS==<NRHS1==<NRHS2==<NRHS3==0>>>>> LHS1==<LHS2==<RHS1==<RHS2==0>>> IFNB <TSET>,<IRP TSET < NTOP== NTOP+1 ;;COUNT TOP PAIRS IFL NRHS-3,< STRIP (CNTRHS,TSET) ;;COUNT DIFFERENT RHS'S >> REDEF (BYTE) ;;INIT BYTE-CONSTRUCTION MACRO ZZ== 0 ;;INIT DEF FINISHED FLAG IFLE NTOP-MXTOPP,< ;;ENCODE AS PAIRS IF NOT TOO MANY IRP TSET < STRIP (ENCPR,TSET) ;;APPEND "(7)OLDSTATE#,NEWSTATE#" > TOPPTR==<ZZ==ACCCD1> ;;ACCESS CODE 1, DEF FINISHED > IFE ZZ,< IFE NRHS-1,< ;;ENCODE AS BIT VECTOR IF ONLY ONE RHS ZZ== -1 ;;SET BIT VECTOR FLAG > IFE NRHS-2,< ;;ALSO IF 2 RHS'S AND ONLY 1 INSTANCE OF 2ND IFE NRHS2-1,< ZZ== -1 ;;SET BIT VECTOR FLAG > IFE NRHS1-1,< ZZ== -1 ;;SET BIT VECTOR FLAG EXCHNG (LHS1,LHS2) EXCHNG (RHS1,RHS2) >>> IFL ZZ,< ;;ENCODE AS BIT VECTOR HERE ZZ== 0 IRP TSET < STRIP (ENCBVC,TSET) > REPEAT NSTATES-ZZ,< APPEND (REDEF,(1)0) > APPEND (REDEF,(7)RHS1(7)LHS2(7)RHS2) TOPPTR==ACCCD2 ;;ACCESS CODE 2 > IFE ZZ,<IRP TSET < ;;OTHERWISE, ENCODE AS A VECTOR STRIP (ENCSVC,TSET) > REPEAT NSTATES-ZZ,< APPEND (REDEF,(7)0) >> ;;NOW EXPAND MACRO WITHIN LITERAL TO GET POINTER TOPPTR==TOPPTR+[APPEND()]-TOPB > CONC (TOP,\CSTATE,==TOPPTR) ;;STORE VALUE OF TOP PTR >
;AUXILIARY MACROS FOR "TOP" DEFINE ENCBVC(LH,RH) < ;;ENCODE TOP PAIR INTO BIT VECTOR REPEAT LH-ZZ-1,< APPEND (REDEF,(1)0) > ZZ== LH IFE RH-RHS1,< APPEND (REDEF,(1)1) > IFN RH-RHS1,< APPEND (REDEF,(1)0) >> DEFINE CNTRHS(LH,RH) < ;;COUNT DIFFERENT RHS'S ZZ== 0 IFE NRHS-2,<IFE RH-RHS2,< ZZ== <NRHS2==NRHS2+1> >> IFGE NRHS-1,<IFE RH-RHS1,< ZZ== <NRHS1==NRHS1+1> >> IFE ZZ,< CONC (NRHS,\<NRHS==NRHS+1>,==1+NRHS,\NRHS) CONC (RHS,\NRHS,==RH) CONC (LHS,\NRHS,==LH) >> DEFINE ENCPR(LH,RH) < ;;ENCODE A TOP PAIR APPEND (REDEF,(7)LH(7)RH) > DEFINE ENCSVC(LH,RH) < ;;ENCODE A TOP VECTOR ELEMENT REPEAT LH-ZZ-1,< APPEND (REDEF,(7)0) > ZZ== LH APPEND (REDEF,(7)RH) >
;MACRO TO CONSTRUCT A LOOKAHEAD SET POINTER. ;POINTER IS RETURNED AS VALUE OF LKNNN (NNN=STATE#). DEFINE LK(LKSET) < ;;ARG IS ROW OF LOOKAHEAD PAIRS LKPTR== <LKWRD==0> IFNB <LKSET>,< IRP LKSET < ZZ== HS(R,LKSET) ;;STATE# OF THIS PAIR IFE ZZ-CSTATE,< ;;TRANSITION TO SAME STATE LKWRD== LKWRD!<1_<HS(L,LKSET)-1>> > IFN ZZ-CSTATE,< ;;TRANSITION TO DIFFERENT STATE TMP== HS(L,LKSET) LKWRD== LKWRD!<TMP>B4!<ZZ>B11 >> LKPTR== [LKWRD]-LOOKB ;;GENERATE LITERAL AND PTR. > CONC (LK,\CSTATE==LKPTR) ;;ASSIGN RESULT VALUE > ;MACRO TO ASSIGN RULE NUMBER AND NPOP. ;SAVES ARGUMENTS FOR LATER CALL DURING STATE VECTOR ASSEMBLY. DEFINE RULE(RN,NP) < CONC (DEFINE RUL,\CSTATE,<<XRULE RN,NP>>) IFE CSTATE-<CSTATE/NREPO*NREPO>,< CONC (PRINTX STATE ,\CSTATE) > CSTATE==CSTATE+1 > ;THE FOLLOWING MACRO ACCUMULATES CALLS TO "TOP" FOR LATER EXPANSION ; USING "XTOP" SO AS TO GET DATA INTO A SEPARATE LITERAL TABLE. DEFINE TOP(TSET) < CONC (DEFINE TP,\CSTATE,<<XTOP <TSET>>>) > > ;END IF1 CONDITIONAL IF2,< DEFINE TOP(TSET) <> DEFINE RULE(RN,NP) < CSTATE==CSTATE+1 >>
COMMENT @ TERMINALS 1: ; 2: ELS 3: OP 4: ( 5: ) 6: [ 7: ] 8: A 9: IF 10: THEN 11: => 12: FOR 13: DO 14: , 15: : 16: DOTHRU 17: GOTO 18: RETURN 19: RPAD 20: WHILE 21: UNTIL 22: REPEAT
RULES STMT ::= 1 <FORM> RPAD 2 <FOR-PREF> DOTHRU <EXP> RPAD 3 RPAD FORM ::= 4 <IF-PREF> <FORM> 5 <IF-PREF> <FORM1> ELS <FORM> 6 <FOR-PREF> <NDO> <FORM> 7 <SFORM> ; <FORM> 8 <SFORM> 9 WHILE <EXP> <NDO> <FORM> FORM1 ::= 10 <SFORM> 11 <SFORM> ; <FORM1> 12 <IF-PREF> <FORM1> ELS <FORM1> 13 <FOR-PREF> <NDO> <FORM1> 14 WHILE <EXP> <NDO> <FORM1> SFORM ::= 15 <EXP> 16 GOTO <EXP> 17 RETURN <EXP> 18 RETURN 19 REPEAT <FORM> UNTIL <EXP> EXP ::= 20 OP <EXP> 21 <EXP> OP <EXP> 22 <TERM> TERM ::= 23 <TERM> ( <LIST> ) 24 <TERM> [ <LIST> ] 25 [ <LIST> ] 26 [ ] 27 <TERM> ( ) 28 A 29 ( <FORM> ) IF-PREF ::= 30 IF <EXP> THEN 31 <EXP> => FOR-PREF ::= 32 FOR <FOR-LIST> 33 <FOR-LIST> LIST ::= 34 <FORM> 35 <LIST> , <FORM> FOR-LIST ::= 36 <EXP> : <EXP> 37 <EXP> : <EXP> : <EXP> NDO ::= 38 DO 39 ; @
;---STATE 1 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,6,18,0,38> TOP <> LK <> RULE 0,0 ;---STATE 2 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 3 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 1,2 ;---STATE 4 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 5 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 2,4 ;---STATE 6 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 3,1
;---STATE 7 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,79,0,38> TOP <> LK <> RULE 0,0 ;---STATE 8 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,2>,<7,8>,<10,11>,<13,14>,<15,16>,<19,20>,<38,39>,<46,66>,<48,66>,<50,66>,<56,57>,<67,68>,<81,8>,<99,16>,<101,14>,<102,20>,<103,11>> LK <> RULE 4,2 ;---STATE 9 RD <0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 10 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,18,0,38> TOP <> LK <> RULE 0,0 ;---STATE 11 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,2>,<7,8>,<10,11>,<13,14>,<15,16>,<19,20>,<38,39>,<46,66>,<48,66>,<50,66>,<56,57>,<67,68>,<81,8>,<99,16>,<101,14>,<102,20>,<103,11>> LK <> RULE 5,4 ;---STATE 12 RD <74,0,0,0,0,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0
;---STATE 13 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,18,0,38> TOP <> LK <> RULE 0,0 ;---STATE 14 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,2>,<7,8>,<10,11>,<13,14>,<15,16>,<19,20>,<38,39>,<46,66>,<48,66>,<50,66>,<56,57>,<67,68>,<81,8>,<99,16>,<101,14>,<102,20>,<103,11>> LK <> RULE 6,3 ;---STATE 15 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,18,0,38> TOP <> LK <> RULE 0,0 ;---STATE 16 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,2>,<7,8>,<10,11>,<13,14>,<15,16>,<19,20>,<38,39>,<46,66>,<48,66>,<50,66>,<56,57>,<67,68>,<81,8>,<99,16>,<101,14>,<102,20>,<103,11>> LK <> RULE 7,3 ;---STATE 17 RD <15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,2>,<10,11>,<13,14>,<15,16>,<19,20>,<38,39>,<46,66>,<48,66>,<50,66>,<56,57>,<67,68>> LK <<5,17>,<7,17>,<14,17>,<19,17>,<21,17>> RULE 8,1 ;---STATE 18 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0
;---STATE 19 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,18,0,38> TOP <> LK <> RULE 0,0 ;---STATE 20 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,2>,<7,8>,<10,11>,<13,14>,<15,16>,<19,20>,<38,39>,<46,66>,<48,66>,<50,66>,<56,57>,<67,68>,<81,8>,<99,16>,<101,14>,<102,20>,<103,11>> LK <> RULE 9,4 ;---STATE 21 RD <22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<22,23>,<24,25>,<26,27>,<29,30>,<32,33>> LK <<2,21>> RULE 10,1 ;---STATE 22 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,31,0,38> TOP <> LK <> RULE 0,0 ;---STATE 23 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<7,9>,<22,23>,<24,25>,<26,27>,<29,30>,<32,33>,<81,100>,<99,23>,<101,30>,<102,33>,<103,27>> LK <> RULE 11,3 ;---STATE 24 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,31,0,38> TOP <> LK <> RULE 0,0
;---STATE 25 RD <0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 26 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,31,0,38> TOP <> LK <> RULE 0,0 ;---STATE 27 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<7,9>,<22,23>,<24,25>,<26,27>,<29,30>,<32,33>,<81,100>,<99,23>,<101,30>,<102,33>,<103,27>> LK <> RULE 12,4 ;---STATE 28 RD <74,0,0,0,0,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 29 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,31,0,38> TOP <> LK <> RULE 0,0 ;---STATE 30 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<7,9>,<22,23>,<24,25>,<26,27>,<29,30>,<32,33>,<81,100>,<99,23>,<101,30>,<102,33>,<103,27>> LK <> RULE 13,3
;---STATE 31 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 32 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,31,0,38> TOP <> LK <> RULE 0,0 ;---STATE 33 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<7,9>,<22,23>,<24,25>,<26,27>,<29,30>,<32,33>,<81,100>,<99,23>,<101,30>,<102,33>,<103,27>> LK <> RULE 14,4 ;---STATE 34 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 15,1 ;---STATE 35 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 36 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 17,2
;---STATE 37 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,17>,<7,80>,<10,17>,<13,17>,<15,17>,<19,17>,<22,21>,<24,21>,<26,21>,<29,21>,<32,21>,<38,17>,<46,17>,<48,17>,<50,17>,<56,17>,<67,17>,<81,80>,<99,80>,<101,80>,<102,80>,<103,80>> LK <<1,37>,<2,37>,<5,37>,<7,37>,<14,37>,<19,37>,<21,37>> RULE 18,1 ;---STATE 38 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,18,0,38> TOP <> LK <> RULE 0,0 ;---STATE 39 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0> TOP <> LK <> RULE 0,0 ;---STATE 40 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 41 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 42 RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0
;---STATE 43 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 44 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 22,1 ;---STATE 45 RD <0,0,0,46,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 46 RD <0,0,41,56,54,50,0,55,59,0,0,63,0,0,0,0,35,37,0,18,0,38> TOP <> LK <> RULE 0,0 ;---STATE 47 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,76>,<4,76>,<7,76>,<10,76>,<13,76>,<15,76>,<18,76>,<19,76>,<22,76>,<24,76>,<26,76>,<29,76>,<31,76>,<32,76>,<35,76>,<37,76>,<38,76>,<40,76>,<41,76>,<43,76>,<46,76>,<48,76>,<50,76>,<56,76>,<59,76>,<63,76>,<67,76>,<70,76>,<71,76>,<72,76>,<79,76>,<81, 6>,<99,76>,<101,76>,<102,76>,<103,76>> LK <> RULE 23,4 ;---STATE 48 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,18,0,38> TOP <> LK <> RULE 0,0
;---STATE 49 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,76>,<4,76>,<7,76>,<10,76>,<13,76>,<15,76>,<18,76>,<19,76>,<22,76>,<24,76>,<26,76>,<29,76>,<31,76>,<32,76>,<35,76>,<37,76>,<38,76>,<40,76>,<41,76>,<43,76>,<46,76>,<48,76>,<50,76>,<56,76>,<59,76>,<63,76>,<67,76>,<70,76>,<71,76>,<72,76>,<79,76>,<81, 6>,<99,76>,<101,76>,<102,76>,<103,76>> LK <> RULE 24,4 ;---STATE 50 RD <0,0,41,56,0,50,52,55,59,0,0,63,0,0,0,0,35,37,0,18,0,38> TOP <> LK <> RULE 0,0 ;---STATE 51 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,76>,<4,76>,<7,76>,<10,76>,<13,76>,<15,76>,<18,76>,<19,76>,<22,76>,<24,76>,<26,76>,<29,76>,<31,76>,<32,76>,<35,76>,<37,76>,<38,76>,<40,76>,<41,76>,<43,76>,<46,76>,<48,76>,<50,76>,<56,76>,<59,76>,<63,76>,<67,76>,<70,76>,<71,76>,<72,76>,<79,76>,<81, 6>,<99,76>,<101,76>,<102,76>,<103,76>> LK <> RULE 25,3 ;---STATE 52 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,76>,<4,76>,<7,76>,<10,76>,<13,76>,<15,76>,<18,76>,<19,76>,<22,76>,<24,76>,<26,76>,<29,76>,<31,76>,<32,76>,<35,76>,<37,76>,<38,76>,<40,76>,<41,76>,<43,76>,<46,76>,<48,76>,<50,76>,<56,76>,<59,76>,<63,76>,<67,76>,<70,76>,<71,76>,<72,76>,<79,76>,<81, 6>,<99,76>,<101,76>,<102,76>,<103,76>> LK <> RULE 26,2 ;---STATE 53 RD <0,0,0,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 54 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,76>,<4,76>,<7,76>,<10,76>,<13,76>,<15,76>,<18,76>,<19,76>,<22,76>,<24,76>,<26,76>,<29,76>,<31,76>,<32,76>,<35,76>,<37,76>,<38,76>,<40,76>,<41,76>,<43,76>,<46,76>,<48,76>,<50,76>,<56,76>,<59,76>,<63,76>,<67,76>,<70,76>,<71,76>,<72,76>,<79,76>,<81, 6>,<99,76>,<101,76>,<102,76>,<103,76>> LK <> RULE 27,3
;---STATE 55 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,76>,<4,76>,<7,76>,<10,76>,<13,76>,<15,76>,<18,76>,<19,76>,<22,76>,<24,76>,<26,76>,<29,76>,<31,76>,<32,76>,<35,76>,<37,76>,<38,76>,<40,76>,<41,76>,<43,76>,<46,76>,<48,76>,<50,76>,<56,76>,<59,76>,<63,76>,<67,76>,<70,76>,<71,76>,<72,76>,<79,76>,<81, 6>,<99,76>,<101,76>,<102,76>,<103,76>> LK <> RULE 28,1 ;---STATE 56 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,18,0,38> TOP <> LK <> RULE 0,0 ;---STATE 57 RD <0,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 58 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,76>,<4,76>,<7,76>,<10,76>,<13,76>,<15,76>,<18,76>,<19,76>,<22,76>,<24,76>,<26,76>,<29,76>,<31,76>,<32,76>,<35,76>,<37,76>,<38,76>,<40,76>,<41,76>,<43,76>,<46,76>,<48,76>,<50,76>,<56,76>,<59,76>,<63,76>,<67,76>,<70,76>,<71,76>,<72,76>,<79,76>,<81, 6>,<99,76>,<101,76>,<102,76>,<103,76>> LK <> RULE 29,3 ;---STATE 59 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 60 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,7>,<7,81>,<10,7>,<13,7>,<15,7>,<19,7>,<22,24>,<24,24>,<26,24>,<29,24>,<32,24>,<38,7>,<46,7>,<48,7>,<50,7>,<56,7>,<67,7>,<81,81>,<99,81>,<101,81>,<102,81>,<103,81>> LK <> RULE 30,3
;---STATE 61 RD <0,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 62 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,7>,<7,81>,<10,7>,<13,7>,<15,7>,<19,7>,<22,24>,<24,24>,<26,24>,<29,24>,<32,24>,<38,7>,<46,7>,<48,7>,<50,7>,<56,7>,<67,7>,<81,81>,<99,81>,<101,81>,<102,81>,<103,81>> LK <> RULE 31,2 ;---STATE 63 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 64 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,77>,<7,82>,<10,12>,<13,12>,<15,12>,<19,12>,<22,28>,<24,28>,<26,28>,<29,28>,<32,28>,<38,12>,<46,12>,<48,12>,<50,12>,<56,12>,<67,12>,<81,82>,<99,82>,<101,82>,<102,82>,<103,82>> LK <> RULE 32,2 ;---STATE 65 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,77>,<7,82>,<10,12>,<13,12>,<15,12>,<19,12>,<22,28>,<24,28>,<26,28>,<29,28>,<32,28>,<38,12>,<46,12>,<48,12>,<50,12>,<56,12>,<67,12>,<81,82>,<99,82>,<101,82>,<102,82>,<103,82>> LK <> RULE 33,1 ;---STATE 66 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<46,90>,<48,91>,<50,92>> LK <> RULE 34,1
;---STATE 67 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,18,0,38> TOP <> LK <> RULE 0,0 ;---STATE 68 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<46,90>,<48,91>,<50,92>> LK <> RULE 35,3 ;---STATE 69 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 70 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 71 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 72 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0
;---STATE 73 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<12,13>,<28,29>,<77,13>,<82,101>,<83,19>,<84,32>,<98,102>> LK <> RULE 38,1 ;---STATE 74 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<12,13>,<28,29>,<77,13>,<82,101>,<83,19>,<84,32>,<98,102>> LK <> RULE 39,1 ;---STATE 75 RD <0,0,43,0,0,0,0,0,0,0,62,0,0,0,70,0,0,0,0,0,0,0> TOP <<1,17>,<7,80>,<10,17>,<13,17>,<15,17>,<18,0>,<19,17>,<22,21>,<24,21>,<26,21>,<29,21>,<31,0>,<32,21>,<38,17>,<46,17>,<48,17>,<50,17>,<56,17>,<67,17>,<79,0>,<81,80>,<99,80>,<101,80>,<102,80>,<103,80>> LK <<1,75>,<2,75>,<5,75>,<7,75>,<14,75>,<19,75>,<21,75>> RULE 15,1 ;---STATE 76 RD <0,0,0,46,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,75>,<4,78>,<7,75>,<10,75>,<13,75>,<15,75>,<18,83>,<19,75>,<22,75>,<24,75>,<26,75>,<29,75>,<31,84>,<32,75>,<35,85>,<37,86>,<38,75>,<40,87>,<41,88>,<43,89>,<46,75>,<48,75>,<50,75>,<56,75>,<59,93>,<63,94>,<67,75>,<70,95>,<71,96>,<72,97>,<79,98>,<81, 5>,<99,75>,<101,75>,<102,75>,<103,75>> LK <<1,76>,<2,76>,<3,76>,<5,76>,<7,76>,<10,76>,<11,76>,<13,76>,<14,76>,<15,76>,<16,76>,<19,76>,<21,76>> RULE 22,1 ;---STATE 77 RD <74,0,0,0,0,0,0,0,0,0,0,0,73,0,0,4,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 78 RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0> TOP <> LK <> RULE 0,0
;---STATE 79 RD <0,0,41,56,0,50,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 80 RD <99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<7,8>,<81,8>,<99,16>,<101,14>,<102,20>,<103,11>> LK <<5,80>,<7,80>,<14,80>,<19,80>,<21,80>,<2,104>> RULE 10,1 ;---STATE 81 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,79,0,38> TOP <> LK <> RULE 0,0 ;---STATE 82 RD <74,0,0,0,0,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 83 RD <74,0,43,0,0,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 84 RD <74,0,43,0,0,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0
;---STATE 85 RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,17>,<7,80>,<10,17>,<13,17>,<15,17>,<19,17>,<22,21>,<24,21>,<26,21>,<29,21>,<32,21>,<38,17>,<46,17>,<48,17>,<50,17>,<56,17>,<67,17>,<81,80>,<99,80>,<101,80>,<102,80>,<103,80>> LK <<1,85>,<2,85>,<5,85>,<7,85>,<14,85>,<19,85>,<21,85>> RULE 16,2 ;---STATE 86 RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,17>,<7,80>,<10,17>,<13,17>,<15,17>,<19,17>,<22,21>,<24,21>,<26,21>,<29,21>,<32,21>,<38,17>,<46,17>,<48,17>,<50,17>,<56,17>,<67,17>,<81,80>,<99,80>,<101,80>,<102,80>,<103,80>> LK <<1,86>,<2,86>,<5,86>,<7,86>,<14,86>,<19,86>,<21,86>> RULE 17,2 ;---STATE 87 RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,17>,<7,80>,<10,17>,<13,17>,<15,17>,<19,17>,<22,21>,<24,21>,<26,21>,<29,21>,<32,21>,<38,17>,<46,17>,<48,17>,<50,17>,<56,17>,<67,17>,<81,80>,<99,80>,<101,80>,<102,80>,<103,80>> LK <<1,87>,<2,87>,<5,87>,<7,87>,<14,87>,<19,87>,<21,87>> RULE 19,4 ;---STATE 88 UINAD== CSTATE ;INAD STATE FOR REDUCTION E ::= OP E RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,75>,<4,78>,<7,75>,<10,75>,<13,75>,<15,75>,<18,83>,<19,75>,<22,75>,<24,75>,<26,75>,<29,75>,<31,84>,<32,75>,<35,85>,<37,86>,<38,75>,<40,87>,<41,88>,<43,89>,<46,75>,<48,75>,<50,75>,<56,75>,<59,93>,<63,94>,<67,75>,<70,95>,<71,96>,<72,97>,<79,98>,<81, 5>,<99,75>,<101,75>,<102,75>,<103,75>> LK <<1,88>,<2,88>,<3,88>,<5,88>,<7,88>,<10,88>,<11,88>,<13,88>,<14,88>,<15,88>,<16,88>,<19,88>,<21,88>> RULE 20,2 ;---STATE 89 BINAD== CSTATE ;INAD STATE FOR REDUCTION E ::= E OP E RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,75>,<4,78>,<7,75>,<10,75>,<13,75>,<15,75>,<18,83>,<19,75>,<22,75>,<24,75>,<26,75>,<29,75>,<31,84>,<32,75>,<35,85>,<37,86>,<38,75>,<40,87>,<41,88>,<43,89>,<46,75>,<48,75>,<50,75>,<56,75>,<59,93>,<63,94>,<67,75>,<70,95>,<71,96>,<72,97>,<79,98>,<81, 5>,<99,75>,<101,75>,<102,75>,<103,75>> LK <<1,89>,<2,89>,<3,89>,<5,89>,<7,89>,<10,89>,<11,89>,<13,89>,<14,89>,<15,89>,<16,89>,<19,89>,<21,89>> RULE 21,3 ;---STATE 90 RD <0,0,0,0,47,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0
;---STATE 91 RD <0,0,0,0,0,0,49,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 92 RD <0,0,0,0,0,0,51,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 93 RD <0,0,43,0,0,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 94 RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 95 RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0> TOP <<1,65>,<7,65>,<10,65>,<13,65>,<15,65>,<19,65>,<22,65>,<24,65>,<26,65>,<29,65>,<32,65>,<38,65>,<46,65>,<48,65>,<50,65>,<56,65>,<63,64>,<67,65>,<81,65>,<99,65>,<101,65>,<102,65>,<103,65>> LK <<1,95>,<13,95>,<16,95>> RULE 36,3 ;---STATE 96 RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0
;---STATE 97 RD <0,0,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<1,65>,<7,65>,<10,65>,<13,65>,<15,65>,<19,65>,<22,65>,<24,65>,<26,65>,<29,65>,<32,65>,<38,65>,<46,65>,<48,65>,<50,65>,<56,65>,<63,64>,<67,65>,<81,65>,<99,65>,<101,65>,<102,65>,<103,65>> LK <<1,97>,<13,97>,<16,97>> RULE 37,5 ;---STATE 98 RD <74,0,43,0,0,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 99 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,79,0,38> TOP <> LK <> RULE 0,0 ;---STATE 100 RD <0,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <> LK <> RULE 0,0 ;---STATE 101 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,79,0,38> TOP <> LK <> RULE 0,0 ;---STATE 102 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,79,0,38> TOP <> LK <> RULE 0,0
;---STATE 103 RD <0,0,41,56,0,50,0,55,59,0,0,63,0,0,0,0,35,37,0,79,0,38> TOP <> LK <> RULE 0,0 ;---STATE 104 RD <0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0> TOP <<7,9>,<81,100>,<99,23>,<101,30>,<102,33>,<103,27>> LK <> RULE 10,1
IF1,<IFN <CSTATE==CSTATE-1>-NSTATES,< CONC (PRINTX ,\CSTATE,< STATES, NSTATES INCORRECT >) >> ;***** ASSEMBLE READ/LOOKAHEAD LITERAL TABLE POINTED TO FROM STATE VECTOR ***** READB=<LOOKB=.-1> ;BASE OF LITERAL DATA ; OFFSET BY 1 SO 0 IS SPECIAL. LIT IF1,< CONC (PRINTX ,\<.-READB>,< WORDS IN READ/LOOKAHEAD TABLE >) >
;***** ASSEMBLE TOP LITERAL TABLE POINTED TO FROM STATE VECTOR ***** PRINTX BEGIN TOP VECTORS CSTATE==0 TOPB= .-1 ;BASE OF LITERAL DATA ;EXPAND THE TOP VECTORS REPEAT NSTATES,< CONC (TP,\<CSTATE==CSTATE+1>) IFE CSTATE-<CSTATE/NREPO*NREPO>,< CONC (PRINTX STATE ,\CSTATE) >> LIT IF1,< CONC (PRINTX ,\<.-TOPB>,< WORDS IN TOP TABLE >) >
;***** ASSEMBLE THE STATE VECTOR ITSELF ***** PRINTX BEGIN STATE VECTOR DEFINE XRULE(RN,NP) < XALL CONC < BYTE(6)RN(3)NP(9)RD>,\CSTATE(10)TOP,\CSTATE(8)LK,\CSTATE SALL > CSTATE==0 PARSTB: REPEAT NSTATES,<CONC(RUL,\<CSTATE==CSTATE+1>)> CONC (PRINTX ,\<.-BPARST>,< TOTAL WORDS IN PARSE TABLE >) IF2,< ;CLEAN UP SYMBOL TABLE CSTATE==0 REPEAT NSTATES,< CONC (PURGE RD,\<CSTATE==CSTATE+1>) CONC (PURGE TOP,\CSTATE) CONC (PURGE LK,\CSTATE) >> END Note: Lines longer than 256 characters were wrapped



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search