| 
642
 | 
     1  | 
// A simple lexer inspired by work of Sulzmann & Lu
  | 
| 
 | 
     2  | 
//==================================================
  | 
| 
 | 
     3  | 
  | 
| 
 | 
     4  | 
  | 
| 
 | 
     5  | 
object Delexer {
 | 
| 
 | 
     6  | 
  | 
| 
 | 
     7  | 
import java.io._
  | 
| 
 | 
     8  | 
  | 
| 
 | 
     9  | 
abstract class Token extends Serializable 
  | 
| 
 | 
    10  | 
case object T_SEMI extends Token
  | 
| 
 | 
    11  | 
case object T_LPAREN extends Token
  | 
| 
 | 
    12  | 
case object T_RPAREN extends Token
  | 
| 
 | 
    13  | 
case class T_ID(s: String) extends Token
  | 
| 
 | 
    14  | 
case class T_OP(s: String) extends Token
  | 
| 
 | 
    15  | 
case class T_NUM(n: Int) extends Token
  | 
| 
 | 
    16  | 
case class T_KWD(s: String) extends Token
  | 
| 
 | 
    17  | 
case class T_STR(s: String) extends Token
  | 
| 
 | 
    18  | 
  | 
| 
 | 
    19  | 
def deserialise[T](fname: String) : T = {
 | 
| 
 | 
    20  | 
  val in = new ObjectInputStream(new FileInputStream(fname))
  | 
| 
 | 
    21  | 
  val data = in.readObject.asInstanceOf[T]
  | 
| 
 | 
    22  | 
  in.close
  | 
| 
 | 
    23  | 
  data
  | 
| 
 | 
    24  | 
}
  | 
| 
 | 
    25  | 
  | 
| 
 | 
    26  | 
def main(args: Array[String]) = {
 | 
| 
 | 
    27  | 
  println("TEST\n" ++ deserialise[List[Token]]("/tmp/nflx").mkString)  
 | 
| 
 | 
    28  | 
}
  | 
| 
 | 
    29  | 
  | 
| 
 | 
    30  | 
  | 
| 
 | 
    31  | 
}  |