definition module lex
-import Data.Either
+from Data.Either import :: Either
+from yard import :: Error
+from AST import :: Pos
-:: Token
+:: Token :== (Pos, TokenValue)
+:: TokenValue
//Value tokens
- = IdentToken [Char] // Identifier
- | NumberToken [Char]// Integer
+ = IdentToken String // Identifier
+ | NumberToken Int // Integer
| CharToken Char // Character literal
//Keyword tokens
| VarToken // var keyword
| AmpersandsToken // &&
| PipesToken // ||
| ArrowToken // ->
+ | EmptyListToken // []
//One character tokens
| BraceOpenToken // (
| BraceCloseToken // )
| LesserToken // <
| BiggerToken // >
| ExclamationToken // !
- //Special tokens
- | EndOfFileToken // EOF
-:: LexerOutput :== Either String [Token]
-
-instance toString LexerOutput
+:: LexerOutput :== Either Error [Token]
lexer :: [Char] -> LexerOutput