From a96558fd3c1ed3417fbdcd76361b398640e176f6 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Fri, 22 Nov 2019 22:36:43 +0100 Subject: Fuller set of string escapes in Parser --- Parser.hs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Parser.hs b/Parser.hs index 85385ca..5472893 100644 --- a/Parser.hs +++ b/Parser.hs @@ -88,11 +88,14 @@ pString = flip label "string" $ do pStringChar :: Parser Char pStringChar = - (char '\\' >> ((char 'n' >> return '\n') <|> - (char 'r' >> return '\r') <|> - (char 't' >> return '\t') <|> - (char '0' >> return '\0') <|> - (char 'x' >> pHexDigit >>= \a -> pHexDigit >>= \b -> return (chr (16 * a + b))))) <|> + (char '\\' >> + choice [ char 'n' >> return '\n' + , char 'r' >> return '\r' + , char 't' >> return '\t' + , char '0' >> return '\0' + , char 'x' >> pHexDigit >>= \a -> pHexDigit >>= \b -> return (chr (16 * a + b)) + , char '"' >> return '"' + , char '\\' >> return '\\' ]) <|> anyChar where pHexDigit :: Parser Int -- cgit v1.2.3-54-g00ecf