diff --git a/parsers.cabal b/parsers.cabal
--- a/parsers.cabal
+++ b/parsers.cabal
@@ -1,6 +1,6 @@
 name:          parsers
 category:      Text, Parsing
-version:       0.5
+version:       0.5.2
 license:       BSD3
 cabal-version: >= 1.10
 license-file:  LICENSE
diff --git a/src/Text/Parser/Char.hs b/src/Text/Parser/Char.hs
--- a/src/Text/Parser/Char.hs
+++ b/src/Text/Parser/Char.hs
@@ -101,8 +101,7 @@
 noneOfSet s = oneOfSet (CharSet.complement s)
 {-# INLINE noneOfSet #-}
 
--- | Skips /zero/ or more white space characters. See also 'skipMany' and
--- 'whiteSpace'.
+-- | Skips /zero/ or more white space characters. See also 'skipMany'.
 spaces :: CharParsing m => m ()
 spaces = skipMany space <?> "white space"
 {-# INLINE spaces #-}
diff --git a/src/Text/Parser/Expression.hs b/src/Text/Parser/Expression.hs
--- a/src/Text/Parser/Expression.hs
+++ b/src/Text/Parser/Expression.hs
@@ -108,7 +108,7 @@
               ambiguousLeft     = ambiguous "left" lassocOp
               ambiguousNon      = ambiguous "non" nassocOp
 
-              preTermP   =     do { pre <- prefixP; x <- term; return $ pre x }
+              preTermP   =     try (do { pre <- prefixP; x <- term; return $ pre x })
                            <|> term
 
               termP      = do { x <- preTermP
diff --git a/src/Text/Parser/Token.hs b/src/Text/Parser/Token.hs
--- a/src/Text/Parser/Token.hs
+++ b/src/Text/Parser/Token.hs
@@ -245,7 +245,7 @@
 -- @p@ separated by 'comma'. Returns a list of values returned
 -- by @p@.
 commaSep1 :: TokenParsing m => m a -> m [a]
-commaSep1 p = sepBy p comma
+commaSep1 p = sepBy1 p comma
 {-# INLINE commaSep1 #-}
 
 -- | Additional functionality that is needed to tokenize input while ignoring whitespace.
@@ -579,7 +579,7 @@
 zeroNumFloat
     = Left <$> (hexadecimal <|> octal)
   <|> decimalFloat
-  <|> pure 0 <**> fractFloat
+  <|> pure 0 <**> try fractFloat
   <|> pure (Left 0)
 decimalFloat = decimal <**> option Left (try fractFloat)
 
