module Language.Lua.Token where
data LToken = LTokPlus
| LTokMinus
| LTokStar
| LTokSlash
| LTokPercent
| LTokExp
| LTokSh
| LTokEqual
| LTokNotequal
| LTokLEq
| LTokGEq
| LTokLT
| LTokGT
| LTokAssign
| LTokLParen
| LTokRParen
| LTokLBrace
| LTokRBrace
| LTokLBracket
| LTokRBracket
| LTokDColon
| LTokSemic
| LTokColon
| LTokComma
| LTokDot
| LTokDDot
| LTokEllipsis
| LTokAnd
| LTokBreak
| LTokDo
| LTokElse
| LTokElseIf
| LTokEnd
| LTokFalse
| LTokFor
| LTokFunction
| LTokGoto
| LTokIf
| LTokIn
| LTokLocal
| LTokNil
| LTokNot
| LTokOr
| LTokRepeat
| LTokReturn
| LTokThen
| LTokTrue
| LTokUntil
| LTokWhile
| LTokNum String
| LTokSLit String
| LTokIdent String
| LTokEof
deriving Eq
instance Show LToken where
show LTokPlus = "`+`"
show LTokMinus = "`-`"
show LTokStar = "`*`"
show LTokSlash = "`/`"
show LTokPercent = "`%`"
show LTokExp = "`^`"
show LTokSh = "`#`"
show LTokEqual = "`=`"
show LTokNotequal = "`~=`"
show LTokLEq = "`<=`"
show LTokGEq = "`>=`"
show LTokLT = "`<`"
show LTokGT = "`>`"
show LTokAssign = "`=`"
show LTokLParen = "`(`"
show LTokRParen = "`)`"
show LTokLBrace = "`{`"
show LTokRBrace = "`}`"
show LTokLBracket = "`[`"
show LTokRBracket = "`]`"
show LTokDColon = "`::`"
show LTokSemic = "`;`"
show LTokColon = "`:`"
show LTokComma = "`,`"
show LTokDot = "`.`"
show LTokDDot = "`..`"
show LTokEllipsis = "`...`"
show LTokAnd = "`and`"
show LTokBreak = "`break`"
show LTokDo = "`do`"
show LTokElse = "`else`"
show LTokElseIf = "`elseif`"
show LTokEnd = "`end`"
show LTokFalse = "`false`"
show LTokFor = "`for`"
show LTokFunction = "`function`"
show LTokGoto = "`goto`"
show LTokIf = "`if`"
show LTokIn = "`in`"
show LTokLocal = "`local`"
show LTokNil = "`nil`"
show LTokNot = "`not`"
show LTokOr = "`or`"
show LTokRepeat = "`repeat`"
show LTokReturn = "`return`"
show LTokThen = "`then`"
show LTokTrue = "`true`"
show LTokUntil = "`until`"
show LTokWhile = "`while`"
show (LTokNum n) = "number: " ++ show n
show (LTokSLit s) = "string: " ++ show s
show (LTokIdent i) = "identifier: " ++ show i
show LTokEof = "EOF"