equal
deleted
inserted
replaced
92 case T_NUM(s)::ts => Set((s.toInt, ts)) |
92 case T_NUM(s)::ts => Set((s.toInt, ts)) |
93 case _ => Set () |
93 case _ => Set () |
94 } |
94 } |
95 } |
95 } |
96 |
96 |
97 lazy val E: Parser[Int] = (T ~ T_OP("+") ~ E) ==> { case ((x, y), z) => x + z } || T // start symbol |
97 lazy val E: Parser[Int] = (T ~ T_OP("+") ~ E) ==> { case ((x, y), z) => x + z } || T |
98 lazy val T: Parser[Int] = (F ~ T_OP("*") ~ T) ==> { case ((x, y), z) => x * z } || F |
98 lazy val T: Parser[Int] = (F ~ T_OP("*") ~ T) ==> { case ((x, y), z) => x * z } || F |
99 lazy val F: Parser[Int] = (T_LPAREN ~> E <~ T_RPAREN) || NumParser |
99 lazy val F: Parser[Int] = (T_LPAREN ~> E <~ T_RPAREN) || NumParser |
100 |
100 |
101 println(E.parse_all(tokenizer(lexing_rules, "1 + 2 + 3"))) |
101 println(E.parse_all(tokenizer(lexing_rules, "1 + 2 + 3"))) |
102 println(E.parse_all(tokenizer(lexing_rules, "1 + 2 * 3"))) |
102 println(E.parse_all(tokenizer(lexing_rules, "1 + 2 * 3"))) |