3 from Data.Either import :: Either
4 from yard import :: Error
12 = IdentToken String // Identifier
13 | NumberToken Int // Integer
14 | CharToken Char // Character literal
16 | VarToken // var keyword
17 | ReturnToken // return keyword
18 | IfToken // if keyword
19 | ElseToken // else keyword
20 | WhileToken // while keyword
21 | TrueToken // True keyword
22 | FalseToken // False keyword
23 | VoidToken // Void keyword
24 | IntTypeToken // Int keyword
25 | CharTypeToken // Char keyword
26 | BoolTypeToken // Bool keyword
27 //Two character tokens
28 | DoubleColonToken // ::
31 | GreaterEqToken // >=
33 | AmpersandsToken // &&
36 | EmptyListToken // []
37 //One character tokens
39 | BraceCloseToken // )
40 | CBraceOpenToken // {
41 | CBraceCloseToken // }
42 | SquareOpenToken // [
43 | SquareCloseToken // ]
53 | AssignmentToken // =
56 | ExclamationToken // !
58 | EndOfFileToken // EOF
60 :: LexerOutput :== Either Error [Token]
62 lexer :: [Char] -> LexerOutput