progs/while-arrays/compile_arrays.sc
changeset 943 5365ef60707e
parent 870 739039774cee
child 958 fddf099a82f8
equal deleted inserted replaced
942:c82a45f48bfc 943:5365ef60707e
    86 type Env = Map[String, Int]
    86 type Env = Map[String, Int]
    87 
    87 
    88 // convenient string interpolations 
    88 // convenient string interpolations 
    89 // for generating instructions and labels
    89 // for generating instructions and labels
    90 
    90 
    91 implicit def sring_inters(sc: StringContext) = new {
    91 extension (sc: StringContext) {
    92     def i(args: Any*): String = "   " ++ sc.s(args:_*) ++ "\n"
    92     def i(args: Any*): String = "   " ++ sc.s(args:_*) ++ "\n"
    93     def l(args: Any*): String = sc.s(args:_*) ++ ":\n"
    93     def l(args: Any*): String = sc.s(args:_*) ++ ":\n"
    94 }
    94 }
       
    95 
    95 
    96 
    96 def compile_op(op: String) = op match {
    97 def compile_op(op: String) = op match {
    97   case "+" => i"iadd"
    98   case "+" => i"iadd"
    98   case "-" => i"isub"
    99   case "-" => i"isub"
    99   case "*" => i"imul"
   100   case "*" => i"imul"
   213 //
   214 //
   214 //    java arr/arr
   215 //    java arr/arr
   215 
   216 
   216 // automating the above
   217 // automating the above
   217 
   218 
   218 // pre-2.5.0 ammonite 
       
   219 // import ammonite.ops._
       
   220 
       
   221 // post 2.5.0 ammonite
       
   222 import os._
   219 import os._
   223 
       
   224 
       
   225 
   220 
   226 def compile_to_file(bl: Block, class_name: String) : Unit = 
   221 def compile_to_file(bl: Block, class_name: String) : Unit = 
   227   write.over(pwd / s"$class_name.j", compile(bl, class_name))  
   222   write.over(pwd / s"$class_name.j", compile(bl, class_name))  
   228 
   223 
   229 def compile_and_run(bl: Block, class_name: String) : Unit = {
   224 def compile_and_run(bl: Block, class_name: String) : Unit = {
   244 }
   239 }
   245 
   240 
   246 
   241 
   247 
   242 
   248 
   243 
   249 // runs with amm2 and amm3
   244 
   250