equal
deleted
inserted
replaced
447 case While(b, bl) => |
447 case While(b, bl) => |
448 if (eval_bexp(b, env)) eval_stmt(While(b, bl), eval_bl(bl, env)) |
448 if (eval_bexp(b, env)) eval_stmt(While(b, bl), eval_bl(bl, env)) |
449 else env |
449 else env |
450 case WriteS(s: String) => { println(s); env } |
450 case WriteS(s: String) => { println(s); env } |
451 case Write(s: String) => { println(env(s)); env } |
451 case Write(s: String) => { println(env(s)); env } |
452 case Read(s: String) => tokenizer(Console.readLine) match { |
452 //case Read(s: String) => tokenizer(Console.readLine) match { |
453 case List(T_NUM(n)) => env + (s -> n.toInt) |
453 // case List(T_NUM(n)) => env + (s -> n.toInt) |
454 case _ => { println("not a number"); eval_stmt(Read(s: String), env) } |
454 // case _ => { println("not a number"); eval_stmt(Read(s: String), env) } |
455 } |
455 //} |
456 } |
456 } |
457 |
457 |
458 def eval_bl(bl: Block, env: Env) : Env = bl match { |
458 def eval_bl(bl: Block, env: Env) : Env = bl match { |
459 case Nil => env |
459 case Nil => env |
460 case s::bl => eval_bl(bl, eval_stmt(s, env)) |
460 case s::bl => eval_bl(bl, eval_stmt(s, env)) |
669 |
669 |
670 |
670 |
671 //examples |
671 //examples |
672 //println(compile("test", p9)) |
672 //println(compile("test", p9)) |
673 //compile_run("loops.while") |
673 //compile_run("loops.while") |
674 compile_run("p.while") |
674 //compile_run("p.while") |
|
675 compile_run("fib.while") |
675 //compile_run("test.while") |
676 //compile_run("test.while") |