summaryrefslogblamecommitdiff
path: root/docs/examples/parsing/lambda/Main.scala
blob: 165e82b67079b99647bc3e9ec347f9cb8b2f27eb (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                                   
                                   













                                                                                                      

                                                                                                                     


     
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) 
    }
  }
}