X-Git-Url: https://jxself.org/git/?p=pdp10-muddle.git;a=blobdiff_plain;f=mim%2Fdevelopment%2Fmim%2Fmimc%2Fchkdcl.mud;fp=mim%2Fdevelopment%2Fmim%2Fmimc%2Fchkdcl.mud;h=96e070bceb3886953a3db26dd3866cab8128e054;hp=0000000000000000000000000000000000000000;hb=d73ace3f3292e320b461b8fcd2e9f5dc5d9684d7;hpb=d530283ea60fb0ddcc28e9c5bd072456afe06e07 diff --git a/mim/development/mim/mimc/chkdcl.mud b/mim/development/mim/mimc/chkdcl.mud new file mode 100644 index 0000000..96e070b --- /dev/null +++ b/mim/development/mim/mimc/chkdcl.mud @@ -0,0 +1,1517 @@ + + + + + +>> + + + +> + + + + + + + + + + + + + + + + + + + + + + + + + +> + + <==? .D NO-RETURN>> ANY) + ( > .D) + ( ATOM> >> + >> + + <==? .TEM BOOL-FALSE> + <==? .TEM BOOL-TRUE>> + .TT) + (ELSE .TEM)>) + ( + + ANY> >>) + (<==? <1 .D> FIX> FIX) + ( 2> <==? <1 .D> NOT>> ANY) + ( + SEGMENT>) + (ELSE FORM>)>) + ( + [ OPT> OPTIONAL) (ELSE <1 .D>)> + !>]) + (ELSE .D)>> + + <==? .P2 ANY>> ANY) + (<==? .P1 .P2> .P1) + ( + <==? 2> + <==? <1 .P1> NOT> + ANY> .P2> ANY>>) + ( + <==? 2> + <==? <1 .P2> NOT> + ANY> .P1> ANY>>) + ( + + + <==? .P1 BOOL-FALSE> + <==? .P1 BOOLEAN>> + + <==? .P2 BOOL-FALSE> + <==? .P2 BOOLEAN>>> + BOOLEAN) + ( + <==? 2> + LIST>> + + <==? 2> + LIST>> + <> T>> + >) + (ELSE .P2>) FORM>)>> + + )> + )> + .P2) + (<==? .P2 ANY> .P1) + (<==? .P1 .P2> .P1) + (ELSE <>>)>> + + .P2) + (<==? .P2 ANY> .P1) + (<==? .P1 .P2> .P1) + (ELSE <> <>>)>> + +>) + > + +> + > + ) + (<==? .PAT2 BOOL-TRUE> ) + (<==? .PAT2 BOOL-FALSE> )> + + > + >> + <==? > + >> + <==? >>> + >>>> + <==? .FP1 .FP2>) (ELSE T)> + <=? .PAT1 .PAT2>>> + .PAT1) + ( + <==? .PAT2 BOOL-FALSE>> + BOOLEAN> + + BOOL-TRUE> + BOOL-FALSE>>>>>) + ( <==? .PAT1 BOOL-FALSE>> + .PAT2> BOOL-FALSE)>) + ( <==? .PAT1 BOOL-TRUE>> + BOOL-TRUE)>) + ( <==? .PAT1 BOOLEAN>> + + .PAT2> BOOLEAN) + (ELSE BOOL-TRUE)>) + ( .PAT2> BOOL-FALSE)>) + (> ATOM> >) + (> ATOM> ) + ( > + ) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>> + + + + <==? .X ANY> + <==? .X STRUCTURED> + <==? .X MULTI> + <==? .X APPLICABLE>> + .X> + > + .X>> + +) + > >>>> + + + > + > + .TYP> + + >> + .PAT) + (ELSE .TYP)>) + (ELSE .TT)>> + + >>) + ( ) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>> + + > .TYP> > + > .PAT> + >>>>> + +" " + +) + #FALSE (EMPTY-TYPE-FORM!-ERRORS)) + (> OR> + <==? .FST AND> + <==? .FST NOT> + <==? .FST PRIMTYPE>> + ) + ( + <==? 2>> + > .PAT>) + (ELSE )>> + +) TEM1 (ORF .ORF) (ANDF .ANDF)) + #DECL ((FORT) ) + + >> #FALSE (EMPTY-OR-MATCH!-ERRORS)) + (ELSE + > ATOM> + ) + (> + + >) + (ELSE T)>> + >> + >>> + )> + >) + (ELSE + + >)>)>) + (ELSE )>) + (> )> + >> + > + > <1 .AL>) + (ELSE + >)>>>)>>)>) + (<==? .ACTOR NOT> ) + (ELSE )>> + + + 2> <==? <1 .FORTYP> PRIMTYPE>> + ) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>) + ( ) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>> + +" " + + + ) + (ELSE + ')>>) + (> + > 1> + + + >> + + <==? .MT GBIND> + <==? .MT LBIND> + <==? .MT FRAME>>>>>)>) + (<==? .WRD APPLICABLE> + + >) + ()>)> + ) + (ELSE + > >) + (ELSE <>)>)>>> + + + (PTYP) >) + + + <==? 2> + <==? <1 .PAT1> PRIMTYPE>> + <2 .PTYP>> + <==? >> + >>>> + .PAT1) + (ELSE >)>)>) + ( + ) + ( <==? .PAT APPLICABLE>> + T> + ) + (ELSE + >)>)>) + ( + > + >>> + )>) + (> .PAT> + )>) + (ELSE >)>)>) + ( + + >> + > OR> ) + (<==? .ACTOR NOT> + ) + (ELSE + >> + > .PTYP) + ( .TEM) + ( + <==? 2> + <==? <1 .TEM> PRIMTYPE> + <==? <2 .TEM> <2 .PTYP>>>> + ANY)>)>) + (>> + +
>) + (ELSE + ) SEGMENT>)>) + (ELSE T)>)>)>> + +" " + +) + + > + OR> <==? <1 .PAT> AND>>> + ) + (ELSE + 2> + .PAT>>> + ) + (<==? <2 .NF> ANY> ) + (<==? > + >> + ) + ( > + > + > + + >>> + ) + (.ORF ANY)>) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>)>> + + + <==? 2> + <==? <1 .D> NOT>> + <2 .D>) + (ELSE )>> + +" " + + > + (RPAT) ) + ATOM> <==? <1 .FRM> .RPAT>> + ) + (ELSE + >>) + (ELSE >)> + + <> <> T>>> + >) + (ELSE + ATOM> .PAT>) + ( FORM> .PAT>)>)>> + .TEM> + ) FORM>) + (ELSE ) SEGMENT>)>) + (ELSE .TEM)>) + ( + > OR> + <==? .TEM AND> + <==? .TEM NOT> + <==? .TEM PRIMTYPE>> + ) + (ELSE + 2> LIST>> + ) + ( + <> T>>> + >) + ( <> T>>> + >) + (ELSE + > + + + 1> + <==? <1 .TEM> OR> + + .EX> + + >> + >> + .TEM)>)>)>)>> + +" " + +)) + ) SEGMENT>) + (ELSE ) FORM>)>> + +> + > + >) + (ELSE >)>> + + + 1> + >> VECTOR> + <==? <1 .LAST> REST>> + ) + (ELSE .F)>> + +) (F2 ) FST TL) + #DECL ((F11 F22) (F1 F2) FORM) + > #FALSE (EMPTY-FORM-IN-DECL!-ERRORS))> + + ATOM> .RPAT>) + ( FORM> .RPAT>) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>) + ( >) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>> + .FST) + (ELSE + <> <>> + 2> LIST>> + ,ALLWORDS <> <> <>> + !<2 .F2>>> + .FST) + (ELSE )>) + ( <2 .F2>>> + )>) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>) + (ELSE >) (ELSE <>)>)>) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>)>> + +) (LOW <1 .PAIRS>)) + #DECL ((PAIRS) < [REST FIX]> (HIGH LOW) FIX) + >> )> + >> + >>> + FIX>> + <==? .LOW FIX>>> + ()) + (ELSE (.LOW .HIGH))>> + +) HIGH LOW TEM (L (0)) (LL .L)) + #DECL ((L LL L1 L2) (HIGH LOW) FIX) + > + + + )> + > + > + (LO HI) FIX) + )> + > + > .LOW> + > + > + > + >> + > + > + 2>> + + )> + >> + >> + ) (ELSE <>)>>)>>> + +" " + + + + LIST>> + >>>> .TT)>)>> + +" " + + 0 <> <> '[]>>) (FAIL <>) + (S2 0 <> <> '[]>>) (FL ()) (FP '<>) + (INOPT <>) FSTL SEGF RTEM (ORF .ORF) (ANDF .ANDF)) + #DECL ((S1 S2) ANY FIX ANY ANY ANY> + (F1 F2) (FP) (FL) LIST) + > + > #FALSE (EMPTY-FORM-IN-DECL!-ERRORS)) + ( .RTYP>>> >) + (ELSE + + ATOM> >) + ( FORM> .RTYP>) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>) + ( >) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>> + ) + (ELSE )>> + LIST>>)> + > + > + ) (TEM2 <>) T1 T2 TEM TT) + #DECL ((TT) ) + >> + > >> + >> + > >> + >>> + >> + >)> + + + + > + .T2) + (ELSE <>)>) + ( + + + > + .T1) + (ELSE <>)>) + (ELSE )>>> + >>) + (.MAYBEF >) (ELSE )>) + (ELSE >)>> + + + >> + + + >>> + >) + ( + 1>> (.TEM)>)> + > + <0? >>> + > + <0? >>>> + > + >)> + >> + + >>> + + >>>>> + + >>> + + >) + (ELSE + + > + <1 .T1>) + (ELSE .T1)>>)>) + (>>> + + >) + (ELSE + + ) + (ELSE .T1)>>)>)>) + (ELSE )>) + ( + > + >> + )> + + .ANDF + + >>>> + VECTOR> + <=? <2 >> .TEM>> + 1>>) + ( .FL> <=? .TEM <1 .FL>>> + ) + (ELSE >>)>)>) + (ELSE + >> + >) + (ELSE )>) + (ELSE )>)>>)>)>> + + SEGF) + >> <1 .FP>) + (ELSE .FP)>> +" " + +) (TEM1 T) (TEM2 T) (OPTIT <>)) + #DECL ((S1 S2) (FL) + (TT) VECTOR) + > + > + >> + )> + + > >>> + T) + (> + > + >>>>>> + >> + + ) + > > + + ) (ELSE ANY)>>>> + > + > + > + > + >)> + > + .T1>>>)> + > >> + ]> 2>> + ) + (ELSE >)> + T) + ( >> .TEM1) + (ELSE .TEM2)>) + (ELSE 0)>> + +)) + #DECL ((V) ) + + )>> + >) + (ELSE [REST .FRST])>> + + ANY FIX ANY ANY ANY> (N) FIX + (TT) VECTOR) + > >)> + ) + (>> + 1>> + ) + (>> <>) + ( ATOM FORM SEGMENT> + > + >> + ) + ( VECTOR> + > + >> + > + 1> + REST> + 2> + <==? <2 .TT> ANY>> + <>) + (ELSE + + >)>) + ( FIX> >> + OPT> + <==? <1 .TT> OPTIONAL>> + >> + FIX> + > + 1>> 1>> + > + <>) (ELSE .S)>) + (#FALSE (BAD-VECTOR-SYNTAX!-ERRORS))>) + (ELSE #FALSE (BAD-FORM-SYNTAX!-ERRORS))>) + (ELSE #FALSE (BAD-FORM-SYNTAX!-ERRORS))>> + +" " + +>)) + #DECL ((S) (TEM) VECTOR) + >>)> + + >> + +" " + +) (PT <>) + "AUX" PTY NN1 TYP VT (ET FIX)) + > + >> + > + > + >>> + > 4> + > + <==? .VT 6>>> + + + >>> + .DCL2) + ( > + )>>) + ( STRING) + (<==? .VT 4> BYTES) + (ELSE UVECTOR)>> + .TYP) + ( + .NN>> 0>> + ) + ( > .TYP)>>) + ( >> .ET) + (ELSE + )>) + (ELSE )>> + +) (FMOK <>) STRU (GD '<>) (GP ()) (K 0) + (DCL1 .DCL2) (SEGF <>) TEM) + #DECL ((LN CNT K N) FIX (DCL) (SDC DC) VECTOR + (GD) (GP) LIST) + >> + .PT>>)> + >> + )> + ) (ELSE STRUCTURED)>>) + (.PT + ) + (> ) + (ELSE STRUCTURED)>>)> + + + > 1> + '[OR AND NOT]>>> + QUOTE>>> + PRIMTYPE>>> + + > LIST>>> + > VECTOR> + + 2> + <==? <1 .DC> REST> + 2> + ]>) + (.PT .PT>]>) + (ELSE <2 .DC>)>) + (.RST >]>) + (.PT + > + >]>) + (ELSE >)>> + >>) (D .DCL) TEM) + #DECL ((D) ) + >> + <==? <1 .TT> REST>>>> + ) + (.PT .GD) + (ELSE .CK)>) + (.PT .GD) + (.RST .STRU) + (ELSE ANY)>>)> + >>>> + + [<1 .TT> + !> + >]) + (ELSE )>)>>>>>>) + (ELSE + + > LIST>>> + >> + >> + > .PT>) + (ELSE ANY)>>)> + > + >> + > + >> + >> + > .PT)> + .GD) + (ELSE ANY)>>) + (ELSE )>>)> + >) + ( ATOM FORM SEGMENT> + > + >) + (> VECTOR> + + REST> + >> .PT> + <==? 2 > + <=? <2 .DC> '> + >> + <- 1>>> + <- 1>>> + .DC) + (ELSE [REST >])>>) + (.PT + ()) + (<1? .N> (!)) + (ELSE ([.N !]))> + !> -1> .PT) + (ELSE .O)>> + > + .DC)> + .GD) + (ELSE >)>>) + ( FIX> + <==? <1 .DC> OPT> + <==? <1 .DC> OPTIONAL>> + FIX> <1 .DC>) (ELSE 1)>> + + )>)> + >> + <0? .CNT>> .STRU) + ( (.ITYP !.DCL)) + (> + >> + (!.SDC !)) + (ELSE + (!.SDC + [.CNT !] + !))>) + (ELSE ([.CNT !.SDC] !))>>)>) + (.PT + >> + >> + <0? .CNT>> .GD) + ( + + <==? .SDC >>> + .DCL) + (<==? .SDC > + ([.CNT !] !)) + (> 0> + (!.SDC !)) + (ELSE + (!.SDC + [.CNT !] + !))>> + .GD)>) + (ELSE .ITYP)>>> + <=? .ITYP '> >> + >>> + + > .PT)> + .GD) + (ELSE ANY)>>)>>)>) + (.QOK >> > ) + ( OR>> + > + > + .IT) + (ELSE )>> + >) + ( AND>> + + + >>> + > + .ITYP) + (.RST ) (ELSE STRUCTURED)>) + (.PT + .DCL1) + (ELSE > .PT>)>) + (ELSE ANY)>>> + +" " + +>> + +> + +) (ANDOK <>) TT (OROK <>) + (IVAL )) + #DECL ((N VALUE LN) FIX (DC) (D) VECTOR) + >)> + + + 1> + > PRIMTYPE> + >> + >> + >> + > + > + > ,MAX-LENGTH) + (ELSE + > VECTOR> + + 1>> + > REST> + <==? .FST OPT> + <==? .FST OPTIONAL>> + + ) + (ELSE + 1>>>)>) + (ELSE + )>) + ( FIX> + > + 1>>>>) + (ELSE + )>) + ( >) + (ELSE )> + >> )>>)>) + ( + + >>) + (ELSE + >>)>) + (.MAXF >>) + (ELSE >>)>> + > + .IVAL) + (.QOK > >) (ELSE 0)>) + ( + ) + (ELSE )>> + + + MULTI> + + > + <==? <1 .DCL> MULTI> MULTI>>> + +> + + > >) + ( + ) + ( FORM> <>>)>)>> + +)) + #DECL ((FRM) (LN) FIX) + + > PRIMTYPE> + > ATOM> + + >>) + (<==? .TEM QUOTE> >) + (<==? .TEM NOT> <>)>>) + (> + > OR> + + + .TEM>>> + > + > .TEM)>) + (<==? .TEM AND> + + > )>> + > + .TEM) + ( > )>)>> + +" " + +> <==? .T1 >>> + + >>>> + +)) + > + '[BYTES STRING LOCD TUPLE FRAME]>> + .TYP>> + + + > + >> + >)> + .TYP) + ( >> + > OR> + >) + (<==? .TT NOT> ANY) + (<==? .TT QUOTE> >) + (<==? .TT PRIMTYPE> .TYP) + (ELSE .TT)>)>> + + + > + >> + >)> + + > + ) + (ELSE .TYP)>) + ( >> + > OR> + >> + .RES) (ELSE ANY)>) + (<==? .TT NOT> ANY) + (<==? .TT QUOTE> >) + (<==? .TT PRIMTYPE> <2 .TYP>) + (ELSE >)>)>> + +) "AUX" TY) + + + > + <==? <1 .TYP> OR> + >> + >>)> + + 2> <==? <1 .TYP> QUOTE>> + >>) + (<==? <1 .TYP> OR> + >>> + + > + >>)>> + >) + (ELSE >)>)> + + .TYP) + (> )>>>> + + + >> 2> + <2 .TT>) + (ELSE >)>>) + (ELSE .IT)>> + +" Define a decl for a given quoted object for maximum winnage." + +" " + +> BOOL-FALSE) + ( > + ) + (ELSE + >) (CNT 1) + (FRM ) SEGMENT>) (FRME .FRM) TT T1) + #DECL ((CNT) FIX (FRME) < ANY>) + >> + + >>) + (ELSE >>)> + ) + (>> .DC> .DC> + >) + (ELSE + + >>) + (ELSE >>)> + + )>>)>> + +" " + + + > OR> <==? .TT AND>> + )) + + ) + (ELSE )>) + (ELSE .IT)>> + >) + FORM>> + > ANY) + (> <2 .TT>) + (ELSE .TT)>) + (<==? .TT NOT> ANY) + (<==? .TT PRIMTYPE> + .DC) (ELSE ) FORM>)>) + (ELSE + + > ) + (ELSE STRUCTURED)> + ! + !>)>) + (> + ) + (ELSE !) FORM>)>) + (ELSE + STRUCTURED) + (ELSE ) FORM>)>)>> + + ()) (<1? .N> (ANY)) (ELSE ([.N ANY]))>> + +" TYPE-OK? are two type patterns compatible. If the patterns + don't parse, send user a message." + + <==? .P2 NO-RETURN>> NO-RETURN) + (> .TEM) + ( .TEM) + (ELSE .P1 .P2>)>> + +" TYPE-ATOM-OK? does an atom's initial value agree with its DECL?" + +) + (ELSE + )>> + +" Merge a group of type specs into an OR." + +" " + + (FTYP) FORM (LN) FIX) + <>) + (ELSE + )) + >> )> + NO-RETURN> .ORS) + (<==? .ORS NO-RETURN> <1 .TYPS>) + (ELSE >)>>>)>> + + (VALUE) LIST) + > <==? <1 .ELE> OR>> + >>) + (ELSE )> + .L1) + ( .L1> + .L1>> + >) + (ELSE >)> + )> + >>> + >>> + .TT) + (ELSE .L1)>> + .LST>> + .LST) + (ELSE 1>> .LST> .ELE)>>> + +) >>> + +) + > 2> )> + 1>>>>> + + > + > + + + ) + (ELSE )>) + ( + ) + (ELSE )>) + (ELSE + > + > + + > + + > 0>) + ( T) + ( <>) + ( 0>)> + >>) + (ELSE >>)> + + >) + (ELSE + >>)>)>>>> + +" " + +) (L2 )) + #DECL ((F1 F2) (VALUE TC TC2 L1 L2) FIX) + + > + >> + + + > + >> + -1) + (ELSE )>) + ( + + >>) + ( + >) + (ELSE + >)>) + (ELSE 0)>> + .F1 .F2>) + ( -1) + (ELSE 1)>) + ( -1) + (ELSE 1)>> + +) (L2 ) E1 E2) + #DECL ((V1 V2) (VALUE L1 L2) FIX) + 1) + ( -1) + (> >> + > + 1) (ELSE -1)>) + ( 1) + ( -1) + (ELSE >)>) + (ELSE + + 0) + (<==? > + >> + + + >>) + (ELSE + >)>) + ( ) + (ELSE )>> + >)>> + +> + >> + OR> + >>>) + (<==? <1 .D> QUOTE> >>) + (ELSE )>) + (ELSE .D)>> + +) SAMCNT TT TEM X Y) + #DECL ((L) (SAMCNT) FIX) + ATOM> + > + >> + + 2> + > + <=? >>> !) + FORM>> + ) FORM>>>>> + <1 .L>) + (ELSE + > + !) (LAST >)) + + 2> FIX>> + >> + > + >> + )>) + (ELSE + >) + (ELSE >)> + + > + >) + (ELSE )>) + (.TEM) + (ELSE )>)>) + ( REST> + <==? 2> + <==? <2 .ELE> ANY>> + > + > + ) + (ELSE )>) + (ELSE + >) + (ELSE >)> + >> + OPT> OPTIONAL) (ELSE <1 .ELE>)>> + 2> <==? <1 .ELE> REST>> + >>>) + (ELSE >)> + 3> + + >>> + >)>> + + > + <2 .TT>]>)>)> + > + ) (ELSE .TT)>)>) + (ELSE + > + > + > + ) (ELSE )>) + (ELSE + >) + (ELSE >)> + + + ) (ELSE .ELE)>) + (.TEM) + (ELSE )>)>)>> + >) + FORM>)>> + + .X) (ELSE [.N .X])>> + +) "AUX" X) + > > .X) + (ELSE )>) + (ELSE )>> + + ATOM) (ELSE )>> + +)) + #DECL ((VALUE) ATOM (ENTRY) (TYP) FIX) + >>>> + +