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

SCM Repository

[diderot] Diff of /branches/vis12/src/compiler/cl-target/print-as-cl.sml
ViewVC logotype

Diff of /branches/vis12/src/compiler/cl-target/print-as-cl.sml

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

revision 2707, Sat Sep 20 15:11:18 2014 UTC revision 2708, Sat Sep 20 18:46:49 2014 UTC
# Line 1  Line 1 
1  (* print-as-cl.sml  (* print-as-cl.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 OpenCL syntax.   * Print the CLang representation using OpenCL 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 280  Line 288 
288                        end                        end
289                    | CL.E_Bool b => str(Bool.toString b)                    | CL.E_Bool b => str(Bool.toString b)
290                    | CL.E_Str s => str(concat["\"", String.toCString s, "\""])                    | CL.E_Str s => str(concat["\"", String.toCString s, "\""])
291                      | CL.E_Char c => str(concat["'", Char.toCString c, "'"])
292                    | CL.E_Sizeof ty => (str "sizeof("; ppTy(ty, NONE); str ")")                    | CL.E_Sizeof ty => (str "sizeof("; ppTy(ty, NONE); str ")")
293                  (* end case *))                  (* end case *))
294            and ppArgs args = (            and ppArgs args = (

Legend:
Removed from v.2707  
changed lines
  Added in v.2708

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