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

SCM Repository

[diderot] Diff of /branches/vis12/src/compiler/simplify/simplify.sml
ViewVC logotype

Diff of /branches/vis12/src/compiler/simplify/simplify.sml

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

revision 2058, Tue Oct 30 10:38:25 2012 UTC revision 2059, Tue Oct 30 17:46:04 2012 UTC
# Line 28  Line 28 
28    (* convert an AST expression to an input initialization.  Note that the Diderot grammar    (* convert an AST expression to an input initialization.  Note that the Diderot grammar
29     * limits the forms of expression that we might encounter in this context.     * limits the forms of expression that we might encounter in this context.
30     *)     *)
31      fun expToInit exp = (case exp      fun expToInit (ty, exp) = (case exp
32             of AST.E_Lit(Literal.Int n) => InP.Int n             of AST.E_Lit(Literal.Int n) => InP.Int n
33              | AST.E_Lit(Literal.Float f) => InP.Real f              | AST.E_Lit(Literal.Float f) => InP.Real f
34              | AST.E_Lit(Literal.String s) => InP.String s              | AST.E_Lit(Literal.String s) => InP.String s
35              | AST.E_Lit(Literal.Bool b) => InP.Bool b              | AST.E_Lit(Literal.Bool b) => InP.Bool b
36              | AST.E_Tuple es => raise Fail "E_Tuple not yet implemented"              | AST.E_Tuple es => raise Fail "E_Tuple not yet implemented"
 (*  
37              | AST.E_Cons es => let              | AST.E_Cons es => let
38                  fun toReal (AST.E_Lit(Literal.Int n)) = FloatLit.fromInt n                  val shp = (case ty
39                    | toReal (AST.E_Lit(Literal.Float f)) = f                         of Ty.T_Tensor(Ty.Shape shp) => List.map (fn (Ty.DimConst d) => d) shp
40                    | toReal (AST.E_Coerce{e, ...}) = toReal e                          | _ => raise Fail "not tensor type"
                   | toReal _ = raise Fail "impossible"  
                 fun toTensor [e] = ??  
                   | toTensor (es as e1::_) = (case e1  
                        of AST.E_Cons _ => let  
                             val (shp, vs) = ??  
                             in  
                               (List.length es :: shp, List.concat vs)  
                             end  
                         | _ => ([List.length es], List.map toReal (e1::es))  
41                        (* end case *))                        (* end case *))
42                    fun flatten (AST.E_Lit(Literal.Int n), l) = FloatLit.fromInt n :: l
43                      | flatten (AST.E_Lit(Literal.Float f), l) = f :: l
44                      | flatten (AST.E_Coerce{e, ...}, l) = flatten(e, l)
45                      | flatten (AST.E_Cons es, l) = flattenList (es, l)
46                      | flatten _ = raise Fail "impossible"
47                    and flattenList ([], l) = l
48                      | flattenList (x::xs, l) = flatten(x, flattenList(xs, l))
49                  in                  in
50                    InP.Tensor(shp, Vector.fromList vs)                    InP.Tensor(shp, Vector.fromList(flattenList (es, [])))
51                  end                  end
52    (*
53              | AST.E_Seq es => ??              | AST.E_Seq es => ??
54              | AST.E_Coerce{srcTy, dstTy, e} => ??              | AST.E_Coerce{srcTy, dstTy, e} => ??
55  *)  *)
# Line 116  Line 114 
114                          inputs := (x, inp) :: !inputs                          inputs := (x, inp) :: !inputs
115                        end                        end
116                    | AST.D_Input(x, desc, SOME e) => let                    | AST.D_Input(x, desc, SOME e) => let
117                          val ty = Var.monoTypeOf x
118                        val inp = InP.INP{                        val inp = InP.INP{
119                                ty = Var.monoTypeOf x,                                ty = ty,
120                                name = Var.nameOf x,                                name = Var.nameOf x,
121                                desc = desc,                                desc = desc,
122                                init = SOME(expToInit e)                                init = SOME(expToInit(ty, e))
123                              }                              }
124                        in                        in
125                          inputs := (x, inp) :: !inputs                          inputs := (x, inp) :: !inputs

Legend:
Removed from v.2058  
changed lines
  Added in v.2059

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