X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=lex.dcl;h=f52404780343ecb6605a40735cafff7d71e967e6;hb=550c1b695234a87dda89e5509e0b07ba9156997d;hp=a887374897f439bf44ae4fd8547dbd4e88009ab5;hpb=4766205e7035a58c8a1fa1557b6e14577ed26f32;p=cc1516.git diff --git a/lex.dcl b/lex.dcl index a887374..f524047 100644 --- a/lex.dcl +++ b/lex.dcl @@ -1,13 +1,16 @@ definition module lex from Data.Either import :: Either +from yard import :: Error +from AST import :: Pos -:: Token :== (Int, TokenValue) +:: Token :== (Pos, TokenValue) :: TokenValue //Value tokens - = IdentToken [Char] // Identifier + = IdentToken String // Identifier | NumberToken Int // Integer | CharToken Char // Character literal + | StringToken [Char]// String literal //Keyword tokens | VarToken // var keyword | ReturnToken // return keyword @@ -20,6 +23,7 @@ from Data.Either import :: Either | IntTypeToken // Int keyword | CharTypeToken // Char keyword | BoolTypeToken // Bool keyword + | LetToken // Let keyword //Two character tokens | DoubleColonToken // :: | NotEqualToken // != @@ -29,6 +33,7 @@ from Data.Either import :: Either | AmpersandsToken // && | PipesToken // || | ArrowToken // -> + | EmptyListToken // [] //One character tokens | BraceOpenToken // ( | BraceCloseToken // ) @@ -49,9 +54,8 @@ from Data.Either import :: Either | LesserToken // < | BiggerToken // > | ExclamationToken // ! - //Special tokens - | EndOfFileToken // EOF + | BackslashToken // \ -:: LexerOutput :== Either String [Token] +:: LexerOutput :== Either Error [Token] lexer :: [Char] -> LexerOutput