summaryrefslogtreecommitdiff
path: root/docs/examples/parsing/ListParsers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-09-16 18:01:02 +0000
committerMartin Odersky <odersky@gmail.com>2007-09-16 18:01:02 +0000
commit7fe7bace8a7a55d888f4ebdce8d778ceb4384546 (patch)
tree3d1041a517a92f2a05f48ff80be116f316aadef1 /docs/examples/parsing/ListParsers.scala
parent0b2f65aa6c6b3bb3e7628720893fb8116fdc8f71 (diff)
downloadscala-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.scala30
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))
+ }
+}