
Untitled
By: a guest on
Jul 17th, 2012 | syntax:
None | size: 0.89 KB | hits: 11 | expires: Never
Discarding the remaining input using parser combinators
val input = """
0)
blah1
blah2
blah3
1)
blah4
blah5
END
blah6
"""
object Pars extends RegexParsers {
def strings: Parser[List[String]] = rep(str) <~ end
def str: Parser[String] = ".*".r
def end: Parser[String] = "END" <~ rep(".*".r)
}
Pars.parseAll(Pars.strings, input)
rep(".*".r)
object Pars extends RegexParsers {
def strings: Parser[List[String]] =
( "END" ^^^ Nil
| ".+".r ~ strings ^^ { case head ~ tail => head :: tail }
)
}
object Pars extends RegexParsers {
def strings: Parser[List[String]] = rep(str) <~ "END"
def str: Parser[String] = """.*r?n""".r ^? {
case s if !(s matches """ENDr?n""") => s.replaceAll("""[rn]""", "")
}
}
Pars.parse(Pars.strings, input) // note parse, not parseAll
//[9.4] parsed: List(0), blah1, blah2, blah3, 1), blah4, blah5)