equal
  deleted
  inserted
  replaced
  
    
    
|    117     def i(args: Any*): String = "   " ++ sc.s(args:_*) ++ "\n" |    117     def i(args: Any*): String = "   " ++ sc.s(args:_*) ++ "\n" | 
|    118     def l(args: Any*): String = sc.s(args:_*) ++ ":\n" |    118     def l(args: Any*): String = sc.s(args:_*) ++ ":\n" | 
|    119 } |    119 } | 
|    120  |    120  | 
|    121 // this allows you to write things like |    121 // this allows you to write things like | 
|    122 // i"add" and l"Lable" |    122 // i"add" and l"Label" | 
|    123  |    123  | 
|    124  |    124  | 
|    125 // environments  |    125 // environments  | 
|    126 type Env = Map[String, Int] |    126 type Env = Map[String, Int] | 
|    127  |    127  | 
|    203 } |    203 } | 
|    204  |    204  | 
|    205 // main compilation function for blocks |    205 // main compilation function for blocks | 
|    206 def compile(bl: Block, class_name: String) : String = { |    206 def compile(bl: Block, class_name: String) : String = { | 
|    207   val instructions = compile_block(bl, Map.empty)._1 |    207   val instructions = compile_block(bl, Map.empty)._1 | 
|    208   (beginning ++ instructions.mkString ++ ending).replaceAllLiterally("XXX", class_name) |    208   (beginning ++ instructions ++ ending).replaceAllLiterally("XXX", class_name) | 
|    209 } |    209 } | 
|    210  |    210  | 
|    211  |    211  | 
|    212 // compiling and running files |    212 // compiling and running files | 
|    213 // |    213 // | 
|    255 } |    255 } | 
|    256  |    256  | 
|    257  |    257  | 
|    258 // Fibonacci numbers as a bare-bone test-case |    258 // Fibonacci numbers as a bare-bone test-case | 
|    259 val fib_test =  |    259 val fib_test =  | 
|    260   List(Assign("n", Num(10)),            //  n := 10;                      |    260   List(Assign("n", Num(9)),            //  n := 10;                      | 
|    261        Assign("minus1",Num(0)),         //  minus1 := 0; |    261        Assign("minus1",Num(0)),         //  minus1 := 0; | 
|    262        Assign("minus2",Num(1)),         //  minus2 := 1; |    262        Assign("minus2",Num(1)),         //  minus2 := 1; | 
|    263        Assign("temp",Num(0)),           //  temp := 0; |    263        Assign("temp",Num(0)),           //  temp := 0; | 
|    264        While(Bop("<",Num(0),Var("n")),  //  while n > 0 do  { |    264        While(Bop("<",Num(0),Var("n")),  //  while n > 0 do  { | 
|    265           List(Assign("temp",Var("minus2")), //  temp := minus2; |    265           List(Assign("temp",Var("minus2")), //  temp := minus2; |