File tree Expand file tree Collapse file tree 2 files changed +25
-1
lines changed
main/scala/scala/util/parsing/combinator
test/scala/scala/util/parsing/combinator Expand file tree Collapse file tree 2 files changed +25
-1
lines changed Original file line number Diff line number Diff line change @@ -669,7 +669,7 @@ trait Parsers {
669
669
* @param p a `Parser` that is to be applied successively to the input
670
670
* @return A parser that returns a list of results produced by repeatedly applying `p` to the input.
671
671
*/
672
- def rep [T ](p : => Parser [T ]): Parser [List [T ]] = rep1(p) | success( List ())
672
+ def rep [T ](p : => Parser [T ]): Parser [List [T ]] = rep1(p)
673
673
674
674
/** A parser generator for interleaved repetitions.
675
675
*
Original file line number Diff line number Diff line change @@ -55,4 +55,28 @@ class JavaTokenParsersTest {
55
55
parseFailure(" with space" , 6 )
56
56
}
57
57
58
+ @ Test
59
+ def repeatedlyParsesTest : Unit = {
60
+ object TestTokenParser extends JavaTokenParsers
61
+ import TestTokenParser ._
62
+ val p = ident ~ " (?i)AND" .r.*
63
+
64
+ val parseResult = parseAll(p, " start start" )
65
+ parseResult match {
66
+ case e @ Failure (message, next) =>
67
+ assertEquals(next.pos.column, 7 )
68
+ assert(message.endsWith(" string matching regex `(?i)AND' expected but `s' found" ))
69
+ case _ => sys.error(parseResult.toString)
70
+ }
71
+
72
+ val parseResult2 = parseAll(p, " start AND AND" )
73
+ parseResult2 match {
74
+ case Success (r, _) =>
75
+ assertEquals(" start" , r._1)
76
+ assertEquals(" AND AND" , r._2.mkString(" " ))
77
+ case _ => sys.error(parseResult.toString)
78
+ }
79
+ }
80
+
81
+
58
82
}
You can’t perform that action at this time.
0 commit comments