progs/comb2.scala
changeset 185 ea8b94d4755e
parent 173 7cfb7a6f7c99
child 471 9476086849ad
equal deleted inserted replaced
184:2e9134d25a2b 185:ea8b94d4755e
    65 lazy val T: Parser[String, Int] = 
    65 lazy val T: Parser[String, Int] = 
    66   (F ~ "*" ~ T) ==> { case ((x, y), z) => x * z} || F
    66   (F ~ "*" ~ T) ==> { case ((x, y), z) => x * z} || F
    67 lazy val F: Parser[String, Int] = 
    67 lazy val F: Parser[String, Int] = 
    68   ("(" ~ E ~ ")") ==> { case ((x, y), z) => y} || NumParser
    68   ("(" ~ E ~ ")") ==> { case ((x, y), z) => y} || NumParser
    69 
    69 
       
    70 println(E.parse_all("1*2+3"))
       
    71 println(E.parse_all("1+2*3"))
       
    72 println(E.parse_all("1+2+3"))
    70 println(E.parse_all("1+2+3"))
    73 println(E.parse_all("1+2+3"))
    71 println(E.parse_all("1+2*3+1"))
    74 println(E.parse_all("1+2*3+1"))
    72 
    75 
    73 
    76 
    74 // no left-recursion allowed
    77 // no left-recursion allowed