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

SCM Repository

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

Diff of /trunk/src/compiler/simplify/simple-pp.sml

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

revision 2475, Sat Oct 12 17:45:57 2013 UTC revision 2476, Mon Oct 14 09:36:13 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                        case desc                        case desc
# Line 118  Line 121 
121                  case stmt                  case stmt
122                   of S.S_Var x => (                   of S.S_Var x => (
123                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
124                          string(TU.toString(#2(Var.typeOf x))); sp(); var x; string ";";                          string(Ty.toString(SimpleVar.typeOf x)); sp(); var x; string ";";
125                        PP.closeBox ppStrm)                        PP.closeBox ppStrm)
126                    | S.S_Assign(x, e) => (                    | S.S_Assign(x, e) => (
127                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
# Line 188  Line 191 
191            val string = PP.string ppStrm            val string = PP.string ppStrm
192            in            in
193              ppList              ppList
194                (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)))
195                ("(", ",", ")")                ("(", ",", ")")
196                (ppStrm, params)                (ppStrm, params)
197            end            end
# Line 201  Line 204 
204            in            in
205              PP.openHBox ppStrm;              PP.openHBox ppStrm;
206                string "function"; sp();                string "function"; sp();
207                string(TU.toString(TU.rngOf(Var.monoTypeOf f)));                string(Ty.toString(Ty.rngOf(SimpleVar.typeOf f)));
208                sp(); var f; sp(); ppParams (ppStrm, params);                sp(); var f; sp(); ppParams (ppStrm, params);
209              PP.closeBox ppStrm;              PP.closeBox ppStrm;
210              nl();              nl();
# Line 228  Line 231 
231                  PP.openVBox ppStrm indent;                  PP.openVBox ppStrm indent;
232                    PP.openHBox ppStrm;                    PP.openHBox ppStrm;
233                      string "for"; sp();                      string "for"; sp();
234                      string(TU.toString(#2(Var.typeOf param))); sp(); var param;                      string(Ty.toString(SimpleVar.typeOf param)); sp(); var param;
235                      sp(); string "="; sp(); var lo; sp(); string ".."; sp(); var hi;                      sp(); string "="; sp(); var lo; sp(); string ".."; sp(); var hi;
236                    PP.closeBox ppStrm;                    PP.closeBox ppStrm;
237                    nl();                    nl();

Legend:
Removed from v.2475  
changed lines
  Added in v.2476

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