diff options
-rw-r--r-- | Parser.hs | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -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 |