from Data.Either import :: Either
from yard import :: Error
-
from AST import :: Pos
:: Token :== (Pos, TokenValue)
= IdentToken String // Identifier
| NumberToken Int // Integer
| CharToken Char // Character literal
+ | StringToken [Char]// String literal
//Keyword tokens
| VarToken // var keyword
| ReturnToken // return keyword
| IntTypeToken // Int keyword
| CharTypeToken // Char keyword
| BoolTypeToken // Bool keyword
+ | LetToken // Let keyword
//Two character tokens
| DoubleColonToken // ::
| NotEqualToken // !=
| LesserToken // <
| BiggerToken // >
| ExclamationToken // !
- //Special tokens
- | EndOfFileToken // EOF
+ | BackslashToken // \
:: LexerOutput :== Either Error [Token]