solution/cw5/fun_tokens.sc
changeset 868 8fb3b6d3be70
parent 867 54bcd848d716
child 869 81ee93b87258
equal deleted inserted replaced
867:54bcd848d716 868:8fb3b6d3be70
   242 case object T_RPAREN extends Token
   242 case object T_RPAREN extends Token
   243 case class T_ID(s: String) extends Token
   243 case class T_ID(s: String) extends Token
   244 case class T_FID(s: String) extends Token
   244 case class T_FID(s: String) extends Token
   245 case class T_OP(s: String) extends Token
   245 case class T_OP(s: String) extends Token
   246 case class T_NUM(n: Int) extends Token
   246 case class T_NUM(n: Int) extends Token
   247 case class T_FNUM(x: Float) extends Token
   247 case class T_FNUM(x: Double) extends Token
   248 case class T_KWD(s: String) extends Token
   248 case class T_KWD(s: String) extends Token
   249 case class T_TY(s: String) extends Token
   249 case class T_TY(s: String) extends Token
   250 case class T_CHR(i: Int) extends Token
   250 case class T_CHR(i: Int) extends Token
   251 
   251 
   252 val token : PartialFunction[(String, String), Token] = {
   252 val token : PartialFunction[(String, String), Token] = {
   254   case ("t", s) => T_TY(s)
   254   case ("t", s) => T_TY(s)
   255   case ("i", s) => T_ID(s)
   255   case ("i", s) => T_ID(s)
   256   case ("o", s) => T_OP(s)
   256   case ("o", s) => T_OP(s)
   257   case ("n", s) => T_NUM(s.toInt)
   257   case ("n", s) => T_NUM(s.toInt)
   258   case ("ch", s) => if (s == "'\\n'") T_CHR(10) else T_CHR(s(1).toInt)
   258   case ("ch", s) => if (s == "'\\n'") T_CHR(10) else T_CHR(s(1).toInt)
   259   case ("f", s) => T_FNUM(s.toFloat) 
   259   case ("f", s) => T_FNUM(s.toDouble) 
   260   case ("s", _) => T_SEMI
   260   case ("s", _) => T_SEMI
   261   case ("c", _) => T_COMMA
   261   case ("c", _) => T_COMMA
   262   case ("co", _) => T_COLON
   262   case ("co", _) => T_COLON
   263   case ("pl", _) => T_LPAREN
   263   case ("pl", _) => T_LPAREN
   264   case ("pr", _) => T_RPAREN
   264   case ("pr", _) => T_RPAREN