equal
deleted
inserted
replaced
8 // scala detokenise.scala loops.tks |
8 // scala detokenise.scala loops.tks |
9 |
9 |
10 object Detokenise { |
10 object Detokenise { |
11 |
11 |
12 import java.io._ |
12 import java.io._ |
|
13 import scala.util._ |
13 |
14 |
14 abstract class Token extends Serializable |
15 abstract class Token extends Serializable |
15 case object T_SEMI extends Token |
16 case object T_SEMI extends Token |
16 case object T_LPAREN extends Token |
17 case object T_LPAREN extends Token |
17 case object T_RPAREN extends Token |
18 case object T_RPAREN extends Token |
19 case class T_OP(s: String) extends Token |
20 case class T_OP(s: String) extends Token |
20 case class T_NUM(n: Int) extends Token |
21 case class T_NUM(n: Int) extends Token |
21 case class T_KWD(s: String) extends Token |
22 case class T_KWD(s: String) extends Token |
22 case class T_STR(s: String) extends Token |
23 case class T_STR(s: String) extends Token |
23 |
24 |
24 def deserialise[T](fname: String) : T = { |
25 def deserialise[T](fname: String) : Try[T] = { |
25 val in = new ObjectInputStream(new FileInputStream(fname)) |
26 import scala.util.Using |
26 val data = in.readObject.asInstanceOf[T] |
27 Using(new ObjectInputStream(new FileInputStream(fname))) { |
27 in.close |
28 in => in.readObject.asInstanceOf[T] |
28 data |
29 } |
29 } |
30 } |
30 |
31 |
31 def main(args: Array[String]) = { |
32 def main(args: Array[String]) = { |
32 val fname = args(0) |
33 val fname = args(0) |
33 val tks = deserialise[List[Token]](fname) |
34 val tks = deserialise[List[Token]](fname).getOrElse(Nil) |
34 println(s"Reading back from ${fname}:\n${tks.mkString("\n")}") |
35 println(s"Reading back from ${fname}:\n${tks.mkString("\n")}") |
35 } |
36 } |
36 |
37 |
37 |
38 |
38 } |
39 } |