module Language.Lua.Token where import Data.Data import GHC.Generics (Generic) data Token = TkAnd -- ^ @and@ | TkBreak -- ^ @break@ | TkDo -- ^ @do@ | TkElse -- ^ @else@ | TkElseif -- ^ @elseif@ | TkEnd -- ^ @end@ | TkFalse -- ^ @false@ | TkFor -- ^ @for@ | TkFunction -- ^ @function@ | TkGoto -- ^ @goto@ | TkIf -- ^ @if@ | TkIn -- ^ @in@ | TkLocal -- ^ @local@ | TkNil -- ^ @nil@ | TkNot -- ^ @not@ | TkOr -- ^ @or@ | TkRepeat -- ^ @repeat@ | TkReturn -- ^ @return@ | TkThen -- ^ @then@ | TkTrue -- ^ @true@ | TkUntil -- ^ @until@ | TkWhile -- ^ @while@ | TkPlus -- ^ @+@ | TkDash -- ^ @\-@ | TkMult -- ^ @\*@ | TkFloatDiv -- ^ @/@ | TkModulo -- ^ @%@ | TkExponent -- ^ @^@ | TkLength -- ^ @#@ | TkBitwiseAnd -- ^ @&@ | TkTilde -- ^ @~@ | TkBitwiseOr -- ^ @|@ | TkLShift -- ^ @<<@ | TkRShift -- ^ @\>\>@ | TkFloorDiv -- ^ @//@ | TkEq -- ^ @==@ | TkNeq -- ^ @~=@ | TkLeq -- ^ @<=@ | TkGeq -- ^ @\>=@ | TkLt -- ^ @<@ | TkGt -- ^ @\>@ | TkAssign -- ^ @=@ | TkLParen -- ^ @(@ | TkRParen -- ^ @)@ | TkLBrace -- ^ @{@ | TkRBrace -- ^ @}@ | TkLBracket -- ^ @[@ | TkRBracket -- ^ @]@ | TkLabel -- ^ @::@ | TkSemi -- ^ @;@ | TkColon -- ^ @:@ | TkComma -- ^ @,@ | TkDot -- ^ @.@ | TkConcat -- ^ @..@ | TkVararg -- ^ @...@ | TkQuote -- ^ @'@ | TkDoubleQuote -- ^ @"@ | TkIdent String | TkStringLit String | TkIntLit String | TkFloatLit String deriving (Data, Eq, Generic, Show, Typeable) showToken :: Token -> String showToken TkAnd = "and" showToken TkBreak = "break" showToken TkDo = "do" showToken TkElse = "else" showToken TkElseif = "elseif" showToken TkEnd = "end" showToken TkFalse = "false" showToken TkFor = "for" showToken TkFunction = "function" showToken TkGoto = "goto" showToken TkIf = "if" showToken TkIn = "in" showToken TkLocal = "local" showToken TkNil = "nil" showToken TkNot = "not" showToken TkOr = "or" showToken TkRepeat = "repeat" showToken TkReturn = "return" showToken TkThen = "then" showToken TkTrue = "true" showToken TkUntil = "until" showToken TkWhile = "while" showToken TkPlus = "+" showToken TkDash = "-" showToken TkMult = "*" showToken TkFloatDiv = "/" showToken TkModulo = "%" showToken TkExponent = "^" showToken TkLength = "#" showToken TkBitwiseAnd = "&" showToken TkTilde = "~" showToken TkBitwiseOr = "|" showToken TkLShift = "<<" showToken TkRShift = ">>" showToken TkFloorDiv = "//" showToken TkEq = "==" showToken TkNeq = "~=" showToken TkLeq = "<=" showToken TkGeq = ">=" showToken TkLt = "<" showToken TkGt = ">" showToken TkAssign = "=" showToken TkLParen = "(" showToken TkRParen = ")" showToken TkLBrace = "{" showToken TkRBrace = "}" showToken TkLBracket = "[" showToken TkRBracket = "]" showToken TkLabel = "::" showToken TkSemi = ";" showToken TkColon = ":" showToken TkComma = "," showToken TkDot = "." showToken TkConcat = ".." showToken TkVararg = "..." showToken TkQuote = "'" showToken TkDoubleQuote = "\"" showToken (TkIdent s) = s showToken (TkStringLit s) = s showToken (TkIntLit s) = s showToken (TkFloatLit s) = s