7 = IdentToken [Char] // Identifier
8 | NumberToken [Char]// Integer
9 | CharToken Char // Character literal
11 | VarToken // var keyword
12 | ReturnToken // return keyword
13 | IfToken // if keyword
14 | ElseToken // else keyword
15 | WhileToken // while keyword
16 | TrueToken // True keyword
17 | FalseToken // False keyword
18 | VoidToken // Void keyword
19 | IntTypeToken // Int keyword
20 | CharTypeToken // Char keyword
21 | BoolTypeToken // Bool keyword
22 //Two character tokens
23 | DoubleColonToken // ::
25 | GreaterEqToken // >=
27 | AmpersandsToken // &&
30 //One character tokens
32 | BraceCloseToken // )
33 | CBraceOpenToken // {
34 | CBraceCloseToken // }
35 | SquareOpenToken // [
36 | SquareCloseToken // ]
46 | AssignmentToken // =
49 | ExclamationToken // !
51 | EndOfFileToken // EOF
53 :: LexerOutput :== Either String [Token]
55 instance toString LexerOutput
57 lexer :: [Char] -> LexerOutput