author | Christian Urban <christian.urban@kcl.ac.uk> |
Wed, 02 Sep 2020 23:34:19 +0100 (2020-09-02) | |
changeset 753 | d94fdbef1a4f |
parent 742 | b5b5583a3a08 |
permissions | -rw-r--r-- |
// Detokenising the ouput of Tokeniser //===================================== // // call with // // scala detokenise.scala fib.tks // // scala detokenise.scala loops.tks object Detokenise { import java.io._ import scala.util._ abstract class Token extends Serializable case object T_SEMI extends Token case object T_LPAREN extends Token case object T_RPAREN extends Token case class T_ID(s: String) extends Token case class T_OP(s: String) extends Token case class T_NUM(n: Int) extends Token case class T_KWD(s: String) extends Token case class T_STR(s: String) extends Token def deserialise[T](fname: String) : Try[T] = { //import scala.util.Using //Using(new ObjectInputStream(new FileInputStream(fname))) { // in => in.readObject.asInstanceOf[T] //} Try(new ObjectInputStream(new FileInputStream(fname))).get { in => in.readObject.asInstanceOf[T] } } def main(args: Array[String]) = { val fname = args(0) val tks = deserialise[List[Token]](fname).getOrElse(Nil) println(s"Reading back from ${fname}:\n${tks.mkString(", ")}") } }