|    148      l"$loop_end", env1) |    148      l"$loop_end", env1) | 
|    149   } |    149   } | 
|    150   case Write(x) =>  |    150   case Write(x) =>  | 
|    151     (i"iload ${env(x)} \t\t; $x" ++  |    151     (i"iload ${env(x)} \t\t; $x" ++  | 
|    152      i"invokestatic XXX/XXX/write(I)V", env) |    152      i"invokestatic XXX/XXX/write(I)V", env) | 
|    153   case Read(x) => { |    153   //case Read(x) => { | 
|    154     val index = env.getOrElse(x, env.keys.size)  |    154   //  val index = env.getOrElse(x, env.keys.size)  | 
|    155     (i"invokestatic XXX/XXX/read()I" ++  |    155   //  (i"invokestatic XXX/XXX/read()I" ++  | 
|    156      i"istore $index \t\t; $x", env + (x -> index)) |    156   //   i"istore $index \t\t; $x", env + (x -> index)) | 
|    157   } |    157   //} | 
|    158 } |    158 } | 
|    159  |    159  | 
|    160 // compilation of a block (i.e. list of instructions) |    160 // compilation of a block (i.e. list of instructions) | 
|    161 def compile_block(bl: Block, env: Env) : (String, Env) = bl match { |    161 def compile_block(bl: Block, env: Env) : (String, Env) = bl match { | 
|    162   case Nil => ("", env) |    162   case Nil => ("", env) | 
|    177  |    177  | 
|    178  |    178  | 
|    179  |    179  | 
|    180 // Fibonacci numbers as a bare-bone test-case |    180 // Fibonacci numbers as a bare-bone test-case | 
|    181 val fib_test =  |    181 val fib_test =  | 
|    182   List(Assign("n", Num(9)),            //  n := 10;                      |    182   List(Assign("n", Num(9)),            //  n := 9;                      | 
|    183        Assign("minus1",Num(0)),         //  minus1 := 0; |    183        Assign("minus1",Num(0)),         //  minus1 := 0; | 
|    184        Assign("minus2",Num(1)),         //  minus2 := 1; |    184        Assign("minus2",Num(1)),         //  minus2 := 1; | 
|    185        Assign("temp",Num(0)),           //  temp := 0; |    185        Assign("temp",Num(0)),           //  temp := 0; | 
|    186        While(Bop("<",Num(0),Var("n")),  //  while n > 0 do  { |    186        While(Bop("<",Num(0),Var("n")),  //  while 0 < n do  { | 
|    187           List(Assign("temp",Var("minus2")), //  temp := minus2; |    187           List(Assign("temp",Var("minus2")), //  temp := minus2; | 
|    188                Assign("minus2",Aop("+",Var("minus1"),Var("minus2"))),  |    188                Assign("minus2",Aop("+",Var("minus1"),Var("minus2"))),  | 
|    189                                         //  minus2 := minus1 + minus2; |    189                                         //  minus2 := minus1 + minus2; | 
|    190                Assign("minus1",Var("temp")), //  minus1 := temp; |    190                Assign("minus1",Var("temp")), //  minus1 := temp; | 
|    191                Assign("n",Aop("-",Var("n"),Num(1))))), //  n := n - 1 }; |    191                Assign("n",Aop("-",Var("n"),Num(1))))), //  n := n - 1 }; |