X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=src%2Flex.icl;h=32ac048b9094785be0e2cb8f7bca06af00bf7505;hb=1f1e76191f4d76858b83fce681c9bd17de385d77;hp=b6e56d54b143a7417379f1918fbc2e295a55c2b9;hpb=b4636110ab65f233ed40d4390b62c7799df3c949;p=cc1516.git diff --git a/src/lex.icl b/src/lex.icl index b6e56d5..32ac048 100644 --- a/src/lex.icl +++ b/src/lex.icl @@ -15,7 +15,7 @@ SingleCharTokens = fromList [ (',', CommaToken), (':', ColonToken), (';', SColonToken), ('.', DotToken), ('+', PlusToken), ('*', StarToken), ('/', SlashToken), ('%', PercentToken), ('=', AssignmentToken), ('<', LesserToken), - ('>', BiggerToken), ('!', ExclamationToken)] + ('>', BiggerToken), ('!', ExclamationToken), ('-', DashToken)] EscapeMap :: Map Char Char EscapeMap = fromList [('a', toChar 7), ('b', '\b'), ('f', '\f'), ('n', '\n'), @@ -65,10 +65,6 @@ lex ['\'':x:'\'':xs] = ret (CharToken x) xs lex ['\'':'\\':x:'\'':xs] = case get x EscapeMap of Just t = ret (CharToken t) xs _ = err ("Unknown escape: \\" +++ toString x) -lex ['-':t=:[x:xs]] -| isDigit x = let (n, r) = span isDigit t in - ret (NumberToken (toInt $ toString ['-':n])) r -| otherwise = ret DashToken t lex t=:[x:xs] = case get x SingleCharTokens of (Just tok) = ret tok xs Nothing @@ -79,49 +75,3 @@ lex t=:[x:xs] = case get x SingleCharTokens of | isAlpha x = let (v, r) = span isIdent t in ret (IdentToken v) r with isIdent c = isAlphanum c || c == '_' | otherwise = err ("Unexpected character: " +++ toString x) - - -(===) :: TokenValue Token -> Bool -(===) (IdentToken _) (_, IdentToken _) = True -(===) (NumberToken _) (_, NumberToken _) = True -(===) (CharToken _) (_, CharToken _) = True -(===) (VarToken) (_, VarToken) = True -(===) (ReturnToken) (_, ReturnToken) = True -(===) (IfToken) (_, IfToken) = True -(===) (ElseToken) (_, ElseToken) = True -(===) (WhileToken) (_, WhileToken) = True -(===) (TrueToken) (_, TrueToken) = True -(===) (FalseToken) (_, FalseToken) = True -(===) (VoidToken) (_, VoidToken) = True -(===) (IntTypeToken) (_, IntTypeToken) = True -(===) (CharTypeToken) (_, CharTypeToken) = True -(===) (BoolTypeToken) (_, BoolTypeToken) = True -(===) (DoubleColonToken) (_, DoubleColonToken) = True -(===) (NotEqualToken) (_, NotEqualToken) = True -(===) (LesserEqToken) (_, LesserEqToken) = True -(===) (GreaterEqToken) (_, GreaterEqToken) = True -(===) (EqualsToken) (_, EqualsToken) = True -(===) (AmpersandsToken) (_, AmpersandsToken) = True -(===) (PipesToken) (_, PipesToken) = True -(===) (ArrowToken) (_, ArrowToken) = True -(===) (EmptyListToken) (_, EmptyListToken) = True -(===) (BraceOpenToken) (_, BraceOpenToken) = True -(===) (BraceCloseToken) (_, BraceCloseToken) = True -(===) (CBraceOpenToken) (_, CBraceOpenToken) = True -(===) (CBraceCloseToken) (_, CBraceCloseToken) = True -(===) (SquareOpenToken) (_, SquareOpenToken) = True -(===) (SquareCloseToken) (_, SquareCloseToken) = True -(===) (CommaToken) (_, CommaToken) = True -(===) (ColonToken) (_, ColonToken) = True -(===) (SColonToken) (_, SColonToken) = True -(===) (DotToken) (_, DotToken) = True -(===) (PlusToken) (_, PlusToken) = True -(===) (DashToken) (_, DashToken) = True -(===) (StarToken) (_, StarToken) = True -(===) (SlashToken) (_, SlashToken) = True -(===) (PercentToken) (_, PercentToken) = True -(===) (AssignmentToken) (_, AssignmentToken) = True -(===) (LesserToken) (_, LesserToken) = True -(===) (BiggerToken) (_, BiggerToken) = True -(===) (ExclamationToken) (_, ExclamationToken) = True -(===) _ _ = False