X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=src%2Flex.dcl;h=e78d495a938dfe2fe934934f3a2bc168333f4329;hb=f5231ebadae1ac54e25dbf5819debb3ab625826d;hp=a713e5d3a303cc61b4ca75ae1710e84fd4a0e4f7;hpb=c126dc3a1f66f959407cf3cf33bcba01142591c6;p=cc1516.git diff --git a/src/lex.dcl b/src/lex.dcl index a713e5d..e78d495 100644 --- a/src/lex.dcl +++ b/src/lex.dcl @@ -1,11 +1,15 @@ definition module lex from Data.Either import :: Either +from yard import :: Error -:: Token :== (Int, 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 @@ -53,6 +57,6 @@ from Data.Either import :: Either //Special tokens | EndOfFileToken // EOF -:: LexerOutput :== Either String [Token] +:: LexerOutput :== Either Error [Token] lexer :: [Char] -> LexerOutput