diff --git a/Text/HPaco/Readers/Common.hs b/Text/HPaco/Readers/Common.hs
--- a/Text/HPaco/Readers/Common.hs
+++ b/Text/HPaco/Readers/Common.hs
@@ -5,7 +5,7 @@
     , module Text.Parsec.String
     , Parser
     , ss, ss_
-    , discard
+    , discard, tryDiscard
     , manySepBy
     , braces
     , identifier
@@ -81,6 +81,9 @@
 
 discard :: Parser s a -> Parser s ()
 discard p = p >> return ()
+
+tryDiscard :: Parser s a -> Parser s ()
+tryDiscard = try . discard
 
 manySepBy :: Parser s a -> Parser s b -> Parser s [a]
 manySepBy elem sep = do
diff --git a/Text/HPaco/Readers/Paco/Statements.hs b/Text/HPaco/Readers/Paco/Statements.hs
--- a/Text/HPaco/Readers/Paco/Statements.hs
+++ b/Text/HPaco/Readers/Paco/Statements.hs
@@ -54,7 +54,7 @@
     (markL, markR) <- pfCommentMarkers . psFlavor <$> getState
     string markL
     manyTill
-        (try (discard commentStatement) <|> discard anyChar)
+        (tryDiscard commentStatement <|> tryDiscard anyChar)
         (try $ string markR)
     return NullStatement
 
@@ -94,7 +94,7 @@
 
 rawTextStatement :: Parser Statement
 rawTextStatement = do
-    chrs <- (:) <$> anyChar <*> manyTill anyChar (eof <|> delimiters)
+    chrs <- (:) <$> anyChar <*> manyTill anyChar delimiters
     return $ PrintStatement $ StringLiteral chrs
     where
         delimiters = do
@@ -227,6 +227,7 @@
     return $ CallStatement name
 
 simpleTag tag = complexTag tag (return ())
+
 complexTag tag inner =
     let go = do
             (markL, markR) <- pfTagMarkers . psFlavor <$> getState
diff --git a/hpaco-lib.cabal b/hpaco-lib.cabal
--- a/hpaco-lib.cabal
+++ b/hpaco-lib.cabal
@@ -1,5 +1,5 @@
 name:                hpaco-lib
-version:             0.28.0.1
+version:             0.28.0.2
 synopsis:            Modular template compiler library
 description:         Template compiler library, compiles template code into
                      PHP or Javascript, or interprets it directly.
