progs/parser-combinators/comb1.sc
changeset 850 ea320c9427d2
parent 849 3d5ecb8f1f2f
child 852 8706b846a3e0
equal deleted inserted replaced
849:3d5ecb8f1f2f 850:ea320c9427d2
   170 
   170 
   171 // ambiguous
   171 // ambiguous
   172 lazy val S : Parser[String, String] =
   172 lazy val S : Parser[String, String] =
   173   (p"1" ~ S ~ S).map{ case ((x, y), z) => x + y + z } || p""
   173   (p"1" ~ S ~ S).map{ case ((x, y), z) => x + y + z } || p""
   174 
   174 
   175 println(time(S.parse("1" * 10)))
   175 //println(time(S.parse("1" * 10)))
   176 println(time(S.parse_all("1" * 10)))
   176 //println(time(S.parse_all("1" * 10)))
   177 
   177 
   178 // non-ambiguous
   178 // non-ambiguous
   179 lazy val U : Parser[String, String] =
   179 lazy val U : Parser[String, String] =
   180   (p"1" ~ U).map{ case (x, y) => x + y } || p""
   180   (p"1" ~ U).map{ case (x, y) => x + y } || p""
   181 
   181 
   182 println(time(U.parse("1" * 10)))
   182 //println(time(U.parse("1" * 10)))
   183 println(time(U.parse_all("1" * 10)))
   183 //println(time(U.parse_all("1" * 10)))
   184 println(U.parse("1" * 25))
   184 println(U.parse("1" * 25))
   185 
   185 
   186 U.parse("11")
   186 U.parse("11")
   187 U.parse("11111")
   187 U.parse("11111")
   188 U.parse("11011")
   188 U.parse("11011")