progs/detokenise.scala
author Christian Urban <urbanc@in.tum.de>
Tue, 01 Oct 2019 23:49:39 +0100
changeset 643 bccbfd1a4288
parent 642 2eecbcbc7c51
child 644 4911bcd6b063
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
642
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     1
// A simple lexer inspired by work of Sulzmann & Lu
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     2
//==================================================
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     3
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     4
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     5
object Delexer {
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     6
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     7
import java.io._
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     8
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     9
abstract class Token extends Serializable 
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    10
case object T_SEMI extends Token
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    11
case object T_LPAREN extends Token
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    12
case object T_RPAREN extends Token
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    13
case class T_ID(s: String) extends Token
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    14
case class T_OP(s: String) extends Token
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    15
case class T_NUM(n: Int) extends Token
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    16
case class T_KWD(s: String) extends Token
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    17
case class T_STR(s: String) extends Token
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    18
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    19
def deserialise[T](fname: String) : T = {
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    20
  val in = new ObjectInputStream(new FileInputStream(fname))
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    21
  val data = in.readObject.asInstanceOf[T]
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    22
  in.close
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    23
  data
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    24
}
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    25
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    26
def main(args: Array[String]) = {
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    27
  println("TEST\n" ++ deserialise[List[Token]]("/tmp/nflx").mkString)  
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    28
}
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    29
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    30
2eecbcbc7c51 updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    31
}