progs/parser-combinators/comb1.sc
changeset 896 b7a6436c7758
parent 852 8706b846a3e0
child 897 904de68a27a4
equal deleted inserted replaced
895:2f5a87ecdc81 896:b7a6436c7758
   102 
   102 
   103 
   103 
   104 // A parser for palindromes (just returns them as string)
   104 // A parser for palindromes (just returns them as string)
   105 lazy val Pal : Parser[String, String] = {
   105 lazy val Pal : Parser[String, String] = {
   106   ((p"a" ~ Pal) ~ p"a").map{ case ((x, y), z) => s"$x$y$z" } || 
   106   ((p"a" ~ Pal) ~ p"a").map{ case ((x, y), z) => s"$x$y$z" } || 
   107   (p"b" ~ Pal ~ p"b").map{ case ((x, y), z) => s"$x$y$z" } || 
   107    (p"b" ~ Pal ~ p"b").map{ case ((x, y), z) => s"$x$y$z" } || 
   108   p"a" || p"b" || p""
   108     p"a" || p"b" || p""
   109 }  
   109 }  
   110 
       
   111 def foo(x: Int) = 
       
   112    println(s"$x + $x = ${x + x}")
       
   113 
   110 
   114 // examples
   111 // examples
   115 Pal.parse_all("abaaaba")
   112 Pal.parse_all("abaaaba")
   116 Pal.parse("abaaaba")
   113 Pal.parse("abaaaba")
   117 
   114