@@ -19,6 +19,7 @@ module Data.Attoparsec.Internal
20 -- * Running parsers
20 -- * Running parsers
23 -- * Combinators
24 -- * Combinators
@@ -560,12 +561,22 @@ infix 0 <?>
560-- | Terminal failure continuation.
561-- | Terminal failure continuation.
561failK :: Failure a
562failK :: Failure a
562failK i0 _a0 _m0 stack msg = Fail (unI i0) stack msg
563failK i0 _a0 _m0 stack msg = Fail (unI i0) stack msg
564-- | Terminal success continuation.
566-- | Terminal success continuation.
565successK :: Success a a
567successK :: Success a a
566successK i0 _a0 _m0 a = Done (unI i0) a
568successK i0 _a0 _m0 a = Done (unI i0) a
569+{-# INLINE successK #-}
568-- | Run a parser.
571-- | Run a parser.
569parse :: Parser a -> B.ByteString -> Result a
572parse :: Parser a -> B.ByteString -> Result a
570parse m s = runParser m (I s) (A B.empty) Incomplete failK successK
573parse m s = runParser m (I s) (A B.empty) Incomplete failK successK
571{-# INLINE parse #-}
574{-# INLINE parse #-}
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
581+ _ -> error "parseOnly: impossible error!"
582+{-# INLINE parseOnly #-}