|    145 // statement compilation |    147 // statement compilation | 
|    146 def compile_stmt(s: Stmt, env: Env) : (String, Env) = s match { |    148 def compile_stmt(s: Stmt, env: Env) : (String, Env) = s match { | 
|    147   case Skip => ("", env) |    149   case Skip => ("", env) | 
|    148   case Assign(x, a) => { |    150   case Assign(x, a) => { | 
|    149      val index = env.getOrElse(x, env.keys.size) |    151      val index = env.getOrElse(x, env.keys.size) | 
|    150     (compile_aexp(a, env) ++ compile_istore(index), env + (x -> index))  |    152      (compile_aexp(a, env) ++ compile_istore(index), env + (x -> index))  | 
|    151   }  |    153   }  | 
|    152   case If(b, bl1, bl2) => { |    154   case If(b, bl1, bl2) => { | 
|    153     val if_else = Fresh("If_else") |    155     val if_else = Fresh("If_else") | 
|    154     val if_end = Fresh("If_end") |    156     val if_end = Fresh("If_end") | 
|    155     val (instrs1, env1) = compile_block(bl1, env) |    157     val (instrs1, env1) = compile_block(bl1, env) | 
|    242 // post 2.5.0 ammonite |    244 // post 2.5.0 ammonite | 
|    243 import os._ |    245 import os._ | 
|    244  |    246  | 
|    245  |    247  | 
|    246 def compile_to_file(bl: Block, class_name: String) : Unit =  |    248 def compile_to_file(bl: Block, class_name: String) : Unit =  | 
|    247   write.over(pwd / s"$class_name.j", compile(bl, class_name))   |    249   os.write.over(os.pwd / s"$class_name.j", compile(bl, class_name))   | 
|    248  |    250  | 
|    249 def compile_and_run(bl: Block, class_name: String) : Unit = { |    251 def compile_and_run(bl: Block, class_name: String) : Unit = { | 
|    250   println(s"Start of compilation") |    252   println(s"Start of compilation") | 
|    251   compile_to_file(bl, class_name) |    253   compile_to_file(bl, class_name) | 
|    252   println(s"generated $class_name.j file") |    254   println(s"generated $class_name.j file") |