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

SCM Repository

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

Diff of /branches/staging/src/compiler/c-util/print-as-c.sml

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

revision 2745, Sun Sep 28 12:50:50 2014 UTC revision 2746, Wed Oct 1 21:08:30 2014 UTC
# Line 1  Line 1 
1  (* print-as-c.sml  (* print-as-c.sml
2   *   *
3   * COPYRIGHT (c) 2011 The Diderot Project (http://diderot-language.cs.uchicago.edu)   * COPYRIGHT (c) 2014 The Diderot Project (http://diderot-language.cs.uchicago.edu)
4   * All rights reserved.   * All rights reserved.
5   *   *
6   * Print the CLang representation using C99 syntax.   * Print the CLang representation using C99 syntax.
# Line 158  Line 158 
158                  ppTy(ty, SOME(CL.varToString x)))                  ppTy(ty, SOME(CL.varToString x)))
159            and ppInit init = (case init            and ppInit init = (case init
160                   of CL.I_Exp e => ppExp e                   of CL.I_Exp e => ppExp e
161                      | CL.I_Exps fields => (
162                          str "{";
163                          PP.openHVBox strm indent;
164                            List.app (fn init => (
165                                PP.break strm;
166                                inHBox (fn () => (ppInit init; str ","))))
167                              fields;
168                          PP.closeBox strm;
169                          str "}")
170                    | CL.I_Struct fields => (                    | CL.I_Struct fields => (
171                        str "{";                        str "{";
172                        PP.openHVBox strm indent;                        PP.openHVBox strm indent;
# Line 229  Line 238 
238                            str ")";                            str ")";
239                            ppStms blk))                            ppStms blk))
240                        end                        end
                   | CL.S_Call(f, args) => inHBox (fn () => (str f; ppArgs args; str ";"))  
241                    | 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 ";"))
242                    | CL.S_Return _ => str "return;"                    | CL.S_Return _ => str "return;"
243                    | CL.S_Break => str "break;"                    | CL.S_Break => str "break;"
# Line 250  Line 258 
258                    | CL.E_BinOp(e1, rator, e2) => (ppExp e1; str(CL.binopToString rator); ppExp e2)                    | CL.E_BinOp(e1, rator, e2) => (ppExp e1; str(CL.binopToString rator); ppExp e2)
259                    | CL.E_UnOp(rator, e) => (str(CL.unopToString rator); ppExp e)                    | CL.E_UnOp(rator, e) => (str(CL.unopToString rator); ppExp e)
260                    | CL.E_PostOp(e, rator) => (ppExp e; str(CL.postopToString rator))                    | CL.E_PostOp(e, rator) => (ppExp e; str(CL.postopToString rator))
261                    | CL.E_Apply(f, args) => (str f; ppArgs args)                    | CL.E_Apply(e, args) => (ppExp e; ppArgs args)
262                    | CL.E_Subscript(e1, e2) => (ppExp e1; str "["; ppExp e2; str "]")                    | CL.E_Subscript(e1, e2) => (ppExp e1; str "["; ppExp e2; str "]")
263                    | CL.E_Select(e, f) => (ppExp e; str "."; str f)                    | CL.E_Select(e, f) => (ppExp e; str "."; str f)
264                    | CL.E_Indirect(e, f) => (ppExp e; str "->"; str f)                    | CL.E_Indirect(e, f) => (ppExp e; str "->"; str f)
# Line 282  Line 290 
290                        end                        end
291                    | CL.E_Bool b => str(Bool.toString b)                    | CL.E_Bool b => str(Bool.toString b)
292                    | CL.E_Str s => str(concat["\"", String.toCString s, "\""])                    | CL.E_Str s => str(concat["\"", String.toCString s, "\""])
293                      | CL.E_Char c => str(concat["'", Char.toCString c, "'"])
294                    | CL.E_Sizeof ty => (str "sizeof("; ppTy(ty, NONE); str ")")                    | CL.E_Sizeof ty => (str "sizeof("; ppTy(ty, NONE); str ")")
295                  (* end case *))                  (* end case *))
296            and ppArgs args = (            and ppArgs args = (

Legend:
Removed from v.2745  
changed lines
  Added in v.2746

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