from Data.Either import :: Either
from yard import :: Error
+from AST import :: Pos
-:: Token = {
- line :: Int,
- column :: Int,
- token :: TokenValue}
+:: Token :== (Pos, TokenValue)
:: TokenValue
//Value tokens
= 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]