X-Git-Url: https://jxself.org/git/?p=pdp10-muddle.git;a=blobdiff_plain;f=mim%2Fdevelopment%2Fmim%2Fmimc%2Fnnotana.mud;fp=mim%2Fdevelopment%2Fmim%2Fmimc%2Fnnotana.mud;h=f06978ba1d14a2d39ff34eed65fa7ca3fc8e5c7c;hp=0000000000000000000000000000000000000000;hb=d73ace3f3292e320b461b8fcd2e9f5dc5d9684d7;hpb=d530283ea60fb0ddcc28e9c5bd072456afe06e07 diff --git a/mim/development/mim/mimc/nnotana.mud b/mim/development/mim/mimc/nnotana.mud new file mode 100644 index 0000000..f06978b --- /dev/null +++ b/mim/development/mim/mimc/nnotana.mud @@ -0,0 +1,325 @@ + + + + + + + +" This module contains analysis and generation functions for +NOT, TYPE? and ==?. See SYMANA for more details about ANALYSIS and +CODGEN for more detali abour code generation. +" + +"Analyze NOT usage make sure arg can be FALSE." + +>) (STR .TRUTH) + (SUNT .UNTRUTH)) + #DECL ((NOD) NODE (STR SUNT) LIST) + ) (TRUTH ()) + (UNTRUTH ())) + #DECL ((PRED) (TRUTH UNTRUTH) ) + > >) + (ELSE + > 1 NOT .NOD> + > ANY>> + + FALSE> + ) + ( + ) + (ELSE )>> + + )>> + + )> + .TEM> + +" Analyze N==? and ==? usage. Complain if types differ such that + the args can never be ==?." + +) + (WHON > .NOD>) (WHO ()) + KT NT (GLN .NOD) (GLE ())) + #DECL ((NOD) NODE (K) (WHON GLN) + (WHO GLE) ) + ) + (ELSE + 1> + <==? >>> + ,SUBR-CODE> + <==? LENGTH> + <==? >> 2>> + + > + + ,PARENT .NOD>> + + )> + ==? .NOD> + ANY> + ANY> + + >> FIX> + <==? >> FIX>> + + )> + )>> + + +" Ananlyze TYPE? usage warn about any potential losers by using +TYPE-OK?. " + +) (LN ) ITYP (ALLGOOD T) + (WHO ()) (FTYP ()) (FNOK <>) + (WHON > .NOD>) TTYP) + #DECL ((NOD) NODE (K) (LN) FIX (ITYP) ANY + (ALLGOOD) (WHON) > + (WHO) (FTYP) LIST) + >) + (ELSE + + )> + ANY TYPE?>> + + + ,QUOTE-CODE> + >>)> + >> + )> + .ITYP> + !.FTYP)>>>> + > + >> + > <1 .FTYP>) + (ELSE )>> + + .ITYP>>> + + ) (SYM <2 .L>)) + #DECL ((L) SYMTAB> (SYM) SYMTAB) + >> + + .UNTRUTH + .FLG + >>>> + .WHO>) + (.ALLGOOD ) + (ELSE + > + )> + ') + ( FALSE) + (.FNOK ATOM) + (ELSE ')> + .RTYP>)>> + + +) (LN )) + #DECL ((N) NODE (K) (LN) FIX) + ) + (ELSE + + ATOM VALID-TYPE?> + + >)>> + +) (LN )) + #DECL ((N) NODE (K) (LN) FIX) + ) + (ELSE + + ATOM TYPE-C> + ATOM TYPE-C>)> + + )>> + +) (LN ) N1 N2 T1 T2) + #DECL ((N N1 N2) NODE (K) (LN) FIX) + ) + (ELSE + .N> + > ANY > + > ANY > + ,QUOTE-CODE> + > + >)> + >> + >> STRING> + <==? .T2 STRING>> + + ) + (> ) + (ELSE )>)>> + +)) + #DECL ((N) NODE (K) (LN) FIX) + ) + (ELSE + 2 .N> + STRING S=?> + STRING S=?> + + )>> + +) (NM ) NN) + #DECL ((NN N) NODE (K) (NM) ATOM) + ) + (ELSE + + <==? .NM LBIND>> '(1 2)) + (ELSE 1)> .NM .N> + ATOM .NM> + >> > ANY .NM>)> + > ,QUOTE-CODE> + + > + + + >>> + > .R>) + (ELSE + > + > + ,QUOTE-CODE> + >>> + )> + STRING) + (<==? .NM OBLIST?> ') + (ELSE .NM)>>)>)>> + +) (NM ) ST) + #DECL ((N) NODE (K) (NM) ATOM) + ) + (ELSE + 2) + (ELSE 1)> .NM .N> + ' .NM>> + + .ST>> + ' .NM> + )>)> + > ,QUOTE-CODE> <==? .NM GET-DECL>> + + + >>> + > .R>) + (ELSE + '[LBIND GBIND OFFSET]> + ) + (.VERBOSE + )> + + ') + (ELSE .ST)> .R>)>)>> + +) (NM )) + #DECL ((N) NODE (K) (NM) ATOM) + ) + (ELSE + 1) + (ELSE '(1 2))> .NM .N> + OFFSET .NM> + >> + ' .NM>)> + > ,QUOTE-CODE> + >> + + + >>> + > .R>) + (ELSE + + FIX) + (>> OFFSET) + (ELSE ')>>)>)>> + +)) + #DECL ((N) NODE (K) (LN) FIX) + ) + (ELSE + 2 .N> + STRING STRCOMP> + STRING STRCOMP> + + )>> + +) (LN ) ST) + #DECL ((N) NODE (K) (LN) FIX) + ) + (ELSE + .N> + STRUCTURED SUBSTRUC>> + FIX SUBSTRUC>)> + FIX SUBSTRUC>)> + + > + ) + (ELSE STRUCTURED)> + SUBSTRUC>> + )>)> + '[STRING VECTOR UVECTOR BYTES]> + )> + .R>)>> + + + > + + + + + + + + + + + + + + + + + + + )> + +