summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2008-02-07 12:39:51 +0000
committerAdriaan Moors <adriaan.moors@epfl.ch>2008-02-07 12:39:51 +0000
commit0eae9599357eb76fb38d2a95d1d4d6f089b814b3 (patch)
tree0cb296642e3d3f8b4d9d63bfab76d374750d3c13 /docs
parentf3e42a50ab77e51040b3698c710b1ca86bfc0611 (diff)
downloadscala-0eae9599357eb76fb38d2a95d1d4d6f089b814b3.tar.gz
scala-0eae9599357eb76fb38d2a95d1d4d6f089b814b3.tar.bz2
scala-0eae9599357eb76fb38d2a95d1d4d6f089b814b3.zip
updated examples and json parser to use combina...
updated examples and json parser to use combinator1-style parsing, have not yet renamed combinator -> combinatorold, and combinator1 -> combinator --> doing that using SVN rename, so history is preserved (thus, the build for this revision will break, but the next one should be okay. sorry)
Diffstat (limited to 'docs')
-rw-r--r--docs/examples/parsing/ArithmeticParser.scala12
-rw-r--r--docs/examples/parsing/ListParser.scala4
-rwxr-xr-xdocs/examples/parsing/lambda/Main.scala2
-rwxr-xr-xdocs/examples/parsing/lambda/TestParser.scala22
4 files changed, 20 insertions, 20 deletions
diff --git a/docs/examples/parsing/ArithmeticParser.scala b/docs/examples/parsing/ArithmeticParser.scala
index 2aac4b6f6c..57ead13fef 100644
--- a/docs/examples/parsing/ArithmeticParser.scala
+++ b/docs/examples/parsing/ArithmeticParser.scala
@@ -21,9 +21,9 @@ object arithmeticParser extends StdTokenParsers {
type Tokens = StdLexical ; val lexical = new StdLexical
lexical.delimiters ++= List("(", ")", "+", "-", "*", "/")
- lazy val expr = term*("+" ^^ {(x: int, y: int) => x + y} | "-" ^^ {(x: int, y: int) => x - y})
- lazy val term = factor*("*" ^^ {(x: int, y: int) => x * y} | "/" ^^ {(x: int, y: int) => x / y})
- lazy val factor: Parser[int] = "(" ~ expr ~ ")" | numericLit ^^ (_.toInt)
+ lazy val expr = term*("+" ^^^ {(x: int, y: int) => x + y} | "-" ^^^ {(x: int, y: int) => x - y})
+ lazy val term = factor*("*" ^^^ {(x: int, y: int) => x * y} | "/" ^^^ {(x: int, y: int) => x / y})
+ lazy val factor: Parser[int] = "(" ~> expr <~ ")" | numericLit ^^ (_.toInt)
def main(args: Array[String]) {
println(
@@ -41,9 +41,9 @@ object arithmeticParserDesugared extends StdTokenParsers {
type Tokens = StdLexical ; val lexical = new StdLexical
lexical.delimiters ++= List("(", ")", "+", "-", "*", "/")
- lazy val expr = chainl1(term, (keyword("+").^^{(x: int, y: int) => x + y}).|(keyword("-").^^{(x: int, y: int) => x - y}))
- lazy val term = chainl1(factor, (keyword("*").^^{(x: int, y: int) => x * y}).|(keyword("/").^^{(x: int, y: int) => x / y}))
- lazy val factor: Parser[int] = keyword("(").~(expr.~(keyword(")"))).|(numericLit.^^(x => x.toInt))
+ lazy val expr = chainl1(term, (keyword("+").^^^{(x: int, y: int) => x + y}).|(keyword("-").^^^{(x: int, y: int) => x - y}))
+ lazy val term = chainl1(factor, (keyword("*").^^^{(x: int, y: int) => x * y}).|(keyword("/").^^^{(x: int, y: int) => x / y}))
+ lazy val factor: Parser[int] = keyword("(").~>(expr.<~(keyword(")"))).|(numericLit.^^(x => x.toInt))
def main(args: Array[String]) {
println(
diff --git a/docs/examples/parsing/ListParser.scala b/docs/examples/parsing/ListParser.scala
index 65354482f3..12805e5e50 100644
--- a/docs/examples/parsing/ListParser.scala
+++ b/docs/examples/parsing/ListParser.scala
@@ -16,8 +16,8 @@ object listParser {
type Elem = Char
lazy val ident = rep1(elem("letter", isLetter), elem("letter or digit", isLetterOrDigit)) ^^ {cs => Id(mkString(cs))}
- lazy val number = chainl1(elem("digit", isDigit) ^^ (_ - '0'), success ^^ {(accum: Int, d: Int) => accum * 10 + d}) ^^ Num
- lazy val list = '(' ~ repsep(expr, ',') ~ ')' ^^ Lst
+ lazy val number = chainl1(elem("digit", isDigit) ^^ (_ - '0'), success{(accum: Int, d: Int) => accum * 10 + d}) ^^ Num
+ lazy val list = '(' ~> repsep(expr, ',') <~ ')' ^^ Lst
lazy val expr: Parser[Tree] = list | ident | number
}
diff --git a/docs/examples/parsing/lambda/Main.scala b/docs/examples/parsing/lambda/Main.scala
index c0453e75a8..81a175de77 100755
--- a/docs/examples/parsing/lambda/Main.scala
+++ b/docs/examples/parsing/lambda/Main.scala
@@ -12,7 +12,7 @@ import java.io.InputStreamReader
*
* Usage: scala examples.parsing.lambda.Main <file>
*
- * (example files: see test/*.kwi)
+ * (example files: see test/ *.kwi)
*
* @author Miles Sabin (adapted slightly by Adriaan Moors)
*/
diff --git a/docs/examples/parsing/lambda/TestParser.scala b/docs/examples/parsing/lambda/TestParser.scala
index 92d370c29b..22257c1731 100755
--- a/docs/examples/parsing/lambda/TestParser.scala
+++ b/docs/examples/parsing/lambda/TestParser.scala
@@ -34,33 +34,33 @@ trait TestParser extends StdTokenParsers with ImplicitConversions with TestSynt
chainl1(expr4, expr3, op3 ^^ {o => (a: Term, b: Term) => App(App(o, a), b)})
def expr4 : Parser[Term] =
- ( "\\" ~ lambdas
- | "let" ~ name ~ "=" ~ expr1 ~ "in" ~ expr1 ^^ flatten3(Let)
- | "if" ~ expr1 ~ "then" ~ expr1 ~ "else" ~ expr1 ^^ flatten3(If)
+ ( "\\" ~> lambdas
+ | ("let" ~> name) ~ ("=" ~> expr1) ~ ("in" ~> expr1) ^^ flatten3(Let)
+ | ("if" ~> expr1) ~ ("then" ~> expr1) ~ ("else" ~> expr1) ^^ flatten3(If)
| chainl1(aexpr, success(App(_: Term, _: Term)))
)
def lambdas : Parser[Term] =
- name ~ ("->" ~ expr1 | lambdas) ^^ flatten2(Lam)
+ name ~ ("->" ~> expr1 | lambdas) ^^ flatten2(Lam)
def aexpr : Parser[Term] =
( numericLit ^^ (_.toInt) ^^ Lit
| name ^^ Ref
- | "unit" ^^ Unit
- | "(" ~ expr1 ~ ")"
+ | "unit" ^^^ Unit()
+ | "(" ~> expr1 <~ ")"
)
def op1 : Parser[Term] =
- "==" ^^ Ref(Name("=="))
+ "==" ^^^ Ref(Name("=="))
def op2 : Parser[Term] =
- ( "+" ^^ Ref(Name("+"))
- | "-" ^^ Ref(Name("-"))
+ ( "+" ^^^ Ref(Name("+"))
+ | "-" ^^^ Ref(Name("-"))
)
def op3 : Parser[Term] =
- ( "*" ^^ Ref(Name("*"))
- | "/" ^^ Ref(Name("/"))
+ ( "*" ^^^ Ref(Name("*"))
+ | "/" ^^^ Ref(Name("/"))
)
def parse(r: Reader[char]) : ParseResult[Term] =