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 2355, Sun Apr 7 11:35:08 2013 UTC revision 2356, Sun Apr 7 14:45:25 2013 UTC
# Line 8  Line 8 
8    
9  structure SimplePP : sig  structure SimplePP : sig
10    
11      val output : TextIO.outstream * Simple.program -> unit      val output : TextIO.outstream * string * Simple.program -> unit
12    
13    end = struct    end = struct
14    
# Line 78  Line 78 
78                    | S.E_Slice(x, indices, _) => (                    | S.E_Slice(x, indices, _) => (
79                        var x;                        var x;
80                        ppList ppIndex ("[", ",", "]") (ppStrm, indices))                        ppList ppIndex ("[", ",", "]") (ppStrm, indices))
81                      | S.E_Coerce{srcTy, dstTy, x} => (
82                          string "("; string(TU.toString dstTy); string ")"; var x)
83                    | S.E_Input(ty, argName, desc, NONE) => (                    | S.E_Input(ty, argName, desc, NONE) => (
84                        string(concat["input(\"", argName, "\","]); sp();                        string(concat["input(\"", argName, "\","]); sp();
85                        string(concat["\"", String.toString desc, "\")"]))                        string(concat["\"", String.toString desc, "\")"]))
# Line 153  Line 155 
155                        PP.closeBox ppStrm)                        PP.closeBox ppStrm)
156                    | S.S_Die => string "die;"                    | S.S_Die => string "die;"
157                    | S.S_Stabilize => string "stabilize;"                    | S.S_Stabilize => string "stabilize;"
158                      | S.S_Return x => (
159                          PP.openHBox ppStrm;
160                            string "return"; sp(); ppVar(ppStrm, x); string ";";
161                          PP.closeBox ppStrm)
162                    | S.S_Print args => (                    | S.S_Print args => (
163                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
164                          string "print"; sp(); ppArgs (ppStrm, args); string ";";                          string "print"; sp(); ppArgs (ppStrm, args); string ";";
165                        PP.closeBox ppStrm;                        PP.closeBox ppStrm)
                       nl())  
166                  (* end case *))                  (* end case *))
167            in            in
168              PP.openVBox ppStrm (PP.Abs 0);              PP.openVBox ppStrm (PP.Abs 0);
# Line 170  Line 175 
175              PP.closeBox ppStrm              PP.closeBox ppStrm
176            end            end
177    
178        fun ppParams (ppStrm, params) = let
179              fun sp () = PP.space ppStrm 1
180              val string = PP.string ppStrm
181              in
182                ppList
183                  (fn (_, x) => (string(TU.toString(#2(Var.typeOf x))); sp(); ppVar (ppStrm, x)))
184                  ("(", ",", ")")
185                  (ppStrm, params)
186              end
187    
188        fun ppFunc ppStrm (S.Func{f, params, body}) = let
189              fun sp () = PP.space ppStrm 1
190              fun nl () = PP.newline ppStrm
191              val string = PP.string ppStrm
192              fun var x = ppVar (ppStrm, x)
193              in
194                PP.openHBox ppStrm;
195                  string "function"; sp();
196                  string(TU.toString(TU.rngOf(Var.monoTypeOf f)));
197                  sp(); var f; sp(); ppParams (ppStrm, params);
198                PP.closeBox ppStrm;
199                nl();
200                ppBlock (ppStrm, [], body);
201                nl()
202              end
203    
204      fun ppInit (ppStrm, S.Initially{isArray, rangeInit, iters, create}) = let      fun ppInit (ppStrm, S.Initially{isArray, rangeInit, iters, create}) = let
205            fun sp () = PP.space ppStrm 1            fun sp () = PP.space ppStrm 1
206            fun nl () = PP.newline ppStrm            fun nl () = PP.newline ppStrm
# Line 214  Line 245 
245            in            in
246              PP.openHBox ppStrm;              PP.openHBox ppStrm;
247                string "strand"; sp(); string(Atom.toString name); sp();                string "strand"; sp(); string(Atom.toString name); sp();
248                ppList (fn (_, x) => (string(TU.toString(#2(Var.typeOf x))); sp(); var x))                ppParams (ppStrm, params);
                 ("(", ",", ")") (ppStrm, params);  
249              PP.closeBox ppStrm;              PP.closeBox ppStrm;
250              nl();              nl();
251              PP.openVBox ppStrm indent;              PP.openVBox ppStrm indent;
# Line 227  Line 257 
257              string "}";  nl()              string "}";  nl()
258            end            end
259    
260      fun output (outS, S.Program{globals, globalInit, strands, init}) = let      fun output (outS, msg, S.Program{globals, globalInit, funcs, strands, init}) = let
261            val ppStrm = PP.openOut {dst = outS, wid = 120}            val ppStrm = PP.openOut {dst = outS, wid = 120}
262            fun nl () = PP.newline ppStrm            fun nl () = PP.newline ppStrm
263            in            in
264              PP.openVBox ppStrm (PP.Abs 0);              PP.openVBox ppStrm (PP.Abs 0);
265                PP.string ppStrm "/* Simplified Program start */"; nl();                PP.string ppStrm (concat[
266                      "/* Simplified Program (after ", msg, ") start */"
267                    ]); nl();
268                  List.app (ppFunc ppStrm) funcs;
269                ppBlock (ppStrm, globals, globalInit);                ppBlock (ppStrm, globals, globalInit);
270                nl();                nl();
271                ppInit (ppStrm, init);                ppInit (ppStrm, init);

Legend:
Removed from v.2355  
changed lines
  Added in v.2356

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