X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=lex.dcl;h=a6cf7c661a2927ed12caff506af75875c7fe46d6;hb=90e3f306b5813ff66f8249ba243a8a4220c915fe;hp=7e41bc3c28b85693819e2c833d9470a8c2808047;hpb=e3f049be4fb2ed9b7f675f06a9a525c81af9946c;p=cc1516.git diff --git a/lex.dcl b/lex.dcl index 7e41bc3..a6cf7c6 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 +from AST import :: Pos + +:: 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 @@ -28,6 +32,7 @@ import Data.Either | AmpersandsToken // && | PipesToken // || | ArrowToken // -> + | EmptyListToken // [] //One character tokens | BraceOpenToken // ( | BraceCloseToken // ) @@ -51,6 +56,6 @@ import Data.Either //Special tokens | EndOfFileToken // EOF -:: LexerOutput :== Either String [Token] +:: LexerOutput :== Either Error [Token] lexer :: [Char] -> LexerOutput