Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/simplify/simple-pp.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/simplify/simple-pp.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2489, Mon Oct 21 19:43:32 2013 UTC revision 2490, Mon Oct 21 21:17:25 2013 UTC
# Line 13  Line 13 
13    end = struct    end = struct
14    
15      structure PP = TextIOPP      structure PP = TextIOPP
16      structure TU = TypeUtil      structure Ty = SimpleTypes
17      structure S = Simple      structure S = Simple
18    
19      val indent = PP.Abs 2      val indent = PP.Abs 2
# Line 34  Line 34 
34      fun ppTyArgs (ppStrm, mvs) = let      fun ppTyArgs (ppStrm, mvs) = let
35            val string = PP.string ppStrm            val string = PP.string ppStrm
36            fun ppTyArg (_, mv) = (case mv            fun ppTyArg (_, mv) = (case mv
37                   of Types.TYPE tv => string(TU.toString(TU.resolve tv))                   of Ty.TY ty => string(Ty.toString ty)
38                    | Types.DIFF dv => string("#"^TU.diffToString(TU.resolveDiff dv))                    | Ty.DIFF k => string("#"^Int.toString k)
39                    | Types.SHAPE sv => string("$"^TU.shapeToString(TU.resolveShape sv))                    | Ty.SHAPE shp => string(concat[
40                    | Types.DIM dv => string("%"^TU.dimToString(TU.resolveDim dv))                          "$[", String.concatWith "," (List.map Int.toString shp), "]"
41                          ])
42                      | Ty.DIM d => string("%"^Int.toString d)
43                  (* end case *))                  (* end case *))
44            in            in
45              ppList ppTyArg ("<", ";", ">") (ppStrm, mvs)              ppList ppTyArg ("<", ";", ">") (ppStrm, mvs)
46            end            end
47    
48      fun ppVar (ppStrm, x) = PP.string ppStrm (Var.uniqueNameOf x)      fun ppVar (ppStrm, x) = PP.string ppStrm (SimpleVar.uniqueNameOf x)
49    
50      fun ppVarDecl ppStrm = let      fun ppVarDecl ppStrm = let
51            fun sp () = PP.space ppStrm 1            fun sp () = PP.space ppStrm 1
# Line 51  Line 53 
53            in            in
54              fn x => (              fn x => (
55                PP.openHBox ppStrm;                PP.openHBox ppStrm;
56                  case Var.kindOf x                  case SimpleVar.kindOf x
57                   of S.InputVar => (string "input"; sp())                   of S.InputVar => (string "input"; sp())
58                    | S.StrandOutputVar => (string "output"; sp())                    | S.StrandOutputVar => (string "output"; sp())
59                    | _ => ()                    | _ => ()
60                  (* end case *);                  (* end case *);
61                  string(TU.toString(#2(Var.typeOf x))); sp(); string(Var.uniqueNameOf x); string ";";                  string(Ty.toString(SimpleVar.typeOf x)); sp(); string(SimpleVar.uniqueNameOf x); string ";";
62                PP.closeBox ppStrm)                PP.closeBox ppStrm)
63            end            end
64    
# Line 70  Line 72 
72                   of S.E_Var x => var x                   of S.E_Var x => var x
73                    | S.E_Lit lit => string (Literal.toString lit)                    | S.E_Lit lit => string (Literal.toString lit)
74                    | S.E_Tuple es => ppArgs (ppStrm, es)                    | S.E_Tuple es => ppArgs (ppStrm, es)
75                    | S.E_Apply(f, [], args, _) => (var f; sp(); ppArgs (ppStrm, args))                    | S.E_Apply(f, args, _) => (var f; sp(); ppArgs (ppStrm, args))
76                    | S.E_Apply(f, mvs, args, _) => (                    | S.E_Prim(f, [], args, _) => (string(Var.nameOf f); sp(); ppArgs (ppStrm, args))
77                        var f; ppTyArgs (ppStrm, mvs); sp(); ppArgs (ppStrm, args))                    | S.E_Prim(f, mvs, args, _) => (
78                          string(Var.nameOf f); ppTyArgs (ppStrm, mvs); sp(); ppArgs (ppStrm, args))
79                    | S.E_Cons es => (                    | S.E_Cons es => (
80                        ppList ppVar ("[", ",", "]") (ppStrm, es))                        ppList ppVar ("[", ",", "]") (ppStrm, es))
81                    | S.E_Slice(x, indices, _) => (                    | S.E_Slice(x, indices, _) => (
82                        var x;                        var x;
83                        ppList ppIndex ("[", ",", "]") (ppStrm, indices))                        ppList ppIndex ("[", ",", "]") (ppStrm, indices))
84                    | S.E_Coerce{srcTy, dstTy, x} => (                    | S.E_Coerce{srcTy, dstTy, x} => (
85                        string "("; string(TU.toString dstTy); string ")"; var x)                        string "("; string(Ty.toString dstTy); string ")"; var x)
86                    | S.E_Input(ty, argName, desc, NONE) => (                    | S.E_Input(ty, argName, desc, NONE) => (
87                        string(concat["input(\"", argName, "\","]); sp();                        string(concat["input(\"", argName, "\","]); sp();
88                        string(concat["\"", String.toString desc, "\")"]))                        string(concat["\"", String.toString desc, "\")"]))
# Line 110  Line 113 
113                  case stmt                  case stmt
114                   of S.S_Var x => (                   of S.S_Var x => (
115                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
116                          string(TU.toString(#2(Var.typeOf x))); sp(); var x; string ";";                          string(Ty.toString(SimpleVar.typeOf x)); sp(); var x; string ";";
117                        PP.closeBox ppStrm)                        PP.closeBox ppStrm)
118                    | S.S_Assign(x, e) => (                    | S.S_Assign(x, e) => (
119                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
# Line 180  Line 183 
183            val string = PP.string ppStrm            val string = PP.string ppStrm
184            in            in
185              ppList              ppList
186                (fn (_, x) => (string(TU.toString(#2(Var.typeOf x))); sp(); ppVar (ppStrm, x)))                (fn (_, x) => (string(Ty.toString(SimpleVar.typeOf x)); sp(); ppVar (ppStrm, x)))
187                ("(", ",", ")")                ("(", ",", ")")
188                (ppStrm, params)                (ppStrm, params)
189            end            end
# Line 193  Line 196 
196            in            in
197              PP.openHBox ppStrm;              PP.openHBox ppStrm;
198                string "function"; sp();                string "function"; sp();
199                string(TU.toString(TU.rngOf(Var.monoTypeOf f)));                string(Ty.toString(Ty.rngOf(SimpleVar.typeOf f)));
200                sp(); var f; sp(); ppParams (ppStrm, params);                sp(); var f; sp(); ppParams (ppStrm, params);
201              PP.closeBox ppStrm;              PP.closeBox ppStrm;
202              nl();              nl();
# Line 220  Line 223 
223                  PP.openVBox ppStrm indent;                  PP.openVBox ppStrm indent;
224                    PP.openHBox ppStrm;                    PP.openHBox ppStrm;
225                      string "for"; sp();                      string "for"; sp();
226                      string(TU.toString(#2(Var.typeOf param))); sp(); var param;                      string(Ty.toString(SimpleVar.typeOf param)); sp(); var param;
227                      sp(); string "="; sp(); var lo; sp(); string ".."; sp(); var hi;                      sp(); string "="; sp(); var lo; sp(); string ".."; sp(); var hi;
228                    PP.closeBox ppStrm;                    PP.closeBox ppStrm;
229                    nl();                    nl();

Legend:
Removed from v.2489  
changed lines
  Added in v.2490

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0