| author | Christian Urban <christian.urban@kcl.ac.uk> | 
| Sun, 29 Oct 2023 13:05:09 +0000 | |
| changeset 947 | 4d787a8b79a6 | 
| parent 742 | 155426396b5f | 
| permissions | -rw-r--r-- | 
| 644 | 1 | // Detokenising the ouput of Tokeniser | 
| 2 | //===================================== | |
| 3 | // | |
| 4 | // call with | |
| 5 | // | |
| 6 | // scala detokenise.scala fib.tks | |
| 7 | // | |
| 8 | // scala detokenise.scala loops.tks | |
| 642 | 9 | |
| 644 | 10 | object Detokenise {
 | 
| 642 | 11 | |
| 12 | import java.io._ | |
| 645 | 13 | import scala.util._ | 
| 642 | 14 | |
| 15 | abstract class Token extends Serializable | |
| 16 | case object T_SEMI extends Token | |
| 17 | case object T_LPAREN extends Token | |
| 18 | case object T_RPAREN extends Token | |
| 19 | case class T_ID(s: String) extends Token | |
| 20 | case class T_OP(s: String) extends Token | |
| 21 | case class T_NUM(n: Int) extends Token | |
| 22 | case class T_KWD(s: String) extends Token | |
| 23 | case class T_STR(s: String) extends Token | |
| 24 | ||
| 645 | 25 | def deserialise[T](fname: String) : Try[T] = {
 | 
| 695 
a936b1717b1b
deleted init function from boilerplate code
 Christian Urban <urbanc@in.tum.de> parents: 
686diff
changeset | 26 | //import scala.util.Using | 
| 
a936b1717b1b
deleted init function from boilerplate code
 Christian Urban <urbanc@in.tum.de> parents: 
686diff
changeset | 27 |   //Using(new ObjectInputStream(new FileInputStream(fname))) {
 | 
| 
a936b1717b1b
deleted init function from boilerplate code
 Christian Urban <urbanc@in.tum.de> parents: 
686diff
changeset | 28 | // in => in.readObject.asInstanceOf[T] | 
| 
a936b1717b1b
deleted init function from boilerplate code
 Christian Urban <urbanc@in.tum.de> parents: 
686diff
changeset | 29 | //} | 
| 
a936b1717b1b
deleted init function from boilerplate code
 Christian Urban <urbanc@in.tum.de> parents: 
686diff
changeset | 30 |   Try(new ObjectInputStream(new FileInputStream(fname))).get {
 | 
| 645 | 31 | in => in.readObject.asInstanceOf[T] | 
| 32 | } | |
| 642 | 33 | } | 
| 34 | ||
| 35 | def main(args: Array[String]) = {
 | |
| 644 | 36 | val fname = args(0) | 
| 645 | 37 | val tks = deserialise[List[Token]](fname).getOrElse(Nil) | 
| 686 | 38 |   println(s"Reading back from ${fname}:\n${tks.mkString(", ")}")  
 | 
| 642 | 39 | } | 
| 40 | ||
| 41 | ||
| 686 | 42 | } |