-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Generic parser library capable of providing partial results from partial input.
--   
--   This package defines yet another parser combinator library. This one
--   is implemented using the concept of Brzozowski derivatives, tweaked
--   and optimized to work with any monoidal input type. Lists, ByteString,
--   and Text are supported out of the box, as well as any other data type
--   for which the monoid-subclasses package defines instances. If the
--   parser result is also a monoid, its chunks can be extracted
--   incrementally, before the complete input is parsed.
@package incremental-parser
@version 0.5.1

-- | This module defines the MonoidApplicative and
--   MonoidAlternative type classes. Their methods are specialized
--   forms of the standard Applicative and Alternative class
--   methods. Instances of these classes should override the default method
--   implementations with more efficient ones.
module Control.Applicative.Monoid
class Applicative f => MonoidApplicative (f :: Type -> Type)

-- | A variant of the Applicative's <*> operator specialized
--   for endomorphic functions.
(+<*>) :: MonoidApplicative f => f (a -> a) -> f a -> f a

-- | Lifted and potentially optimized monoid mappend operation from
--   the parameter type.
(><) :: (MonoidApplicative f, Semigroup a) => f a -> f a -> f a
infixl 4 +<*>
infixl 5 ><
class (Alternative f, MonoidApplicative f) => MonoidAlternative (f :: Type -> Type)

-- | Like optional, but restricted to Monoid results.
moptional :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | Zero or more argument occurrences like many, but concatenated.
concatMany :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | One or more argument occurrences like some, but concatenated.
concatSome :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | This module defines parsing combinators for incremental parsers.
--   
--   The exported Parser type can provide partial parsing results
--   from partial input, as long as the output is a Monoid.
--   Construct a parser using the primitives and combinators, supply it
--   with input using functions feed and feedEof, and extract
--   the parsed output using results.
--   
--   If your parser only ever uses the symmetric choice <||>,
--   import the Text.ParserCombinators.Incremental.Symmetric module
--   instead. Vice versa, if you always use the shortcutting
--   <<|> choice, import
--   Text.ParserCombinators.Incremental.LeftBiasedLocal instead of
--   this module.
--   
--   Implementation is based on Brzozowski derivatives.
module Text.ParserCombinators.Incremental

-- | The central parser type. Its first parameter is the subtype of the
--   parser, the second is the input monoid type, the third the output
--   type.
data Parser t s r

-- | Feeds a chunk of the input to the parser.
feed :: Monoid s => s -> Parser t s r -> Parser t s r

-- | Signals the end of the input.
feedEof :: Monoid s => Parser t s r -> Parser t s r

-- | Like results, but more general: doesn't assume that the result
--   type is a Monoid.
inspect :: Parser t s r -> Either String ([(r, s)], Maybe (Maybe (r -> r), Parser t s r))

-- | Extracts all available parsing results from a Parser. The first
--   component of the result pair is a list of complete results together
--   with the unconsumed remainder of the input. If the parsing can
--   continue further, the second component of the pair provides the
--   partial result prefix together with the parser for the rest of the
--   input.
results :: Monoid r => Parser t s r -> ([(r, s)], Maybe (r, Parser t s r))

-- | Like results, but returns only the complete results with the
--   corresponding unconsumed inputs.
completeResults :: Monoid s => Parser t s r -> [(r, s)]

-- | Like results, but returns only the partial result prefix.
resultPrefix :: Monoid r => Parser t s r -> (r, Parser t s r)
failure :: Parser t s r

-- | Name a parser for error reporting in case it fails.
(<?>) :: Monoid s => Parser t s r -> String -> Parser t s r
infix 0 <?>
more :: (s -> Parser t s r) -> Parser t s r

-- | A parser that fails on any non-empty input and succeeds at its end.
eof :: (MonoidNull s, Monoid r, Semigroup r) => Parser t s r

-- | A parser that accepts any single input atom.
anyToken :: FactorialMonoid s => Parser t s s

-- | A parser that accepts a specific input atom.
token :: (Eq s, FactorialMonoid s) => s -> Parser t s s

-- | A parser that accepts an input atom only if it satisfies the given
--   predicate.
satisfy :: FactorialMonoid s => (s -> Bool) -> Parser t s s

-- | A parser that accepts and consumes all input.
acceptAll :: (Semigroup s, Monoid s) => Parser t s s

-- | A parser that consumes and returns the given prefix of the input.
string :: (LeftReductive s, MonoidNull s, Semigroup s) => s -> Parser t s s

-- | A parser accepting the longest sequence of input atoms that match the
--   given predicate; an optimized version of 'concatMany . satisfy'.
takeWhile :: (FactorialMonoid s, MonoidNull s) => (s -> Bool) -> Parser t s s

-- | A parser accepting the longest non-empty sequence of input atoms that
--   match the given predicate; an optimized version of 'concatSome .
--   satisfy'.
takeWhile1 :: (FactorialMonoid s, MonoidNull s) => (s -> Bool) -> Parser t s s

-- | Specialization of satisfy on TextualMonoid inputs,
--   accepting an input character only if it satisfies the given predicate.
satisfyChar :: TextualMonoid s => (Char -> Bool) -> Parser t s s

-- | Specialization of takeWhile on TextualMonoid inputs,
--   accepting the longest sequence of input characters that match the
--   given predicate; an optimized version of 'concatMany . satisfyChar'.
takeCharsWhile :: (TextualMonoid s, MonoidNull s) => (Char -> Bool) -> Parser t s s

-- | Specialization of takeWhile1 on TextualMonoid inputs,
--   accepting the longest non-empty sequence of input atoms that match the
--   given predicate; an optimized version of 'concatSome . satisfyChar'.
takeCharsWhile1 :: (TextualMonoid s, MonoidNull s) => (Char -> Bool) -> Parser t s s

-- | Accepts the given number of occurrences of the argument parser.
count :: (Monoid s, Monoid r, Semigroup r) => Int -> Parser t s r -> Parser t s r

-- | Discards the results of the argument parser.
skip :: (Monoid s, Monoid r, Semigroup r) => Parser t s r' -> Parser t s r

-- | Like optional, but restricted to Monoid results.
moptional :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | Zero or more argument occurrences like many, but concatenated.
concatMany :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | One or more argument occurrences like some, but concatenated.
concatSome :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | Repeats matching the first argument until the second one succeeds.
manyTill :: (Monoid s, Monoid r, Semigroup r) => Parser t s r -> Parser t s r' -> Parser t s r

-- | A variant of the Applicative's <*> operator specialized
--   for endomorphic functions.
(+<*>) :: MonoidApplicative f => f (a -> a) -> f a -> f a
infixl 4 +<*>
(<||>) :: Parser t s r -> Parser t s r -> Parser t s r
infixl 3 <||>
(<<|>) :: Monoid s => Parser t s r -> Parser t s r -> Parser t s r
infixl 3 <<|>

-- | Lifted and potentially optimized monoid mappend operation from
--   the parameter type.
(><) :: (MonoidApplicative f, Semigroup a) => f a -> f a -> f a
infixl 5 ><

-- | Behaves like the argument parser, but without consuming any input.
lookAhead :: Monoid s => Parser t s r -> Parser t s r

-- | Does not consume any input; succeeds (with mempty result) iff
--   the argument parser fails.
notFollowedBy :: (Monoid s, Monoid r) => Parser t s r' -> Parser t s r

-- | Parallel parser conjunction: the combined parser keeps accepting input
--   as long as both arguments do.
and :: (Monoid s, Monoid r1, Monoid r2) => Parser t s r1 -> Parser t s r2 -> Parser t s (r1, r2)

-- | A sequence parser that preserves incremental results, otherwise
--   equivalent to liftA2 (,)
andThen :: (Monoid s, Monoid r1, Monoid r2) => Parser t s r1 -> Parser t s r2 -> Parser t s (r1, r2)

-- | Combine a record of parsers into a record parser.
record :: forall g (m :: Type -> Type) s t. (Traversable g, Applicative m, Monoid s) => g (Parser t s) -> Parser t s (g m)

-- | Modifies the parser type
mapType :: (forall a. () => Parser t s a -> Parser b s a) -> Parser t s r -> Parser b s r

-- | Like fmap, but capable of mapping partial results, being
--   restricted to Monoid types only.
mapIncremental :: (Monoid s, Monoid a, Monoid b) => (a -> b) -> Parser p s a -> Parser p s b

-- | Converts a parser accepting one input type to another. The argument
--   functions forth and back must be inverses of each
--   other and they must distribute through <>:
--   
--   
--   f (s1 <> s2) == f s1 <> f s2
--   
mapInput :: (Monoid s, Monoid s') => (s -> s') -> (s' -> s) -> Parser t s r -> Parser t s' r

-- | Converts a parser accepting one input type to another, just like
--   'mapMaybeInput except the two argument functions can demand more input
--   by returning Nothing. If 'mapMaybeInput is defined for the
--   two input inputs, then
--   
--   
--   mapInput f g == mapMaybeInput (Just . f) (Just . g)
--   
mapMaybeInput :: (Monoid s, Monoid s') => (s -> Maybe s') -> (s' -> Maybe s) -> Parser t s r -> Parser t s' r
isInfallible :: Parser t s r -> Bool
showWith :: (Monoid s, Monoid r, Show s) => ((s -> Parser t s r) -> String) -> (r -> String) -> Parser t s r -> String
defaultMany :: (Monoid s, Alternative (Parser t s)) => Parser t s r -> Parser t s [r]
defaultSome :: (Monoid s, Alternative (Parser t s)) => Parser t s r -> Parser t s [r]
instance GHC.Internal.Base.Monoid s => GHC.Internal.Base.Applicative (Text.ParserCombinators.Incremental.Parser t s)
instance (GHC.Internal.Base.Alternative (Text.ParserCombinators.Incremental.Parser t s), Data.Monoid.Textual.TextualMonoid s) => Text.Parser.Char.CharParsing (Text.ParserCombinators.Incremental.Parser t s)
instance (GHC.Internal.Base.Alternative (Text.ParserCombinators.Incremental.Parser t s), Data.Monoid.Null.MonoidNull s) => Text.Parser.Deterministic.DeterministicParsing (Text.ParserCombinators.Incremental.Parser t s)
instance GHC.Internal.Base.Monoid s => GHC.Internal.Base.Functor (Text.ParserCombinators.Incremental.Parser t s)
instance (Data.Monoid.Textual.TextualMonoid s, Data.Semigroup.Cancellative.LeftReductive s, Text.Parser.LookAhead.LookAheadParsing (Text.ParserCombinators.Incremental.Parser t s)) => Text.Parser.Input.InputCharParsing (Text.ParserCombinators.Incremental.Parser t s)
instance (GHC.Internal.Base.Alternative (Text.ParserCombinators.Incremental.Parser t s), Data.Monoid.Factorial.FactorialMonoid s, Data.Semigroup.Cancellative.LeftReductive s) => Text.Parser.Input.InputParsing (Text.ParserCombinators.Incremental.Parser t s)
instance (GHC.Internal.Base.Alternative (Text.ParserCombinators.Incremental.Parser t s), Data.Monoid.Null.MonoidNull s) => Text.Parser.LookAhead.LookAheadParsing (Text.ParserCombinators.Incremental.Parser t s)
instance GHC.Internal.Base.Monoid s => GHC.Internal.Control.Monad.Fail.MonadFail (Text.ParserCombinators.Incremental.Parser t s)
instance GHC.Internal.Base.Monoid s => GHC.Internal.Control.Monad.Fix.MonadFix (Text.ParserCombinators.Incremental.Parser t s)
instance GHC.Internal.Base.Monoid s => GHC.Internal.Base.Monad (Text.ParserCombinators.Incremental.Parser t s)
instance (GHC.Internal.Base.Alternative (Text.ParserCombinators.Incremental.Parser t s), GHC.Internal.Base.Monoid s) => Control.Applicative.Monoid.MonoidAlternative (Text.ParserCombinators.Incremental.Parser t s)
instance GHC.Internal.Base.Monoid s => Control.Applicative.Monoid.MonoidApplicative (Text.ParserCombinators.Incremental.Parser t s)
instance (GHC.Internal.Base.Monoid s, GHC.Internal.Base.Monoid r, GHC.Internal.Base.Semigroup r) => GHC.Internal.Base.Monoid (Text.ParserCombinators.Incremental.Parser t s r)
instance (GHC.Internal.Base.Alternative (Text.ParserCombinators.Incremental.Parser t s), Data.Monoid.Null.MonoidNull s) => Text.Parser.Combinators.Parsing (Text.ParserCombinators.Incremental.Parser t s)
instance (GHC.Internal.Base.Monoid s, GHC.Internal.Base.Semigroup r) => GHC.Internal.Base.Semigroup (Text.ParserCombinators.Incremental.Parser t s r)

-- | This module defines parsing combinators for incremental parsers with
--   left-biased local choice.
--   
--   The exported Parser type can provide partial parsing results
--   from partial input, as long as the output is a Monoid.
--   Construct a parser using the primitives and combinators, supply it
--   with input using functions feed and feedEof, and extract
--   the parsed output using results.
--   
--   Implementation is based on Brzozowski derivatives.
module Text.ParserCombinators.Incremental.LeftBiasedLocal

-- | A parser accepting the longest sequence of input atoms that match the
--   given predicate; an optimized version of 'concatMany . satisfy'.
takeWhile :: (FactorialMonoid s, MonoidNull s) => (s -> Bool) -> Parser t s s

-- | Parallel parser conjunction: the combined parser keeps accepting input
--   as long as both arguments do.
and :: (Monoid s, Monoid r1, Monoid r2) => Parser t s r1 -> Parser t s r2 -> Parser t s (r1, r2)

-- | A parser that accepts an input atom only if it satisfies the given
--   predicate.
satisfy :: FactorialMonoid s => (s -> Bool) -> Parser t s s

-- | A parser that fails on any non-empty input and succeeds at its end.
eof :: (MonoidNull s, Monoid r, Semigroup r) => Parser t s r

-- | A parser that consumes and returns the given prefix of the input.
string :: (LeftReductive s, MonoidNull s, Semigroup s) => s -> Parser t s s

-- | Accepts the given number of occurrences of the argument parser.
count :: (Monoid s, Monoid r, Semigroup r) => Int -> Parser t s r -> Parser t s r

-- | Repeats matching the first argument until the second one succeeds.
manyTill :: (Monoid s, Monoid r, Semigroup r) => Parser t s r -> Parser t s r' -> Parser t s r

-- | Behaves like the argument parser, but without consuming any input.
lookAhead :: Monoid s => Parser t s r -> Parser t s r

-- | Discards the results of the argument parser.
skip :: (Monoid s, Monoid r, Semigroup r) => Parser t s r' -> Parser t s r

-- | Lifted and potentially optimized monoid mappend operation from
--   the parameter type.
(><) :: (MonoidApplicative f, Semigroup a) => f a -> f a -> f a
infixl 5 ><

-- | A variant of the Applicative's <*> operator specialized
--   for endomorphic functions.
(+<*>) :: MonoidApplicative f => f (a -> a) -> f a -> f a
infixl 4 +<*>

-- | Does not consume any input; succeeds (with mempty result) iff
--   the argument parser fails.
notFollowedBy :: (Monoid s, Monoid r) => Parser t s r' -> Parser t s r

-- | Zero or more argument occurrences like many, but concatenated.
concatMany :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | Like optional, but restricted to Monoid results.
moptional :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | One or more argument occurrences like some, but concatenated.
concatSome :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | Specialization of takeWhile on TextualMonoid inputs,
--   accepting the longest sequence of input characters that match the
--   given predicate; an optimized version of 'concatMany . satisfyChar'.
takeCharsWhile :: (TextualMonoid s, MonoidNull s) => (Char -> Bool) -> Parser t s s

-- | Specialization of takeWhile1 on TextualMonoid inputs,
--   accepting the longest non-empty sequence of input atoms that match the
--   given predicate; an optimized version of 'concatSome . satisfyChar'.
takeCharsWhile1 :: (TextualMonoid s, MonoidNull s) => (Char -> Bool) -> Parser t s s

-- | A parser that accepts any single input atom.
anyToken :: FactorialMonoid s => Parser t s s

-- | A parser accepting the longest non-empty sequence of input atoms that
--   match the given predicate; an optimized version of 'concatSome .
--   satisfy'.
takeWhile1 :: (FactorialMonoid s, MonoidNull s) => (s -> Bool) -> Parser t s s
(<<|>) :: Monoid s => Parser t s r -> Parser t s r -> Parser t s r
infixl 3 <<|>

-- | Name a parser for error reporting in case it fails.
(<?>) :: Monoid s => Parser t s r -> String -> Parser t s r
infix 0 <?>

-- | A parser that accepts a specific input atom.
token :: (Eq s, FactorialMonoid s) => s -> Parser t s s
(<||>) :: Parser t s r -> Parser t s r -> Parser t s r
infixl 3 <||>
failure :: Parser t s r

-- | Feeds a chunk of the input to the parser.
feed :: Monoid s => s -> Parser t s r -> Parser t s r

-- | Signals the end of the input.
feedEof :: Monoid s => Parser t s r -> Parser t s r

-- | Like results, but more general: doesn't assume that the result
--   type is a Monoid.
inspect :: Parser t s r -> Either String ([(r, s)], Maybe (Maybe (r -> r), Parser t s r))

-- | Extracts all available parsing results from a Parser. The first
--   component of the result pair is a list of complete results together
--   with the unconsumed remainder of the input. If the parsing can
--   continue further, the second component of the pair provides the
--   partial result prefix together with the parser for the rest of the
--   input.
results :: Monoid r => Parser t s r -> ([(r, s)], Maybe (r, Parser t s r))

-- | Like results, but returns only the complete results with the
--   corresponding unconsumed inputs.
completeResults :: Monoid s => Parser t s r -> [(r, s)]

-- | Like results, but returns only the partial result prefix.
resultPrefix :: Monoid r => Parser t s r -> (r, Parser t s r)
more :: (s -> Parser t s r) -> Parser t s r

-- | A parser that accepts and consumes all input.
acceptAll :: (Semigroup s, Monoid s) => Parser t s s

-- | Specialization of satisfy on TextualMonoid inputs,
--   accepting an input character only if it satisfies the given predicate.
satisfyChar :: TextualMonoid s => (Char -> Bool) -> Parser t s s

-- | A sequence parser that preserves incremental results, otherwise
--   equivalent to liftA2 (,)
andThen :: (Monoid s, Monoid r1, Monoid r2) => Parser t s r1 -> Parser t s r2 -> Parser t s (r1, r2)

-- | Combine a record of parsers into a record parser.
record :: forall g (m :: Type -> Type) s t. (Traversable g, Applicative m, Monoid s) => g (Parser t s) -> Parser t s (g m)

-- | Modifies the parser type
mapType :: (forall a. () => Parser t s a -> Parser b s a) -> Parser t s r -> Parser b s r

-- | Like fmap, but capable of mapping partial results, being
--   restricted to Monoid types only.
mapIncremental :: (Monoid s, Monoid a, Monoid b) => (a -> b) -> Parser p s a -> Parser p s b

-- | Converts a parser accepting one input type to another. The argument
--   functions forth and back must be inverses of each
--   other and they must distribute through <>:
--   
--   
--   f (s1 <> s2) == f s1 <> f s2
--   
mapInput :: (Monoid s, Monoid s') => (s -> s') -> (s' -> s) -> Parser t s r -> Parser t s' r

-- | Converts a parser accepting one input type to another, just like
--   'mapMaybeInput except the two argument functions can demand more input
--   by returning Nothing. If 'mapMaybeInput is defined for the
--   two input inputs, then
--   
--   
--   mapInput f g == mapMaybeInput (Just . f) (Just . g)
--   
mapMaybeInput :: (Monoid s, Monoid s') => (s -> Maybe s') -> (s' -> Maybe s) -> Parser t s r -> Parser t s' r
isInfallible :: Parser t s r -> Bool
showWith :: (Monoid s, Monoid r, Show s) => ((s -> Parser t s r) -> String) -> (r -> String) -> Parser t s r -> String
defaultMany :: (Monoid s, Alternative (Parser t s)) => Parser t s r -> Parser t s [r]
defaultSome :: (Monoid s, Alternative (Parser t s)) => Parser t s r -> Parser t s [r]
type Parser = Parser LeftBiasedLocal

-- | An empty type to specialize Parser for the left-biased
--   Alternative instance.
data LeftBiasedLocal
leftmost :: Parser s r -> Parser a s r
instance GHC.Internal.Base.Monoid s => GHC.Internal.Base.Alternative (Text.ParserCombinators.Incremental.Parser Text.ParserCombinators.Incremental.LeftBiasedLocal.LeftBiasedLocal s)
instance GHC.Internal.Base.Monoid s => GHC.Internal.Base.MonadPlus (Text.ParserCombinators.Incremental.Parser Text.ParserCombinators.Incremental.LeftBiasedLocal.LeftBiasedLocal s)

-- | This module defines parsing combinators for incremental parsers with
--   symmetric choice.
--   
--   The exported Parser type can provide partial parsing results
--   from partial input, as long as the output is a Monoid.
--   Construct a parser using the primitives and combinators, supply it
--   with input using functions feed and feedEof, and extract
--   the parsed output using results.
--   
--   Implementation is based on Brzozowski derivatives.
module Text.ParserCombinators.Incremental.Symmetric

-- | A parser accepting the longest sequence of input atoms that match the
--   given predicate; an optimized version of 'concatMany . satisfy'.
takeWhile :: (FactorialMonoid s, MonoidNull s) => (s -> Bool) -> Parser t s s

-- | Parallel parser conjunction: the combined parser keeps accepting input
--   as long as both arguments do.
and :: (Monoid s, Monoid r1, Monoid r2) => Parser t s r1 -> Parser t s r2 -> Parser t s (r1, r2)

-- | A parser that accepts an input atom only if it satisfies the given
--   predicate.
satisfy :: FactorialMonoid s => (s -> Bool) -> Parser t s s

-- | A parser that fails on any non-empty input and succeeds at its end.
eof :: (MonoidNull s, Monoid r, Semigroup r) => Parser t s r

-- | A parser that consumes and returns the given prefix of the input.
string :: (LeftReductive s, MonoidNull s, Semigroup s) => s -> Parser t s s

-- | Accepts the given number of occurrences of the argument parser.
count :: (Monoid s, Monoid r, Semigroup r) => Int -> Parser t s r -> Parser t s r

-- | Repeats matching the first argument until the second one succeeds.
manyTill :: (Monoid s, Monoid r, Semigroup r) => Parser t s r -> Parser t s r' -> Parser t s r

-- | Behaves like the argument parser, but without consuming any input.
lookAhead :: Monoid s => Parser t s r -> Parser t s r

-- | Discards the results of the argument parser.
skip :: (Monoid s, Monoid r, Semigroup r) => Parser t s r' -> Parser t s r

-- | Lifted and potentially optimized monoid mappend operation from
--   the parameter type.
(><) :: (MonoidApplicative f, Semigroup a) => f a -> f a -> f a
infixl 5 ><

-- | A variant of the Applicative's <*> operator specialized
--   for endomorphic functions.
(+<*>) :: MonoidApplicative f => f (a -> a) -> f a -> f a
infixl 4 +<*>

-- | Does not consume any input; succeeds (with mempty result) iff
--   the argument parser fails.
notFollowedBy :: (Monoid s, Monoid r) => Parser t s r' -> Parser t s r

-- | Zero or more argument occurrences like many, but concatenated.
concatMany :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | Like optional, but restricted to Monoid results.
moptional :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | One or more argument occurrences like some, but concatenated.
concatSome :: (MonoidAlternative f, Semigroup a, Monoid a) => f a -> f a

-- | Specialization of takeWhile on TextualMonoid inputs,
--   accepting the longest sequence of input characters that match the
--   given predicate; an optimized version of 'concatMany . satisfyChar'.
takeCharsWhile :: (TextualMonoid s, MonoidNull s) => (Char -> Bool) -> Parser t s s

-- | Specialization of takeWhile1 on TextualMonoid inputs,
--   accepting the longest non-empty sequence of input atoms that match the
--   given predicate; an optimized version of 'concatSome . satisfyChar'.
takeCharsWhile1 :: (TextualMonoid s, MonoidNull s) => (Char -> Bool) -> Parser t s s

-- | A parser that accepts any single input atom.
anyToken :: FactorialMonoid s => Parser t s s

-- | A parser accepting the longest non-empty sequence of input atoms that
--   match the given predicate; an optimized version of 'concatSome .
--   satisfy'.
takeWhile1 :: (FactorialMonoid s, MonoidNull s) => (s -> Bool) -> Parser t s s
(<<|>) :: Monoid s => Parser t s r -> Parser t s r -> Parser t s r
infixl 3 <<|>

-- | Name a parser for error reporting in case it fails.
(<?>) :: Monoid s => Parser t s r -> String -> Parser t s r
infix 0 <?>

-- | A parser that accepts a specific input atom.
token :: (Eq s, FactorialMonoid s) => s -> Parser t s s
(<||>) :: Parser t s r -> Parser t s r -> Parser t s r
infixl 3 <||>
failure :: Parser t s r

-- | Feeds a chunk of the input to the parser.
feed :: Monoid s => s -> Parser t s r -> Parser t s r

-- | Signals the end of the input.
feedEof :: Monoid s => Parser t s r -> Parser t s r

-- | Like results, but more general: doesn't assume that the result
--   type is a Monoid.
inspect :: Parser t s r -> Either String ([(r, s)], Maybe (Maybe (r -> r), Parser t s r))

-- | Extracts all available parsing results from a Parser. The first
--   component of the result pair is a list of complete results together
--   with the unconsumed remainder of the input. If the parsing can
--   continue further, the second component of the pair provides the
--   partial result prefix together with the parser for the rest of the
--   input.
results :: Monoid r => Parser t s r -> ([(r, s)], Maybe (r, Parser t s r))

-- | Like results, but returns only the complete results with the
--   corresponding unconsumed inputs.
completeResults :: Monoid s => Parser t s r -> [(r, s)]

-- | Like results, but returns only the partial result prefix.
resultPrefix :: Monoid r => Parser t s r -> (r, Parser t s r)
more :: (s -> Parser t s r) -> Parser t s r

-- | A parser that accepts and consumes all input.
acceptAll :: (Semigroup s, Monoid s) => Parser t s s

-- | Specialization of satisfy on TextualMonoid inputs,
--   accepting an input character only if it satisfies the given predicate.
satisfyChar :: TextualMonoid s => (Char -> Bool) -> Parser t s s

-- | A sequence parser that preserves incremental results, otherwise
--   equivalent to liftA2 (,)
andThen :: (Monoid s, Monoid r1, Monoid r2) => Parser t s r1 -> Parser t s r2 -> Parser t s (r1, r2)

-- | Combine a record of parsers into a record parser.
record :: forall g (m :: Type -> Type) s t. (Traversable g, Applicative m, Monoid s) => g (Parser t s) -> Parser t s (g m)

-- | Modifies the parser type
mapType :: (forall a. () => Parser t s a -> Parser b s a) -> Parser t s r -> Parser b s r

-- | Like fmap, but capable of mapping partial results, being
--   restricted to Monoid types only.
mapIncremental :: (Monoid s, Monoid a, Monoid b) => (a -> b) -> Parser p s a -> Parser p s b

-- | Converts a parser accepting one input type to another. The argument
--   functions forth and back must be inverses of each
--   other and they must distribute through <>:
--   
--   
--   f (s1 <> s2) == f s1 <> f s2
--   
mapInput :: (Monoid s, Monoid s') => (s -> s') -> (s' -> s) -> Parser t s r -> Parser t s' r

-- | Converts a parser accepting one input type to another, just like
--   'mapMaybeInput except the two argument functions can demand more input
--   by returning Nothing. If 'mapMaybeInput is defined for the
--   two input inputs, then
--   
--   
--   mapInput f g == mapMaybeInput (Just . f) (Just . g)
--   
mapMaybeInput :: (Monoid s, Monoid s') => (s -> Maybe s') -> (s' -> Maybe s) -> Parser t s r -> Parser t s' r
isInfallible :: Parser t s r -> Bool
showWith :: (Monoid s, Monoid r, Show s) => ((s -> Parser t s r) -> String) -> (r -> String) -> Parser t s r -> String
defaultMany :: (Monoid s, Alternative (Parser t s)) => Parser t s r -> Parser t s [r]
defaultSome :: (Monoid s, Alternative (Parser t s)) => Parser t s r -> Parser t s [r]
type Parser = Parser Symmetric

-- | An empty type to specialize Parser for the symmetric
--   Alternative instance.
data Symmetric
allOf :: Parser s r -> Parser a s r
instance GHC.Internal.Base.Monoid s => GHC.Internal.Base.Alternative (Text.ParserCombinators.Incremental.Parser Text.ParserCombinators.Incremental.Symmetric.Symmetric s)
instance GHC.Internal.Base.Monoid s => GHC.Internal.Base.MonadPlus (Text.ParserCombinators.Incremental.Parser Text.ParserCombinators.Incremental.Symmetric.Symmetric s)
