From a9ccd74eb8865f09ddc4955b96c0a0f802a07e10 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Tue, 13 Dec 2011 17:29:08 -0500 Subject: [PATCH] fix 'not' parser combinator, add EOF --- util/complete/Parser.scala | 5 ++++- util/complete/Parsers.scala | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/util/complete/Parser.scala b/util/complete/Parser.scala index f788d0f4c..5c7bcddc3 100644 --- a/util/complete/Parser.scala +++ b/util/complete/Parser.scala @@ -345,7 +345,10 @@ trait ParserMain else b - def not(p: Parser[_]): Parser[Unit] = new Not(p) + def not(p: Parser[_]): Parser[Unit] = p.result match { + case None => new Not(p) + case Some(_) => failure("Excluded.") + } def oneOf[T](p: Seq[Parser[T]]): Parser[T] = p.reduceLeft(_ | _) def seq[T](p: Seq[Parser[T]]): Parser[Seq[T]] = seq0(p, Nil) diff --git a/util/complete/Parsers.scala b/util/complete/Parsers.scala index fd0568494..367f2fadb 100644 --- a/util/complete/Parsers.scala +++ b/util/complete/Parsers.scala @@ -11,6 +11,8 @@ package sbt.complete // Some predefined parsers trait Parsers { + lazy val EOF = not(any) + lazy val any: Parser[Char] = charClass(_ => true, "any character") lazy val DigitSet = Set("0","1","2","3","4","5","6","7","8","9")