summaryrefslogtreecommitdiff
path: root/docs/examples/parsing/lambda/Main.scala
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/parsing/lambda/Main.scala')
-rwxr-xr-xdocs/examples/parsing/lambda/Main.scala34
1 files changed, 34 insertions, 0 deletions
diff --git a/docs/examples/parsing/lambda/Main.scala b/docs/examples/parsing/lambda/Main.scala
new file mode 100755
index 0000000000..c0453e75a8
--- /dev/null
+++ b/docs/examples/parsing/lambda/Main.scala
@@ -0,0 +1,34 @@
+package examples.parsing.lambda
+
+import scala.util.parsing.combinator.Parsers
+import scala.util.parsing.input.StreamReader
+
+import java.io.File
+import java.io.FileInputStream
+import java.io.InputStreamReader
+
+/**
+ * Parser for an untyped lambda calculus
+ *
+ * Usage: scala examples.parsing.lambda.Main <file>
+ *
+ * (example files: see test/*.kwi)
+ *
+ * @author Miles Sabin (adapted slightly by Adriaan Moors)
+ */
+object Main extends Application with TestParser
+{
+ override def main(args: Array[String]) =
+ {
+ val in = StreamReader(new InputStreamReader(new FileInputStream(new File(args(0))), "ISO-8859-1"))
+ parse(in) match
+ {
+ case Success(term, _) =>
+ {
+ Console.println("Term: \n"+term)
+ }
+ case Failure(msg, remainder) => Console.println("Failure: "+msg+"\n"+"Remainder: \n"+remainder.pos.longString)
+ case Error(msg, remainder) => Console.println("Error: "+msg+"\n"+"Remainder: \n"+remainder.pos.longString)
+ }
+ }
+}