+++ /dev/null
-definition module lex
-
-import Data.Either
-
-:: Token
- //Value tokens
- = IdentToken [Char] // Identifier
- | NumberToken [Char]// Integer
- | CharToken Char // Character literal
- //Keyword tokens
- | VarToken // var keyword
- | ReturnToken // return keyword
- | IfToken // if keyword
- | ElseToken // else keyword
- | WhileToken // while keyword
- | TrueToken // True keyword
- | FalseToken // False keyword
- | VoidToken // Void keyword
- | IntTypeToken // Int keyword
- | CharTypeToken // Char keyword
- | BoolTypeToken // Bool keyword
- //Two character tokens
- | DoubleColonToken // ::
- | LesserEqToken // <=
- | GreaterEqToken // >=
- | EqualsToken // ==
- | AmpersandsToken // &&
- | PipesToken // ||
- | ArrowToken // ->
- //One character tokens
- | BraceOpenToken // (
- | BraceCloseToken // )
- | CBraceOpenToken // {
- | CBraceCloseToken // }
- | SquareOpenToken // [
- | SquareCloseToken // ]
- | CommaToken // ,
- | ColonToken // :
- | SColonToken // ;
- | DotToken // .
- | PlusToken // +
- | DashToken // -
- | StarToken // *
- | SlashToken // /
- | PercentToken // %
- | AssignmentToken // =
- | LesserToken // <
- | BiggerToken // >
- | ExclamationToken // !
- //Special tokens
- | EndOfFileToken // EOF
-
-:: LexerOutput :== Either String [Token]
-
-instance toString LexerOutput
-
-lexer :: [Char] -> LexerOutput