diff options
author | tomsmeding <tom.smeding@gmail.com> | 2019-11-22 22:36:43 +0100 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2019-11-22 22:36:55 +0100 |
commit | a96558fd3c1ed3417fbdcd76361b398640e176f6 (patch) | |
tree | f80feadd8d911db4afd821afaa0f94e9a4f29e9c | |
parent | b6b6b86128da3c7f7ea86a051e476dd67bb37a92 (diff) |
Fuller set of string escapes in Parser
-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 |