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

SCM Repository

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

Diff of /trunk/src/compiler/ast/ast-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 62  Line 62 
62                        ppList ppIndex ("[", ",", "]") (ppStrm, indices))                        ppList ppIndex ("[", ",", "]") (ppStrm, indices))
63                    | AST.E_Cond(e1, e2, e3, _) => (                    | AST.E_Cond(e1, e2, e3, _) => (
64                        pp e2; sp(); string "if"; sp(); pp e1; sp(); string "else"; sp(); pp e3)                        pp e2; sp(); string "if"; sp(); pp e1; sp(); string "else"; sp(); pp e3)
65                      | AST.E_Coerce{dstTy, e, ...} => (
66                          PP.openHBox ppStrm;
67                            string "("; string(TU.toString dstTy); string ")";
68                          PP.closeBox ppStrm;
69                          case e
70                           of AST.E_Var _ => pp e
71                            | AST.E_Lit _ => pp e
72                            | AST.E_Tuple _ => pp e
73                            | AST.E_Cons _ => pp e
74                            | _ => (string "("; pp e; string ")")
75                          (* end case *))
76                  (* end case *))                  (* end case *))
77            in            in
78              pp e              pp e
# Line 151  Line 162 
162                        nl())                        nl())
163                    | AST.S_Die => (string "die;"; nl())                    | AST.S_Die => (string "die;"; nl())
164                    | AST.S_Stabilize => (string "stabilize;"; nl())                    | AST.S_Stabilize => (string "stabilize;"; nl())
165                      | AST.S_Return e => (
166                          PP.openHBox ppStrm;
167                            string "return"; sp(); ppExp(ppStrm, e); string ";";
168                          PP.closeBox ppStrm;
169                          nl())
170                    | AST.S_Print args => (                    | AST.S_Print args => (
171                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
172                          string "print"; sp(); ppArgs (ppStrm, args); string ";";                          string "print"; sp(); ppArgs (ppStrm, args); string ";";
# Line 167  Line 183 
183              PP.closeBox ppStrm              PP.closeBox ppStrm
184            end            end
185    
186      fun ppStrand (ppStrm, {name, params, state, methods}) = let      fun ppParams (ppStrm, params) = let
187              fun sp () = PP.space ppStrm 1
188              val string = PP.string ppStrm
189              in
190                ppList
191                  (fn (_, x) => (string(TU.toString(#2(Var.typeOf x))); sp(); string(Var.nameOf x)))
192                  ("(", ",", ")")
193                  (ppStrm, params)
194              end
195    
196        fun ppStrand (ppStrm, AST.Strand{name, params, state, methods}) = let
197            fun sp () = PP.space ppStrm 1            fun sp () = PP.space ppStrm 1
198            fun nl () = PP.newline ppStrm            fun nl () = PP.newline ppStrm
199            val string = PP.string ppStrm            val string = PP.string ppStrm
# Line 179  Line 205 
205            in            in
206              PP.openHBox ppStrm;              PP.openHBox ppStrm;
207                string "strand"; sp(); string(Atom.toString name); sp();                string "strand"; sp(); string(Atom.toString name); sp();
208                ppList (fn (_, x) => (string(TU.toString(#2(Var.typeOf x))); sp(); var x))                ppParams (ppStrm, params);
                 ("(", ",", ")") (ppStrm, params);  
209              PP.closeBox ppStrm;              PP.closeBox ppStrm;
210              nl();              nl();
211              PP.openVBox ppStrm indent;              PP.openVBox ppStrm indent;
# Line 214  Line 239 
239                  PP.closeBox ppStrm;                  PP.closeBox ppStrm;
240                  nl())                  nl())
241               | AST.D_Var vdcl => (ppVarDecl ppStrm vdcl; nl())               | AST.D_Var vdcl => (ppVarDecl ppStrm vdcl; nl())
242                 | AST.D_Func(f, params, body) => (
243                    PP.openHBox ppStrm;
244                      string "function"; sp();
245                      string(TU.toString(TU.rngOf(Var.monoTypeOf f)));
246                      sp(); var f; sp(); ppParams (ppStrm, params);
247                    PP.closeBox ppStrm;
248                    nl();
249                    case body
250                     of AST.S_Block stms => ppBlock (ppStrm, stms)
251                      | stm => ppBlock (ppStrm, [stm])
252                    (* end case *))
253               | AST.D_Strand def => ppStrand (ppStrm, def)               | AST.D_Strand def => ppStrand (ppStrm, def)
254               | AST.D_InitialArray(create, iters) => (* FIXME *) ()               | AST.D_InitialArray(create, iters) => (* FIXME *) ()
255               | AST.D_InitialCollection(create, iters) => (* FIXME *) ()               | AST.D_InitialCollection(create, iters) => (* FIXME *) ()

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