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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/ast/ast-pp.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/ast/ast-pp.sml

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

revision 3410, Thu Nov 12 02:57:49 2015 UTC revision 3411, Thu Nov 12 03:42:25 2015 UTC
# Line 156  Line 156 
156                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
157                          string "else"; sp(); ppBlockStmt (ppStrm, s2);                          string "else"; sp(); ppBlockStmt (ppStrm, s2);
158                        PP.closeBox ppStrm)                        PP.closeBox ppStrm)
159                    | AST.S_Foreach(x, e, s) => (                    | AST.S_Foreach((x, e), s) => (
160                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
161                          string "foreach"; sp(); string "(";                          string "foreach"; sp(); string "(";
162                          ppIter (ppStrm, (x, e));                          ppIter (ppStrm, (x, e));
163                          string ")"; sp();                          string ")"; sp();
164                          ppBlockStmt (ppStrm, s);                          ppBlockStmt (ppStrm, s);
165                        PP.closeBox ppStrm)                        PP.closeBox ppStrm)
166                    | AST.S_Assign(x, e) => (                    | AST.S_Assign((x, _), e) => (
167                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
168                          string(Var.nameOf x); sp(); string "="; sp(); ppExp(ppStrm, e); string ";";                          string(Var.nameOf x); sp(); string "="; sp(); ppExp(ppStrm, e); string ";";
169                        PP.closeBox ppStrm;                        PP.closeBox ppStrm;
# Line 234  Line 234 
234              string "}";  nl()              string "}";  nl()
235            end            end
236    
237      fun ppDecl ppStrm = let      fun ppInput ppStrm = let
238            fun sp () = PP.space ppStrm 1            fun sp () = PP.space ppStrm 1
239            fun nl () = PP.newline ppStrm            fun nl () = PP.newline ppStrm
240            val string = PP.string ppStrm            val string = PP.string ppStrm
# Line 243  Line 243 
243              | ppDesc (SOME desc) = (              | ppDesc (SOME desc) = (
244                  string(concat["(\"", String.toString desc, "\")"]); sp())                  string(concat["(\"", String.toString desc, "\")"]); sp())
245            in            in
246              fn AST.D_Const vd => (ppVarDecl ppStrm vd; nl())              fn ((x, SOME e), desc) => (
              | AST.D_Input((x, NONE), desc) => (  
247                  PP.openHBox ppStrm;                  PP.openHBox ppStrm;
248                    string "input"; sp();                    string "input"; sp();
249                    ppDesc desc;                    ppDesc desc;
250                    string(TU.toString(#2(Var.typeOf x))); sp(); var x; string ";";                    string(TU.toString(#2(Var.typeOf x))); sp(); var x;
251                      sp(); string "="; sp(); ppExp(ppStrm, e); string ";";
252                  PP.closeBox ppStrm;                  PP.closeBox ppStrm;
253                  nl())                  nl())
254               | AST.D_Input((x, SOME e), desc) => (               | ((x, NONE), desc) => (
255                  PP.openHBox ppStrm;                  PP.openHBox ppStrm;
256                    string "input"; sp();                    string "input"; sp();
257                    ppDesc desc;                    ppDesc desc;
258                    string(TU.toString(#2(Var.typeOf x))); sp(); var x;                    string(TU.toString(#2(Var.typeOf x))); sp(); var x; string ";";
                   sp(); string "="; sp(); ppExp(ppStrm, e); string ";";  
259                  PP.closeBox ppStrm;                  PP.closeBox ppStrm;
260                  nl())                  nl())
261               | AST.D_Var vdcl => (ppVarDecl ppStrm vdcl; nl())            end
262    
263        fun ppDecl ppStrm = let
264              fun sp () = PP.space ppStrm 1
265              fun nl () = PP.newline ppStrm
266              val string = PP.string ppStrm
267              fun var x = string(Var.nameOf x)
268              fun ppDesc NONE = ()
269                | ppDesc (SOME desc) = (
270                    string(concat["(\"", String.toString desc, "\")"]); sp())
271              in
272                fn AST.D_Var vdcl => (ppVarDecl ppStrm vdcl; nl())
273               | AST.D_Func(f, params, body) => (               | AST.D_Func(f, params, body) => (
274                  PP.openHBox ppStrm;                  PP.openHBox ppStrm;
275                    string "function"; sp();                    string "function"; sp();
# Line 273  Line 283 
283                  (* end case *))                  (* end case *))
284            end            end
285    
286      fun output (outS, AST.Program{props, globals, strand, init, create, update}) = let      fun ppCreate (ppStrm, cr) = (
287              PP.openVBox ppStrm (PP.Abs 0);
288                PP.openVBox ppStrm indent;
289                  case cr
290                   of AST.C_Grid(d, stmt) => (
291                        PP.string ppStrm (concat["grid(", Int.toString d, ") "]);
292                        ppBlockStmt (ppStrm, stmt))
293                    | AST.C_Collection stmt => (
294                        PP.string ppStrm "collection ";
295                        ppBlockStmt (ppStrm, stmt))
296                  (* end case *);
297                PP.closeBox ppStrm;
298                PP.newline ppStrm;
299              PP.closeBox ppStrm)
300    
301        fun output (outS, prog) = let
302              val AST.Program{
303                      props, const_dcls, input_dcls, globals,
304                      strand, init, create, update
305                    } = prog
306            val ppStrm = PP.openOut {dst = outS, wid = 120}            val ppStrm = PP.openOut {dst = outS, wid = 120}
307            fun sp () = PP.space ppStrm 1            fun sp () = PP.space ppStrm 1
308            fun nl () = PP.newline ppStrm            fun nl () = PP.newline ppStrm
# Line 293  Line 322 
322                  string (StrandUtil.propsToString props);                  string (StrandUtil.propsToString props);
323                  PP.newline ppStrm;                  PP.newline ppStrm;
324                PP.closeBox ppStrm;                PP.closeBox ppStrm;
325                  List.app (ppVarDecl ppStrm) const_dcls;
326                  List.app (ppInput ppStrm) input_dcls;
327                List.app (ppDecl ppStrm) globals;                List.app (ppDecl ppStrm) globals;
328                ppStrand (ppStrm, strand);                ppStrand (ppStrm, strand);
329                ppTopBlock ("initially", init);                ppTopBlock ("initially", init);
330                PP.openHBox ppStrm;                ppCreate (ppStrm, create);
                 case create  
                  of (SOME dim, expr) => (  
                       string "grid("; string(Int.toString dim); string ")"; sp();  
                       ppExp (ppStrm, expr); nl())  
                   | (NONE, expr) => (  
                       string "collection"; sp();  
                       ppExp (ppStrm, expr); nl())  
                 (* end case *);  
               PP.closeBox ppStrm;  
331                ppTopBlock ("update", update);                ppTopBlock ("update", update);
332                string "/* Program end */"; PP.newline ppStrm;                string "/* Program end */"; PP.newline ppStrm;
333              PP.closeBox ppStrm;              PP.closeBox ppStrm;

Legend:
Removed from v.3410  
changed lines
  Added in v.3411

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