equal
deleted
inserted
replaced
219 case class Bop(o: String, a1: Exp, a2: Exp) extends BExp |
219 case class Bop(o: String, a1: Exp, a2: Exp) extends BExp |
220 |
220 |
221 // calculating the maximal needed stack size |
221 // calculating the maximal needed stack size |
222 def max_stack_exp(e: Exp): Int = e match { |
222 def max_stack_exp(e: Exp): Int = e match { |
223 case Call(_, args) => args.map(max_stack_exp).sum |
223 case Call(_, args) => args.map(max_stack_exp).sum |
224 case If(a, e1, e2) => max_stack_bexp(a) + (List(max_stack_exp(e1), max_stack_exp(e1)).max) |
224 case If(a, e1, e2) => max_stack_bexp(a) + (List(max_stack_exp(e1), max_stack_exp(e2)).max) |
225 case Write(e) => max_stack_exp(e) + 1 |
225 case Write(e) => max_stack_exp(e) + 1 |
226 case Var(_) => 1 |
226 case Var(_) => 1 |
227 case Num(_) => 1 |
227 case Num(_) => 1 |
228 case Aop(_, a1, a2) => max_stack_exp(a1) + max_stack_exp(a2) |
228 case Aop(_, a1, a2) => max_stack_exp(a1) + max_stack_exp(a2) |
229 case Sequ(e1, e2) => List(max_stack_exp(e1), max_stack_exp(e2)).max |
229 case Sequ(e1, e2) => List(max_stack_exp(e1), max_stack_exp(e2)).max |
477 println("Time: " + time_needed(2, ("java " + class_name + "/" + class_name).!)) |
477 println("Time: " + time_needed(2, ("java " + class_name + "/" + class_name).!)) |
478 } |
478 } |
479 |
479 |
480 |
480 |
481 //examples |
481 //examples |
482 compile_run("defs.rec") |
482 //compile_run("defs.rec") |
483 //compile_run("fact.rec") |
483 compile_run("fact.rec") |