diff options
author | Martin Odersky <odersky@gmail.com> | 2008-01-25 15:33:18 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2008-01-25 15:33:18 +0000 |
commit | 2fd65e0fd34d13c355deeea982f30dce714b6528 (patch) | |
tree | 03aa3b83d890338fe982d62fa01be802de9bb0d8 /src/library | |
parent | bb99cc66c9006735ebf29d8f30f253408f5bc027 (diff) | |
download | scala-2fd65e0fd34d13c355deeea982f30dce714b6528.tar.gz scala-2fd65e0fd34d13c355deeea982f30dce714b6528.tar.bz2 scala-2fd65e0fd34d13c355deeea982f30dce714b6528.zip |
case classes can now inherit from case classes.
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/util/parsing/combinator1/Parsers.scala | 22 | ||||
-rw-r--r-- | src/library/scala/util/parsing/combinator1/syntactical/TokenParsers.scala | 21 |
2 files changed, 22 insertions, 21 deletions
diff --git a/src/library/scala/util/parsing/combinator1/Parsers.scala b/src/library/scala/util/parsing/combinator1/Parsers.scala index cef539cee6..01b16b1917 100644 --- a/src/library/scala/util/parsing/combinator1/Parsers.scala +++ b/src/library/scala/util/parsing/combinator1/Parsers.scala @@ -660,6 +660,28 @@ trait Parsers { } } + /** <p> + * A parser generator delimiting whole phrases (i.e. programs). + * </p> + * <p> + * <code>phrase(p)</code> succeeds if <code>p</code> succeeds and + * no input is left over after <code>p</code>. + * </p> + * + * @param p the parser that must consume all input for the resulting parser + * to succeed. + * @return a parser that has the same result as `p', but that only succeeds + * if <code>p</code> consumed all the input. + */ + def phrase[T](p: Parser[T]) = new Parser[T] { + lastNoSuccess = null + def apply(in: Input) = p(in) match { + case s @ Success(out, in1) if in1.atEnd => s + case s @ Success(out, in1) => Failure("end of input expected", in1) + case f : NoSuccess => lastNoSuccess + } + } + case class ~[+a, +b](_1: a, _2: b) { override def toString = "("+ _1 +" ~ "+ _2 +")" } diff --git a/src/library/scala/util/parsing/combinator1/syntactical/TokenParsers.scala b/src/library/scala/util/parsing/combinator1/syntactical/TokenParsers.scala index 5cb66c5941..6668d8a37e 100644 --- a/src/library/scala/util/parsing/combinator1/syntactical/TokenParsers.scala +++ b/src/library/scala/util/parsing/combinator1/syntactical/TokenParsers.scala @@ -34,27 +34,6 @@ trait TokenParsers extends Parsers { /** The input-type for these parsers*/ type Elem = lexical.Token - /** <p> - * A parser generator delimiting whole phrases (i.e. programs). - * </p> - * <p> - * <code>phrase(p)</code> succeeds if <code>p</code> succeeds and - * no input is left over after <code>p</code>. - * </p> - * - * @param p the parser that must consume all input for the resulting parser - * to succeed. - * @return a parser that has the same result as `p', but that only succeeds - * if <code>p</code> consumed all the input. - */ - def phrase[t](p: Parser[t]) = new Parser[t] { - lastNoSuccess = null - def apply(in: Input) = p(in) match { - case s @ Success(out, in1) if in1.atEnd => s - case s @ Success(out, in1) => Failure("end of input expected", in1) - case f : NoSuccess => lastNoSuccess - } - } } |