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 175, Sat Jul 24 16:53:55 2010 UTC revision 221, Tue Aug 3 20:13:55 2010 UTC
# Line 73  Line 73 
73                        var f; ppTyArgs (ppStrm, mvs); sp(); ppArgs (ppStrm, args))                        var f; ppTyArgs (ppStrm, mvs); sp(); ppArgs (ppStrm, args))
74                    | S.E_Cons es => (                    | S.E_Cons es => (
75                        ppList ppVar ("[", ",", "]") (ppStrm, es))                        ppList ppVar ("[", ",", "]") (ppStrm, es))
76                      | S.E_Input(argName, NONE) =>
77                          string(concat["input(\"", argName, "\")"])
78                      | S.E_Input(argName, SOME default) => (
79                          string "inputWithDefault"; string "(";
80                          string (concat["\"", argName, "\""]); string ","; sp();
81                          var default; string ")")
82                      | S.E_Field fld => (
83                          string "field"; sp(); string(FieldDef.toString fld))
84                  (* end case *))                  (* end case *))
85            in            in
86              pp e              pp e
# Line 80  Line 88 
88    
89      and ppArgs (ppStrm, args) = ppList ppVar ("(", ",", ")") (ppStrm, args)      and ppArgs (ppStrm, args) = ppList ppVar ("(", ",", ")") (ppStrm, args)
90    
91      fun ppBlock (ppStrm, vars, stms) = let      fun ppBlock (ppStrm, vars, S.Block stms) = let
92            fun sp () = PP.space ppStrm 1            fun sp () = PP.space ppStrm 1
93            fun nl () = PP.newline ppStrm            fun nl () = PP.newline ppStrm
94            val string = PP.string ppStrm            val string = PP.string ppStrm
95            fun var x = string(Var.uniqueNameOf x)            fun var x = string(Var.uniqueNameOf x)
96            fun ppStmt stmt = (case stmt            fun ppStmt stmt = (case stmt
97                   of S.S_Block stms => ppBlock (ppStrm, [], stms)                   of S.S_Assign(x, e) => (
                   | S.S_Assign(x, e) => (  
98                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
99                          var x; sp(); string "="; sp(); ppExp(ppStrm, e); string ";";                          var x; sp(); string "="; sp(); ppExp(ppStrm, e); string ";";
100                        PP.closeBox ppStrm;                        PP.closeBox ppStrm;
101                        nl())                        nl())
102                    | S.S_IfThenElse(x, S.S_Block stms, S.S_Block[]) => (                    | S.S_IfThenElse(x, S.Block[s1], S.Block[]) => (
                       PP.openHBox ppStrm;  
                         string "if"; sp(); ppVar(ppStrm, x);  
                         sp(); ppBlock (ppStrm, [], stms);  
                       PP.closeBox ppStrm)  
                   | S.S_IfThenElse(x, s1, S.S_Block[]) => (  
103                        PP.openVBox ppStrm indent;                        PP.openVBox ppStrm indent;
104                          PP.openHBox ppStrm;                          PP.openHBox ppStrm;
105                            string "if"; sp(); ppVar(ppStrm, x);                            string "if"; sp(); ppVar(ppStrm, x);
# Line 106  Line 108 
108                          ppStmt s1;                          ppStmt s1;
109                        PP.closeBox ppStrm;                        PP.closeBox ppStrm;
110                        nl())                        nl())
111                    | S.S_IfThenElse(x, S.S_Block stms1, S.S_Block stms2) => (                    | S.S_IfThenElse(x, blk, S.Block[]) => (
112                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
113                          string "if"; sp(); ppVar(ppStrm, x);                          string "if"; sp(); ppVar(ppStrm, x);
114                          sp(); ppBlock (ppStrm, [], stms1);                          sp(); ppBlock (ppStrm, [], blk);
                       PP.closeBox ppStrm;  
                       PP.openHBox ppStrm;  
                         string "else"; sp(); ppBlock (ppStrm, [], stms2);  
115                        PP.closeBox ppStrm)                        PP.closeBox ppStrm)
116                    | S.S_IfThenElse(x, S.S_Block stms1, s2) => raise Fail "FIXME"                    | S.S_IfThenElse(x, S.Block[s1], S.Block[s2]) => (
                   | S.S_IfThenElse(x, s1, S.S_Block stms2) => raise Fail "FIXME"  
                   | S.S_IfThenElse(x, s1, s2) => (  
117                        PP.openVBox ppStrm indent;                        PP.openVBox ppStrm indent;
118                          PP.openHBox ppStrm;                          PP.openHBox ppStrm;
119                            string "if"; sp(); ppVar(ppStrm, x);                            string "if"; sp(); ppVar(ppStrm, x);
# Line 130  Line 127 
127                          ppStmt s2;                          ppStmt s2;
128                        PP.closeBox ppStrm;                        PP.closeBox ppStrm;
129                        nl())                        nl())
130                      | S.S_IfThenElse(x, blk1, blk2) => (
131                          PP.openHBox ppStrm;
132                            string "if"; sp(); ppVar(ppStrm, x);
133                            sp(); ppBlock (ppStrm, [], blk1);
134                          PP.closeBox ppStrm;
135                          PP.openHBox ppStrm;
136                            string "else"; sp(); ppBlock (ppStrm, [], blk2);
137                          PP.closeBox ppStrm)
138                    | S.S_New(actor, args) => (                    | S.S_New(actor, args) => (
139                        PP.openHBox ppStrm;                        PP.openHBox ppStrm;
140                          string "new"; sp(); string(Atom.toString actor); sp();                          string "new"; sp(); string(Atom.toString actor); sp();
# Line 150  Line 155 
155              PP.closeBox ppStrm              PP.closeBox ppStrm
156            end            end
157    
     fun ppVarsAndStmt (ppStrm, vars, S.S_Block stms) = ppBlock(ppStrm, vars, stms)  
       | ppVarsAndStmt (ppStrm, vars, stm) = ppBlock(ppStrm, vars, [stm])  
   
158      fun ppActor ppStrm (S.Actor{name, params, state, stateInit, methods}) = let      fun ppActor ppStrm (S.Actor{name, params, state, stateInit, methods}) = let
159            fun sp () = PP.space ppStrm 1            fun sp () = PP.space ppStrm 1
160            fun nl () = PP.newline ppStrm            fun nl () = PP.newline ppStrm
161            val string = PP.string ppStrm            val string = PP.string ppStrm
162            fun var x = string(Var.nameOf x)            fun var x = string(Var.nameOf x)
163            fun ppMethod (S.M_Method(name, body)) = (            fun ppMethod (S.Method(name, body)) = (
164                  nl(); string(Atom.toString name); nl(); ppVarsAndStmt (ppStrm, [], body))                  nl(); string(Atom.toString name); nl(); ppBlock (ppStrm, [], body))
165            in            in
166              PP.openHBox ppStrm;              PP.openHBox ppStrm;
167                string "actor"; sp(); string(Atom.toString name); sp();                string "actor"; sp(); string(Atom.toString name); sp();
# Line 169  Line 171 
171              nl();              nl();
172              PP.openVBox ppStrm indent;              PP.openVBox ppStrm indent;
173                string "{";                string "{";
174                ppVarsAndStmt (ppStrm, state, stateInit);                ppBlock (ppStrm, state, stateInit);
175                List.app ppMethod methods;                List.app ppMethod methods;
176              PP.closeBox ppStrm;              PP.closeBox ppStrm;
177              nl();              nl();
# Line 181  Line 183 
183            in            in
184              PP.openVBox ppStrm (PP.Abs 0);              PP.openVBox ppStrm (PP.Abs 0);
185                PP.string ppStrm "/* Simplified Program start */"; PP.newline ppStrm;                PP.string ppStrm "/* Simplified Program start */"; PP.newline ppStrm;
186                ppVarsAndStmt (ppStrm, globals, globalInit);                ppBlock (ppStrm, globals, globalInit);
187                List.app (ppActor ppStrm) actors;                List.app (ppActor ppStrm) actors;
188                PP.string ppStrm "/* Program end */"; PP.newline ppStrm;                PP.string ppStrm "/* Program end */"; PP.newline ppStrm;
189              PP.closeBox ppStrm;              PP.closeBox ppStrm;

Legend:
Removed from v.175  
changed lines
  Added in v.221

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