]> git.rmz.io Git - my-scheme.git/blobdiff - app/Main.hs
Support escaped quotes
[my-scheme.git] / app / Main.hs
index 233fa6c9e85a81dfb98934e6624baa1391a14489..0c0d29c7a4acf3351624522b2e96080c4b4c1fc5 100644 (file)
@@ -18,11 +18,14 @@ spaces :: Parser ()
 spaces = skipMany space
 
 parseString :: Parser LispVal
-parseString = do
-    char '"'
-    x <- many (noneOf "\"")
-    char '"'
-    return $ String x
+parseString = do char '"'
+                 x <- many innerChar
+                 char '"'
+                 return $ String x
+              where innerChar = noneOf ['\\', '\"'] <|> escapeChar
+                    escapeChar = do char '\\'
+                                    c <- oneOf "\""
+                                    return $ '\"'
 
 parseAtom :: Parser LispVal
 parseAtom = do