@@ -19,6 +19,7 @@ module Data.Attoparsec.Internal
1919
2020 -- * Running parsers
2121 , parse
22+ , parseOnly
2223
2324 -- * Combinators
2425 , (<?>)
@@ -560,12 +561,22 @@ infix 0 <?>
560561-- | Terminal failure continuation.
561562failK :: Failure a
562563failK i0 _a0 _m0 stack msg = Fail (unI i0) stack msg
564+{-# INLINE failK #-}
563565
564566-- | Terminal success continuation.
565567successK :: Success a a
566568successK i0 _a0 _m0 a = Done (unI i0) a
569+{-# INLINE successK #-}
567570
568571-- | Run a parser.
569572parse :: Parser a -> B.ByteString -> Result a
570573parse m s = runParser m (I s) (A B.empty) Incomplete failK successK
571574{-# INLINE parse #-}
575+
576+-- | Run a parser that cannot be resupplied via a 'Partial' result.
577+parseOnly :: Parser a -> B.ByteString -> Either String a
578+parseOnly m s = case runParser m (I s) (A B.empty) Complete failK successK of
579+ Fail _ _ err -> Left err
580+ Done _ a -> Right a
581+ _ -> error "parseOnly: impossible error!"
582+{-# INLINE parseOnly #-}