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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/codegen/print-as-c.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/codegen/print-as-c.sml

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

revision 3995, Sat Jun 18 20:00:19 2016 UTC revision 3996, Sun Jun 19 15:21:12 2016 UTC
# Line 166  Line 166 
166                    | CL.D_Typedef(name, ty) => (                    | CL.D_Typedef(name, ty) => (
167                        inHBox (fn () => (str "typedef"; sp(); ppTy(ty, SOME name); str ";"));                        inHBox (fn () => (str "typedef"; sp(); ppTy(ty, SOME name); str ";"));
168                        PP.newline strm)                        PP.newline strm)
169                    | CL.D_Template(params, dcl) => raise Fail "unexpected template decl in C code"                    | CL.D_Template _ => raise Fail "unexpected template decl in C code"
170                      | CL.D_Namespace _ => raise Fail "unexpected namespace decl in C code"
171                  (* end case *))                  (* end case *))
172            and ppParam (CL.PARAM(attrs, ty, x)) = (            and ppParam (CL.PARAM(attrs, ty, x)) = (
173                  ppAttrs attrs;                  ppAttrs attrs;
# Line 245  Line 246 
246                    | CL.S_DoWhile(blk, e) =>                    | CL.S_DoWhile(blk, e) =>
247                        inHBox (fn () => (                        inHBox (fn () => (
248                          str "do"; ppStmAsBlock blk; sp(); str "while"; sp(); ppExp e))                          str "do"; ppStmAsBlock blk; sp(); str "while"; sp(); ppExp e))
249                    | CL.S_For(inits, cond, incrs, blk) => let                    | CL.S_For(ty, dcls, cond, incrs, blk) => inHBox (fn () => (
                       fun ppInit (ty, x, e) = inHBox (fn () => (  
                             ppTy(ty, SOME x);  
                             sp(); str "="; sp();  
                             ppExp e))  
                       in  
                         inHBox (fn () => (  
250                            str "for"; sp(); str "(";                            str "for"; sp(); str "(";
251                            ppList {pp = ppInit, sep = fn () => str ",", l = inits};                        case dcls
252                           of (x, e)::rest => (
253                                ppTy(ty, SOME x); sp(); str "="; sp(); ppExp e;
254                                List.app
255                                  (fn (x, e) => (str ","; sp(); str x; sp(); str "="; sp(); ppExp e))
256                                    rest)
257                            | [] => ()
258                          (* end case *);
259                            str ";"; sp();                            str ";"; sp();
260                            ppExp cond; str ";"; sp();                            ppExp cond; str ";"; sp();
261                            ppList {pp = ppExp, sep = fn () => str ",", l = incrs};                            ppList {pp = ppExp, sep = fn () => str ",", l = incrs};
262                            str ")";                            str ")";
263                            ppStmAsBlock blk))                            ppStmAsBlock blk))
                       end  
264                    | CL.S_Return(SOME e) => inHBox (fn () => (str "return"; sp(); ppExp e; str ";"))                    | CL.S_Return(SOME e) => inHBox (fn () => (str "return"; sp(); ppExp e; str ";"))
265                    | CL.S_Return _ => str "return;"                    | CL.S_Return _ => str "return;"
266                    | CL.S_Break => str "break;"                    | CL.S_Break => str "break;"

Legend:
Removed from v.3995  
changed lines
  Added in v.3996

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