diff options
author | Martin Odersky <odersky@gmail.com> | 2007-09-16 18:01:02 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-09-16 18:01:02 +0000 |
commit | 7fe7bace8a7a55d888f4ebdce8d778ceb4384546 (patch) | |
tree | 3d1041a517a92f2a05f48ff80be116f316aadef1 /docs/examples/parsing/ListParsers.scala | |
parent | 0b2f65aa6c6b3bb3e7628720893fb8116fdc8f71 (diff) | |
download | scala-7fe7bace8a7a55d888f4ebdce8d778ceb4384546.tar.gz scala-7fe7bace8a7a55d888f4ebdce8d778ceb4384546.tar.bz2 scala-7fe7bace8a7a55d888f4ebdce8d778ceb4384546.zip |
combinator1 parser changes + examples added
Diffstat (limited to 'docs/examples/parsing/ListParsers.scala')
-rw-r--r-- | docs/examples/parsing/ListParsers.scala | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/docs/examples/parsing/ListParsers.scala b/docs/examples/parsing/ListParsers.scala new file mode 100644 index 0000000000..f503a0139f --- /dev/null +++ b/docs/examples/parsing/ListParsers.scala @@ -0,0 +1,30 @@ +package examples.parsing + +import scala.util.parsing.combinator1.syntactical.StandardTokenParsers + +object ListParsers extends StandardTokenParsers { + lexical.delimiters ++= List("(", ")", ",") + + def expr: Parser[Any] = "(" ~ exprs ~ ")" | ident | numericLit + def exprs: Parser[Any] = expr ~ rep ("," ~ expr) + + def main(args: Array[String]) { + val tokens = new lexical.Scanner(args(0)) + println(args(0)) + println(phrase(expr)(tokens)) + } +} + +object ListParsers1 extends StandardTokenParsers { + lexical.delimiters ++= List("(", ")", ",") + + def expr: Parser[Any] = "(" ~> exprs <~ ")" | ident | numericLit + + def exprs: Parser[List[Any]] = expr ~ rep ("," ~> expr) ^^ { case x ~ y => x :: y } + + def main(args: Array[String]) { + val tokens = new lexical.Scanner(args(0)) + println(args(0)) + println(phrase(expr)(tokens)) + } +} |