diff --git a/haiji.cabal b/haiji.cabal
--- a/haiji.cabal
+++ b/haiji.cabal
@@ -2,7 +2,7 @@
 --  see http://haskell.org/cabal/users-guide/
 
 name:                haiji
-version:             0.2.2.2
+version:             0.2.2.3
 synopsis:            A typed template engine, subset of jinja2
 description:         Haiji is a template engine which is subset of jinja2.
                      This is designed to free from the unintended rendering result
diff --git a/src/Text/Haiji/Syntax/AST.hs b/src/Text/Haiji/Syntax/AST.hs
--- a/src/Text/Haiji/Syntax/AST.hs
+++ b/src/Text/Haiji/Syntax/AST.hs
@@ -11,13 +11,13 @@
        , parser
        ) where
 
+import Prelude hiding (takeWhile)
 import Control.Applicative
 import Control.Monad
 import Control.Monad.State.Strict
 import Data.Attoparsec.Text
 import Data.Char
 import Data.Maybe
-import Data.Monoid
 import qualified Data.Text as T
 #if MIN_VERSION_base(4,9,0)
 import Data.Kind
@@ -170,6 +170,8 @@
 -- Right    テスト
 -- >>> eval "   テスト  テスト  {%-test"
 -- Right    テスト  テスト
+-- >>> eval "main() {  }"
+-- Right main() {  }
 --
 literal :: HaijiParser (AST 'Partially)
 literal = liftParser $ Literal . T.concat <$> many1 go where
@@ -178,8 +180,8 @@
     pc <- peekChar
     case pc of
       Nothing  -> if T.null sp then fail "literal" else return sp
-      Just '{' -> do x <- try $ sequence [char '{', satisfy (\c -> c `notElem` ("{%" :: String))]
-                     T.append (sp <> T.pack x) <$> takeWhile1 (\c -> c /= '{' && not (isSpace c))
+      Just '{' -> do x <- try $ sequence [char '{', satisfy (`notElem` ("{%#" :: String))]
+                     T.append (sp `T.append` T.pack x) <$> takeWhile (\c -> c /= '{' && not (isSpace c))
       _        -> T.append sp <$> takeWhile1 (\c -> c /= '{' && not (isSpace c))
 
 -- |
