diff --git a/hydrogen-syntax.cabal b/hydrogen-syntax.cabal
--- a/hydrogen-syntax.cabal
+++ b/hydrogen-syntax.cabal
@@ -1,5 +1,5 @@
 name:                 hydrogen-syntax
-version:              0.5
+version:              0.6
 homepage:             https://github.com/scravy/hydrogen-syntax
 synopsis:             Hydrogen Syntax
 license:              BSD3
@@ -20,8 +20,8 @@
                       , Hydrogen.Syntax.Types
   build-depends:      base ==4.7.*
                       , containers ==0.5.* 
-                      , hydrogen-prelude ==0.5
-                      , hydrogen-util ==0.5
+                      , hydrogen-prelude ==0.6.0.1
+                      , hydrogen-util ==0.6
                       , nicify ==1.1.*
                       , parsec ==3.1.*
                       , uuid ==1.3.*
diff --git a/src/Hydrogen/Syntax/Parser.hs b/src/Hydrogen/Syntax/Parser.hs
--- a/src/Hydrogen/Syntax/Parser.hs
+++ b/src/Hydrogen/Syntax/Parser.hs
@@ -14,14 +14,20 @@
     token = choice [
         TIndent <$> indent
       , something >>= \x -> choice [
-          TString x '\'' <$> chars' '\''
+          TString x '\'' <$> chars3 "'''"
+        , TString x '\"' <$> chars3 "\"\"\""
+        , TString x '`' <$> chars3 "```"
+        , TString x '\'' <$> chars' '\''
         , TString x '\"' <$> chars' '\"'
         , TString x '`' <$> chars' '`'
         , TSomething <$> return x
         ]
+      , TString "" '\'' <$> chars3 "'''"
+      , TString "" '\"' <$> chars3 "\"\"\""
+      , TString "" '`' <$> chars3 "```"
       , TString "" '\'' <$> chars '\''
       , TString "" '\"' <$> chars '\"'
-      , TString "" '`' <$> chars '`'
+      , TString "" '`' <$> chars' '`'
       , const TSpaces <$> many1 (char ' ')
       , const TComma <$> char ','
       , const TSemicolon <$> char ';'
@@ -37,9 +43,11 @@
         nl = string "\n"
         comment = string ";;" >> many (noneOf "\n") <* char '\n'
 
-    chars' d = inBetween (char d) (many (try (char '\\' >> char d) <|> noneOf [d]))
+    chars' d = inBetween (char d) (many (try (char '\\' >> char d) <|> noneOf (d : "\n")))
 
-    chars d = inBetween (char d) (many (noneOf (d : "\\") <|> escape))
+    chars d = inBetween (char d) (many (noneOf (d : "\\\n") <|> escape))
+
+    chars3 d = manyBetween (try (string d)) (try (string d)) (noneOf "\\" <|> escape)
 
     inBetween d p = d *> p <* d
 
