7 = IdentToken [Char] // Identifier
8 | NumberToken Int // Integer
9 | CharToken Char // Character literal
11 | VarToken // var keyword
12 | VoidToken // void keyword
13 | ReturnToken // return keyword
14 | IfToken // if keyword
15 | ElseToken // else keyword
16 | WhileToken // while keyword
17 | TrueToken // True keyword
18 | FalseToken // False keyword
19 //One character tokens
21 | BraceCloseToken // )
22 | CBraceOpenToken // {
23 | CBraceCloseToken // {
24 | SquareOpenToken // [
25 | SquareCloseToken // ]
35 | AssignmentToken // =
38 | ExclamationToken // !
39 //Two character tokens
40 | DoubleColonToken // ::
42 | GreaterEqToken // >=
44 | AmpersandsToken // &&
48 :: LexerOutput :== Either String [Token]
50 lexer :: [Char] -> LexerOutput