minor changes to parsers

This commit is contained in:
Mark Harrah 2011-06-17 18:03:59 -04:00
parent 8c89a8b137
commit eec68ee8da
2 changed files with 3 additions and 2 deletions

View File

@ -243,8 +243,8 @@ trait ParserMain
def string(implicit ev: A <:< Seq[Char]): Parser[String] = map(_.mkString)
def flatMap[B](f: A => Parser[B]) = bindParser(a, f)
}
implicit def literalRichParser(c: Char): RichParser[Char] = richParser(c)
implicit def literalRichParser(s: String): RichParser[String] = richParser(s)
implicit def literalRichCharParser(c: Char): RichParser[Char] = richParser(c)
implicit def literalRichStringParser(s: String): RichParser[String] = richParser(s)
def invalid(msgs: => Seq[String]): Parser[Nothing] = Invalid(mkFailures(msgs))
def failure(msg: => String): Parser[Nothing] = invalid(msg :: Nil)

View File

@ -46,6 +46,7 @@ trait Parsers
lazy val NatBasic = mapOrFail( Digit.+ )( _.mkString.toInt )
private[this] def toInt(neg: Option[Char], digits: Seq[Char]): Int =
(neg.toSeq ++ digits).mkString.toInt
lazy val Bool = ("true" ^^^ true) | ("false" ^^^ false)
def repsep[T](rep: Parser[T], sep: Parser[_]): Parser[Seq[T]] =
rep1sep(rep, sep) ?? Nil