X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=lex.dcl;h=46c17135c5f21695a0e5d962a81cedb8d3588c43;hb=76d648be58ffa5c21cb9a53fb0232ab16d9f81b4;hp=e141b94706cd528ec40d7e818e7cada8026f6222;hpb=345b80b49413bb1b52735fb155faded41456a6b7;p=cc1516.git diff --git a/lex.dcl b/lex.dcl index e141b94..46c1713 100644 --- a/lex.dcl +++ b/lex.dcl @@ -1,12 +1,14 @@ definition module lex -import Data.Either +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 - | NumberToken [Char]// Integer + = IdentToken String // Identifier + | NumberToken Int // Integer | CharToken Char // Character literal //Keyword tokens | VarToken // var keyword @@ -29,6 +31,7 @@ import Data.Either | AmpersandsToken // && | PipesToken // || | ArrowToken // -> + | EmptyListToken // [] //One character tokens | BraceOpenToken // ( | BraceCloseToken // ) @@ -49,9 +52,7 @@ import Data.Either | LesserToken // < | BiggerToken // > | ExclamationToken // ! - //Special tokens - | EndOfFileToken // EOF -:: LexerOutput :== Either String [Token] +:: LexerOutput :== Either Error [Token] lexer :: [Char] -> LexerOutput