diff options
author | Daniel Capo Sobral <dcs@dcs-132-CK-NF79.(none)> | 2011-11-02 18:13:24 -0200 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-12-02 14:16:00 -0800 |
commit | 2f02cdaaf3674de490bed30e795f778180329dd9 (patch) | |
tree | 131690db2b5da5b84f56338d98960ece6fa8681c /test/files/run/parserFilter.scala | |
parent | 8be1cfc777352a2e65344ebc1413dd9398379081 (diff) | |
download | scala-2f02cdaaf3674de490bed30e795f778180329dd9.tar.gz scala-2f02cdaaf3674de490bed30e795f778180329dd9.tar.bz2 scala-2f02cdaaf3674de490bed30e795f778180329dd9.zip |
Add filter/withFilter method to Parser
Complement map and flatMap when used in for comprehensions. This is
required when pattern matching is used on the result of the generators.
It is implemented through a new filterWithError method on ParseResult.
Diffstat (limited to 'test/files/run/parserFilter.scala')
-rw-r--r-- | test/files/run/parserFilter.scala | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/test/files/run/parserFilter.scala b/test/files/run/parserFilter.scala new file mode 100644 index 0000000000..d007d441f4 --- /dev/null +++ b/test/files/run/parserFilter.scala @@ -0,0 +1,15 @@ +object Test extends scala.util.parsing.combinator.RegexParsers { + val keywords = Set("if", "false") + def word: Parser[String] = "\\w+".r + + def keyword: Parser[String] = word filter (keywords.contains) + def ident: Parser[String] = word filter(!keywords.contains(_)) + + def test = keyword ~ ident + + def main(args: Array[String]) { + println(parseAll(test, "if false")) + println(parseAll(test, "not true")) + println(parseAll(test, "if true")) + } +} |