@@ -351,9 +351,12 @@ escaped delim = try $ do
351351chr :: IParser Char
352352chr = betwixt '\'' '\'' character <?> "character"
353353 where
354+ nonQuote = satisfy (/='\'')
354355 character = do
355− c <- many1 $ choice [ escaped '\'', (:[]) <$> satisfy (/='\'') ]
356− processAs T.charLiteral . sandwich '\'' $ concat c
356+ c <- choice [ escaped '\''
357+ , (:) <$> char '\\' <*> many1 nonQuote
358+ , (:[]) <$> nonQuote ]
359+ processAs T.charLiteral $ sandwich '\'' c
357360
358361processAs :: (T.GenTokenParser String u SourceM -> IParser a) -> String -> IParser a
359362processAs processor s = calloutParser s (processor lexer)