summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2019-11-22 22:36:43 +0100
committertomsmeding <tom.smeding@gmail.com>2019-11-22 22:36:55 +0100
commita96558fd3c1ed3417fbdcd76361b398640e176f6 (patch)
treef80feadd8d911db4afd821afaa0f94e9a4f29e9c
parentb6b6b86128da3c7f7ea86a051e476dd67bb37a92 (diff)
Fuller set of string escapes in Parser
-rw-r--r--Parser.hs13
1 files 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