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