X-Git-Url: https://jxself.org/git/?p=pdp10-muddle.git;a=blobdiff_plain;f=%3Cmdl.comp%3E%2Fchkdcl.mud.44;fp=%3Cmdl.comp%3E%2Fchkdcl.mud.44;h=91046b49dac234b2c8129ce3334ed403148d7c95;hp=0000000000000000000000000000000000000000;hb=3395a5e4ef72d59cdb6832af7808dc9c2cf2a413;hpb=363cc6ead5cf4df20759797fe46b5dc29b3886e9 diff --git a//chkdcl.mud.44 b//chkdcl.mud.44 new file mode 100644 index 0000000..91046b4 --- /dev/null +++ b//chkdcl.mud.44 @@ -0,0 +1,1343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +> + + <==? .D NO-RETURN>> ANY) + ( > .D) + ( ATOM> >> + > + .TEM) + ( + + ANY> >>) + (<==? <1 .D> FIX> FIX) + ( 2> <==? <1 .D> NOT>> ANY) + ( + SEGMENT>) + (ELSE FORM>)>) + ( + [ OPT> OPTIONAL) (ELSE <1 .D>)> + !>]) + (ELSE .D)>> + + + <==? 2> + LIST>> + + <==? 2> + LIST>> + <> T>> + >) + (<=? .P1 '> .P2) + (<=? .P2 '> .P1) + (ELSE .P2>) FORM>)>> + + <>>> + + <> <>>> + +>) + > + +> + > + .PAT1) + (> ATOM> >) + (> ATOM> ) + ( > + ) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>> + + + + > + .X> + > + .X>> + +) + > >>>> + + + > + > + .TYP> + + >>) + ( ) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>> + + > .TYP> > + > .PAT> + >>>>> + +" " + +) + #FALSE (EMPTY-TYPE-FORM!-ERRORS)) + ( '![OR AND NOT PRIMTYPE!]> ) + ( QUOTE> <2-ELEM .FORT>> + > .PAT>) + (ELSE )>> + +) TEM1) + #DECL ((FORT) ) + + >> + #FALSE (EMPTY-OR-MATCH!-ERRORS)) + (ELSE + > ATOM> + ) + (> + + >) + (ELSE T)>> + >> + >>> + + )> + >) + (ELSE + + >)>)>) + (ELSE )>)>) + (> )> + >> + > + > <1 .AL>) + (ELSE + >)>>>)>>)>) + (<==? .ACTOR NOT> ) + (ELSE )>> + + + <==? <1 .FORTYP> PRIMTYPE>> + ) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>) + ( ) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>> + +" " + + + <>) + (<==? .TYP APPLICABLE> + ) + (ELSE + ')>>) + ( + + '![LIST VECTOR UVECTOR TEMPLATE STRING TUPLE + STORAGE BYTES!]>>)>) + (<==? .WRD LOCATIVE> + ) + (<==? .WRD APPLICABLE> + >) + (<==? .TYP STRUCTURED> + >) + ()>)> + ) + (ELSE + > >) + (ELSE <>)>)>>> + + + (PTYP) >) + + + <==? 2> + <==? <1 .PAT1> PRIMTYPE>> + <2 .PTYP>> .PAT1) + (ELSE >)>)>) + ( + ) + ( + T> + ) + (ELSE >)>)>) + ( + <==? <2 .PTYP>> + >) + (ELSE >)>)>) + ( + + >> + > OR> ) + (<==? .ACTOR NOT> + ) + (ELSE + >> + > .PTYP) + ( .TEM) + ( ANY)>)>) + (>> + +
>) + (ELSE + ) SEGMENT>)>) + (ELSE T)>)>)>> + +" " + +) + + > + OR> <==? <1 .PAT> AND>>> + ) + (ELSE + 2> + .PAT>>> + ) + (<==? <2 .NF> ANY> ) + ( + + + >> + ANY) (ELSE T)>) + (.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 AND NOT PRIMTYPE!]> ) + (ELSE + 2> LIST>> + ) + ( 2> FIX>> + ) + ( 2> FIX>> + >) + ( + <> T>>> + >) + ( <> T>>> + >) + (ELSE + > + + + 1> + <==? <1 .TEM> OR> + + .EX> + + >> + >> + .TEM)>)>)>)>> + +" " + + (MLF1 MLF2) FIX) + > + > #FALSE (EMPTY-FORM-IN-DECL!-ERRORS))> + + ATOM> .RPAT>) + ( FORM> .RPAT>) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>) + ( >) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>> + .FST) + (ELSE + <> <> <>> + > + > + 2> FIX>> + ' <> <> <>> + <2 .F1>> + >) + (ELSE >)>) + ( <2 .F1>> + + + <2 .F2>>>>> + >)>) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>) + (> + + + '[REST FIX]>) + (ELSE + + [.MLF1 FIX] + '[REST FIX]>)>>> + ) + (ELSE >)>) + ( + ) + (ELSE + )>> + >)>) + (ELSE >) (ELSE <>)>)>) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>)>> + +)) + ) SEGMENT>) + (ELSE ) FORM>)>> + + >) + (ELSE >)>> + +) + >> + >>> + #FALSE (EMPTY-FORM-IN-DECL!-ERRORS))> + + ATOM> .RPAT>) + ( FORM> .RPAT>) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>) + ( >) + (ELSE #FALSE (BAD-SYNTAX!-ERRORS))>> + .FST) + (ELSE + <> <>> + 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) (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 <>) (INOPT <>) + (S2 0 <> <> '[]>) (FL ()) (FP '<>) FSTL + SEGF RTEM) + #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) ) + >> + > >> + >> + > >> + >>> + >> + <1 .FP>) (ELSE .FP)>>)> + + > + .T2) + (ELSE <>)>) + ( + > + .T1) + (ELSE <>)>) + (ELSE )>>> + >>) + (.MAYBEF >) (ELSE )>) + (ELSE >)>> + + + >> + + + >>> + >) + ( + 1>> (.TEM)>)> + > + <0? >>> + > + <0? >>>> + > + >)> + >> + >>>> + + >>> + + >>>>> + + >>> + + <1 .FP>) + (ELSE .FP)>>) + (ELSE + + > + <1 .T1>) + (ELSE .T1)>>)>) + (>>> + + <1 .FP>) + (ELSE .FP)>>) + (ELSE + + > + <1 .T1>) + (ELSE .T1)>>)>)>) + (ELSE )>) + ( + > + >> + )> + + .ANDF + + >>>> + VECTOR> + <=? <2 >> .TEM>> + 1>>) + ( .FL> <=? .TEM <1 .FL>>> + ) + (ELSE >>)>)>) + (ELSE + >> + <1 .FP>) (ELSE .FP)>>) + (ELSE )>) + (ELSE )>)>>)>)>> + +" " + +) (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 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" (LN 0) (CNT 0) ITYP DC SDC DCL (N 0) DC1 (QOK <>) + (FMOK <>) STRU (GD '<>) (GP ()) (K 0) (DCL1 .DCL2) + (SEGF <>) TEM) + #DECL ((LN CNT K N) FIX (DCL) (SDC DC) VECTOR + (GD) (GP) LIST) + >> + .PT>>)> + >> + )> + BYTES> + >)> + ) (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)>>> + +" " + +) + .DCL) + (>)>) + (.RST + >) + (> ) + (ELSE .N>>)> + > ) + (ELSE BYTES)>) + (ELSE FIX)>> + +> STRING> 7) + ( 2> + > FIX>> + .TEM)>> + +) (ANDOK <>) TT (OROK <>)) + #DECL ((N VALUE LN) FIX (DC) (D) VECTOR) + >> + + + 1> + > PRIMTYPE> + >> + >> + >> + > + > + > FIX>> + > + > + 2> FIX>> + <2 .DC>) + (ELSE 0)>) + (ELSE + > VECTOR> + + 1>> + '[REST OPT OPTIONAL]> ) + ( FIX> + > + 1>>>>) + (ELSE )>) + ( >) + (ELSE )> + >> >>)>) + ( ,MINL > + FIX>) + (.QOK > >) (ELSE 0)>) + ( 0) + (ELSE )>> + +> + + >) + ( + ) + ( 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)>)>> + +) "AUX" TY) + >>> + + 2> <==? <1 .TYP> QUOTE>> + >>) + (<==? <1 .TYP> OR> + >>> + + > + >>)>> + >) + (ELSE >)>)> + + .TYP) + (> )>>>> + + + + >> 2> + <2 .TT>) + (ELSE >)>>) + (ELSE .IT)>> + +"DETERMINE IF A TYPE PATTERN REQUIRES DEFERMENT 0=> NO 1=> YES 2=> DONT KNOW " + +" " + + + + > + '![STRING TUPLE LOCD FRAME BYTES!]> + 1) + (ELSE 0)>) + (> ) + (ELSE 2)>) + ( >> + > QUOTE> >>) + (<==? .TEM PRIMTYPE> >) + ( >>> + >> + + .STATE> >> + > + .STATE) + (<==? .TEM NOT> 2) + (<==? .TEM AND> + + + > 2> + )>> + > + .STATE) + (ELSE >)>) + (ELSE 2)>>> + +" Define a decl for a given quoted object for maximum winnage." + +" " + + > ) + (<==? BYTES> + ) SEGMENT>) + (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) + (<==? BYTES> + + .DC) + (<==? 2> + ) + ( <+ FIX> .N>>)>) + (<==? .TT PRIMTYPE> + .DC) + (ELSE ) FORM>)>) + (ELSE + > ) + (ELSE STRUCTURED)> + ! + !>)>) + (> + + <==? .TEM BYTES>> ) + (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?" + + + >> + +" Merge a group of type specs into an OR." + +" " + + <>) + (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) + ( <>) + (ELSE )> + >>) + (ELSE >>)> + + >) + (ELSE >>)>)>>>> +" " + +) (L2 )) + #DECL ((F1 F2) (L1 L2) FIX) + + > 0>) + ()>> + + +> + >> + OR> + >>>) + (<==? <1 .D> QUOTE> >>) + (ELSE )>) + (ELSE .D)>> + + +) SAMCNT TT TEM) + #DECL ((L) (SAMCNT) FIX) + > + !) (LAST >)) + + 2> FIX>> + >> + > + >> + )>) + (ELSE + >) + (ELSE >)> + + > + >) + (ELSE )>) + (.TEM) + (ELSE )>)>) + ( REST> + <==? 2> + <==? <2 .ELE> ANY>> + > + > + ) + (ELSE )>) + (ELSE + >) + (ELSE >)> + >> + OPT> OPTIONAL) (ELSE <1 .ELE>)>> + + >>> + + > + > + ) (ELSE .TT)>)>) + (ELSE + > + > + > + ) (ELSE )>) + (ELSE + >) + (ELSE >)> + + + ) (ELSE .ELE)>) + (.TEM) + (ELSE )>)>)>> + >) + FORM>> + + .X)(ELSE [.N .X])>> + +