X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=lex.icl;h=aa34987969b5afcdc71c83451f91fe448ee9902f;hb=a8348a333a567e5a469d1e5f8ec6c3dafc051c91;hp=e3fb2c10d3102be0919f3cd6dcfc9d83fd0846c5;hpb=fe40818bbc1d327f0adfbbbfe7ecfbe15d4eb053;p=cc1516.git diff --git a/lex.icl b/lex.icl index e3fb2c1..aa34987 100644 --- a/lex.icl +++ b/lex.icl @@ -1,15 +1,16 @@ implementation module lex import Control.Monad, Control.Applicative -import Data.Either, Data.Func +import Data.Either, Data.Func, Data.Void from StdFunc import o import StdBool import StdList import StdChar import StdString +import StdTuple import yard -from AST import :: Pos(..) +import AST :: LexItem = LexToken Int TokenValue @@ -19,9 +20,7 @@ from AST import :: Pos(..) | LexItemError String lexer :: [Char] -> LexerOutput -lexer r = case runParser (lexProgram 1 1) r of - (Right p, _) = Right p - (Left e, _) = Left e +lexer r = fst $ runParser (lexProgram 1 1) r lexProgram :: Int Int -> Parser Char [Token] lexProgram line column = lexToken >>= \t->case t of