X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=lex.icl;h=3e711c8c2052761f626c083c1b95c52a49cb0af7;hb=e33962666f8af6a34432d57180eb322f4543eb78;hp=aa34987969b5afcdc71c83451f91fe448ee9902f;hpb=5d40ca411bed8014f9bf081436208d831ac5c972;p=cc1516.git diff --git a/lex.icl b/lex.icl index aa34987..3e711c8 100644 --- a/lex.icl +++ b/lex.icl @@ -63,7 +63,7 @@ lexToken = lexWord ">" BiggerToken <|> lexWord "!" ExclamationToken <|> lexWord "-" DashToken <|> //Number and identifier tokens - lexNumber <|> lexIdentifier <|> + lexString <|> lexNumber <|> lexIdentifier <|> (item '\n' >>| pure LexNL) <|> //Whitespace (satisfy isSpace >>| (pure $ LexSpace 0 1)) <|> @@ -109,10 +109,15 @@ lexToken = >>= \char->pure case char of 'a' = LexToken 4 (CharToken $ toChar 7) 'b' = LexToken 4 (CharToken '\b') - 'b' = LexToken 4 (CharToken '\b') 'f' = LexToken 4 (CharToken '\f') 'n' = LexToken 4 (CharToken '\n') - 'r' = LexToken 4 (CharToken '\t') + 'r' = LexToken 4 (CharToken '\r') + 't' = LexToken 4 (CharToken '\t') 'v' = LexToken 4 (CharToken '\v') '\'' =LexToken 4 (CharToken '\'') c = (LexItemError $ "Unknown escape: " +++ toString c) + + lexString :: Parser Char LexItem + lexString = item '"' *> ( + many (satisfy ((<>) '"'))) <* item '"' >>= \cs-> + pure $ LexToken (length cs) (StringToken cs)