From feb315b878ff45761d62678c3cb9ad5d2d980077 Mon Sep 17 00:00:00 2001 From: "e.e d3si9n" Date: Sun, 11 Mar 2012 13:19:13 -0400 Subject: [PATCH] StringVerbatim is now stateless --- util/complete/Parsers.scala | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/util/complete/Parsers.scala b/util/complete/Parsers.scala index 226bd9b0b..9413a728e 100644 --- a/util/complete/Parsers.scala +++ b/util/complete/Parsers.scala @@ -66,21 +66,9 @@ trait Parsers (neg.toSeq ++ digits).mkString.toInt lazy val Bool = ("true" ^^^ true) | ("false" ^^^ false) lazy val StringBasic = StringVerbatim | StringEscapable | NotQuoted - def StringVerbatim: Parser[String] = { - var dqcount = 0 - val p = VerbatimDQuotes ~ - charClass(_ match { - case DQuoteChar => - dqcount += 1 - dqcount < 3 - case _ => - dqcount = 0 - true - }).*.string ~ DQuoteChar - p map { case ((s, p), c) => s + p + c.toString } filter( - { _.endsWith(VerbatimDQuotes) }, _ => "Expected '%s'" format VerbatimDQuotes) map { s => - s.substring(3, s.length - 3) } - } + lazy val StringVerbatim: Parser[String] = VerbatimDQuotes ~> + any.+.string.filter(!_.contains(VerbatimDQuotes), _ => "Invalid verbatim string") <~ + VerbatimDQuotes lazy val StringEscapable: Parser[String] = { val p = DQuoteChar ~> (EscapeSequence | NotDQuoteBackslashClass map {_.toString}).* <~ DQuoteChar