equal
deleted
inserted
replaced
126 val WHITESPACE = PLUS(" " | "\n" | "\t") |
126 val WHITESPACE = PLUS(" " | "\n" | "\t") |
127 val RPAREN: Rexp = ")" |
127 val RPAREN: Rexp = ")" |
128 val LPAREN: Rexp = "(" |
128 val LPAREN: Rexp = "(" |
129 val ALL = SYM | DIGIT | OP | " " | ":" | ";" | "\"" | "=" | "," | "(" | ")" |
129 val ALL = SYM | DIGIT | OP | " " | ":" | ";" | "\"" | "=" | "," | "(" | ")" |
130 val ALL2 = ALL | "\n" |
130 val ALL2 = ALL | "\n" |
131 //val COMMENT2 = ("/*" ~ NOT(ALL.% ~ "*/" ~ ALL.%) ~ "*/") |
|
132 val COMMENT = ("/*" ~ ALL2.% ~ "*/") | ("//" ~ ALL.% ~ "\n") |
131 val COMMENT = ("/*" ~ ALL2.% ~ "*/") | ("//" ~ ALL.% ~ "\n") |
133 |
132 |
134 |
133 |
135 // token for While language |
134 // token for While language |
136 abstract class Token |
135 abstract class Token |
229 case Sequ(e1, e2) => List(max_stack_exp(e1), max_stack_exp(e2)).max |
228 case Sequ(e1, e2) => List(max_stack_exp(e1), max_stack_exp(e2)).max |
230 } |
229 } |
231 def max_stack_bexp(e: BExp): Int = e match { |
230 def max_stack_bexp(e: BExp): Int = e match { |
232 case Bop(_, a1, a2) => max_stack_exp(a1) + max_stack_exp(a2) |
231 case Bop(_, a1, a2) => max_stack_exp(a1) + max_stack_exp(a2) |
233 } |
232 } |
234 |
|
235 |
|
236 |
233 |
237 // Parser combinators |
234 // Parser combinators |
238 abstract class Parser[I <% Seq[_], T] { |
235 abstract class Parser[I <% Seq[_], T] { |
239 def parse(ts: I): Set[(T, I)] |
236 def parse(ts: I): Set[(T, I)] |
240 |
237 |
477 println("Time: " + time_needed(2, ("java " + class_name + "/" + class_name).!)) |
474 println("Time: " + time_needed(2, ("java " + class_name + "/" + class_name).!)) |
478 } |
475 } |
479 |
476 |
480 |
477 |
481 //examples |
478 //examples |
482 //compile_run("defs.rec") |
479 compile_run("defs.rec") |
483 compile_run("fact.rec") |
480 //compile_run("fact.rec") |