Annotation of researchv10no/cmd/sml/src/basics/printbas.sml, revision 1.1

1.1     ! root        1: (* Copyright 1989 by AT&T Bell Laboratories *)
        !             2: (* printbasics.sml *)
        !             3: 
        !             4: structure PrintBasics = struct
        !             5: 
        !             6: local open PrintUtil Access Basics PrintType System.Control in
        !             7: 
        !             8: val printTuple = printClosedSequence ("(", ",", ")")
        !             9: 
        !            10: val printList = printClosedSequence ("[", ",", "]") (* printList not used here *)
        !            11:                
        !            12: fun printPath [n:int] = (print n)
        !            13:   | printPath (n::p) = (printPath p; print "."; print n)
        !            14:   | printPath [] = ()
        !            15: 
        !            16: fun printAccess a =
        !            17:     if !internals then case a
        !            18:            of (LVAR v) => (print "@"; print v)
        !            19:             | (SLOT n) => (print "#"; print n)
        !            20:             | (PATH p) => (print "$"; printPath p)
        !            21:             | (INLINE p) => (print "%"; print(Prim.inLineName p))
        !            22:        else ()
        !            23: 
        !            24: fun printRep UNDECIDED = print "UNDECIDED"
        !            25:   | printRep (TAGGED i) = (print "TAGGED["; print i; print "]")
        !            26:   | printRep (CONSTANT i) = (print "CONSTANT["; print i; print "]")
        !            27:   | printRep TRANSPARENT = print "TRANSPARENT"
        !            28:   | printRep TRANSU = print "TRANSU"
        !            29:   | printRep TRANSB = print "TRANSB"
        !            30:   | printRep REF = print "REF"
        !            31:   | printRep (VARIABLE a) = (print "VARIABLE["; printAccess a; print "]")
        !            32: 
        !            33: fun printDcon (DATACON{name,rep=VARIABLE(access),...}) =
        !            34:                (printSym(name); printAccess access)
        !            35:   | printDcon (DATACON{name,...}) = printSym(name)
        !            36: 
        !            37: fun printDatacon(DATACON{name,typ,...}) =
        !            38:     (printSym name; print " : "; printType(!typ))
        !            39: 
        !            40: fun printExn(DATACON{name,typ,...}) =
        !            41:     (printSym name; print " : "; printType(!typ))
        !            42: 
        !            43: fun printVar (UNKNOWNvar s) = (printSym s; if !internals then print "?" else())
        !            44:   | printVar (VALvar {access,name,...}) = (print(formatQid name); printAccess access)
        !            45:   | printVar (OVLDvar {name,...}) = printSym(name)
        !            46: 
        !            47: fun printVariable(VALvar{name,access,typ}) = 
        !            48:     (print(formatQid name); printAccess access;
        !            49:      print " : "; printType(!typ))
        !            50:   | printVariable(OVLDvar{name,...}) = (printSym name; print " : overloaded")
        !            51:   | printVariable(UNKNOWNvar name) = (printSym name; print " : ?")
        !            52: 
        !            53: fun printStr(STRstr _) = print "STRstr"
        !            54:   | printStr(INDstr _) = print "INDstr"
        !            55:   | printStr(SHRstr _) = print "SHRstr"
        !            56:   | printStr(NULLstr) = print "NULLstr"
        !            57: 
        !            58: fun printStrVar(STRvar{name,access,binding}) =
        !            59:     (print(formatQid name); printAccess access;
        !            60:      if !internals then (print "["; printStr binding; print "]") else ())
        !            61: 
        !            62: fun printBinding(VARbind(var)) = (print "val "; printVariable var)
        !            63:   | printBinding(CONbind(con)) = (print "con "; printDatacon con)
        !            64:   | printBinding(TYCbind(ref tycon)) = (print "type "; printTycon tycon)
        !            65:   | printBinding(TYVbind v) = (print "type "; printTyvar v)
        !            66:   | printBinding(SIGbind(SIGvar{name,...})) = (print "signature "; printSym name)
        !            67:   | printBinding(STRbind(strVar)) = (print "structure "; printStrVar strVar)
        !            68:   | printBinding(FCTbind(FCTvar{name,...})) = (print "functor "; printSym name)
        !            69:   | printBinding(FIXbind(FIXvar{name,binding=NONfix})) = (print "nonfix "; printSym name)
        !            70:   | printBinding(FIXbind(FIXvar{name,binding=INfix _})) = (print "infix "; printSym name)
        !            71: 
        !            72: fun printTable(table) =
        !            73:     IntStrMap.app (fn (_,_,binding) => (printBinding(binding); newline())) table
        !            74: 
        !            75: fun printStructure(STRstr{stamp,table,env,...}) =
        !            76:     let fun printTenv (t: tycon array) =
        !            77:         let fun foreach i =
        !            78:                 (print i; print " "; PrintType.printTycon(t sub i); newline();
        !            79:                  foreach(i+1))
        !            80:          in print "types\n";
        !            81:             foreach 0
        !            82:             handle Subscript => print "end types\n"
        !            83:         end
        !            84:      in
        !            85:       (print "STRstr["; print stamp; print "]\n";
        !            86:        case env
        !            87:          of REL{t,...} => printTenv(t)
        !            88:           | DIR => ();
        !            89:        printTable table)
        !            90:     end
        !            91:   | printStructure(INDstr _) = ErrorMsg.impossible "printStructure: INDstr"
        !            92:   | printStructure(SHRstr _) = ErrorMsg.impossible "printStructure: SHRstr"
        !            93:   | printStructure(NULLstr) = ErrorMsg.impossible "printStructure: NULLstr"
        !            94: 
        !            95:   fun pr_path'[] = "]"
        !            96:   |   pr_path'[x:int] = makestring x ^ "]"
        !            97:   |   pr_path'((x:int)::rest)= makestring x ^ "," ^ pr_path' rest
        !            98:   fun pr_path path = "[" ^ pr_path' path
        !            99: 
        !           100: end (* local *)
        !           101: 
        !           102: end (* PrintBasics *)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.