equal
deleted
inserted
replaced
100 ("(" ~ E ~ ")") ==> { case ((x, y), z) => y } | NumParserInt |
100 ("(" ~ E ~ ")") ==> { case ((x, y), z) => y } | NumParserInt |
101 |
101 |
102 |
102 |
103 println(E.parse_all("4*2+3")) |
103 println(E.parse_all("4*2+3")) |
104 println(E.parse_all("4*(2+3)")) |
104 println(E.parse_all("4*(2+3)")) |
|
105 println(E.parse_all("(4)*((2+3))")) |
105 println(E.parse_all("4/2+3")) |
106 println(E.parse_all("4/2+3")) |
106 println(E.parse("1 + 2 * 3")) |
107 println(E.parse("1 + 2 * 3")) |
107 println(E.parse_all("(1+2)+3")) |
108 println(E.parse_all("(1+2)+3")) |
108 println(E.parse_all("1+2+3")) |
109 println(E.parse_all("1+2+3")) |
109 |
110 |
116 "(" ~ EL ~ ")" ==> { case ((x, y), z) => y} | |
117 "(" ~ EL ~ ")" ==> { case ((x, y), z) => y} | |
117 NumParserInt) |
118 NumParserInt) |
118 |
119 |
119 //println(EL.parse_all("1+2+3")) |
120 //println(EL.parse_all("1+2+3")) |
120 |
121 |
121 |
|
122 // a repetition parser |
|
123 |
|
124 def RepParser[I <% Seq[_], T](p: => Parser[I, T]): Parser[I, List[T]] = { |
|
125 p ==> { case x => x :: Nil } | |
|
126 p ~ RepParser(p) ==> { case (x, y) => x :: y } |
|
127 } |
|
128 |
|
129 |
|
130 // a repetition parser |
|
131 lazy val R : Parser[String, List[Char]] = RepParser('a') |
|
132 println(R.parse_all("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")) |
|
133 |
122 |
134 |
123 |
135 |
124 |
136 // non-ambiguous vs ambiguous grammars |
125 // non-ambiguous vs ambiguous grammars |
137 lazy val S : Parser[String, String] = |
126 lazy val S : Parser[String, String] = |