117 |
trBlock(env, thenBlk), |
trBlock(env, thenBlk), |
118 |
trBlock(env, elseBlk))] |
trBlock(env, elseBlk))] |
119 |
| IL.S_For(x, e1, e2, blk) => let |
| IL.S_For(x, e1, e2, blk) => let |
|
val ty = cvtTy(V.ty x) |
|
120 |
val x' = T.Var.var(cvtTy(V.ty x), V.name x) |
val x' = T.Var.var(cvtTy(V.ty x), V.name x) |
121 |
val env' = V.Map.insert(env, x, x') |
val env' = V.Map.insert(env, x, x') |
122 |
in [ |
in [ |
123 |
T.Stmt.for( |
T.Stmt.for(x', trExp(env, e1), trExp(env, e2), trBlock(env', blk)) |
|
[(ty, x', trExp(env, e1))], |
|
|
T.Expr.lte(T.Expr.var x', trExp(env, e2)), |
|
|
[(x', T.Expr.add(T.Expr.var x', T.Expr.intLit 1))], |
|
|
trBlock(env', blk)) |
|
124 |
] end |
] end |
125 |
| IL.S_Cons(lhs, args) => |
| IL.S_Cons(lhs, args) => |
126 |
[T.Stmt.cons(lookup(env, lhs), trExps(env, args))] |
[T.Stmt.cons(lookup(env, lhs), trExps(env, args))] |