X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=lex.dcl;h=e78d495a938dfe2fe934934f3a2bc168333f4329;hb=6b3981fb80952fe2c510b6f9b849adb0dff77d2c;hp=438e547ff461789dae49b6ea436e125c59ce95f0;hpb=75ac4a13efdc20b444a5eb6cb2d16425c82d333e;p=cc1516.git diff --git a/lex.dcl b/lex.dcl index 438e547..e78d495 100644 --- a/lex.dcl +++ b/lex.dcl @@ -1,11 +1,15 @@ definition module lex -import Data.Either +from Data.Either import :: Either +from yard import :: Error -:: Token :== (Int, TokenValue) +:: Token = { + line :: Int, + column :: Int, + token :: TokenValue} :: TokenValue //Value tokens - = IdentToken [Char] // Identifier + = IdentToken String // Identifier | NumberToken Int // Integer | CharToken Char // Character literal //Keyword tokens @@ -29,6 +33,7 @@ import Data.Either | AmpersandsToken // && | PipesToken // || | ArrowToken // -> + | EmptyListToken // [] //One character tokens | BraceOpenToken // ( | BraceCloseToken // ) @@ -52,6 +57,6 @@ import Data.Either //Special tokens | EndOfFileToken // EOF -:: LexerOutput :== Either String [Token] +:: LexerOutput :== Either Error [Token] lexer :: [Char] -> LexerOutput