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


-- | Indentation sensitive parsing combinators for Parsec
--   
--   Indentation sensitive parsing combinators for Parsec
--   
--   See
--   
--   <b>Michael D. Adams and Ömer S. Ağacan</b>. Indentation-sensitive
--   parsing for Parsec. In <i>Proceedings of the 2014 ACM SIGPLAN
--   Symposium on Haskell</i>, Haskell ’14, pages 121–132. ACM, New York,
--   NY, USA, September 2014. ISBN 978-1-4503-3041-1.
--   <a>doi:10.1145/2633357.2633369</a>.
--   
--   This package provides indentation combinators for Parsec. For
--   Trifecta, install indentation-trifecta. For backward compatability or
--   to install both, install indentation.
@package indentation-parsec
@version 0.0.0.1

module Text.Parsec.Indentation
type IndentationToken t = t
data IndentStream s
IndentStream :: !IndentationState -> !s -> IndentStream s
[indentationState] :: IndentStream s -> !IndentationState
[tokenStream] :: IndentStream s -> !s
mkIndentStream :: Indentation -> Indentation -> Bool -> IndentationRel -> s -> IndentStream s
localState :: (Monad m) => LocalState (ParsecT (IndentStream s) u m a)
localStateUnlessAbsMode :: (Monad m) => LocalState (ParsecT (IndentStream s) u m a)
localTokenMode :: (Monad m) => (IndentationRel -> IndentationRel) -> ParsecT (IndentStream s) u m a -> ParsecT (IndentStream s) u m a
localIndentation :: (Monad m) => IndentationRel -> ParsecT (IndentStream s) u m a -> ParsecT (IndentStream s) u m a
absoluteIndentation :: (Monad m) => ParsecT (IndentStream s) u m a -> ParsecT (IndentStream s) u m a
ignoreAbsoluteIndentation :: (Monad m) => ParsecT (IndentStream s) u m a -> ParsecT (IndentStream s) u m a
localAbsoluteIndentation :: (Monad m) => ParsecT (IndentStream s) u m a -> ParsecT (IndentStream s) u m a
streamToList :: (Monad m, Stream s m t) => s -> m [t]
indentStreamParser :: (Monad m) => ParsecT s u m (t, Indentation) -> ParsecT (IndentStream s) u m (IndentationToken t)
consumed :: (Monad m) => (a -> m b) -> (a -> m b) -> Consumed (m a) -> m b
data IndentationRel
Eq :: IndentationRel
Any :: IndentationRel
Const :: Indentation -> IndentationRel
Ge :: IndentationRel
Gt :: IndentationRel
type Indentation = Int
infIndentation :: Indentation
instance GHC.Show.Show s => GHC.Show.Show (Text.Parsec.Indentation.IndentStream s)
instance (GHC.Base.Monad m, Text.Parsec.Prim.Stream s m (t, Text.Parser.Indentation.Implementation.Indentation)) => Text.Parsec.Prim.Stream (Text.Parsec.Indentation.IndentStream s) m (Text.Parsec.Indentation.IndentationToken t)

module Text.Parsec.Indentation.Char
mkCharIndentStream :: s -> CharIndentStream s
data CharIndentStream s
CharIndentStream :: {-# UNPACK #-} !Indentation -> !s -> CharIndentStream s
[charIndentStreamColumn] :: CharIndentStream s -> {-# UNPACK #-} !Indentation
[charIndentStreamStream] :: CharIndentStream s -> !s
updateColumn :: Integral a => a -> Char -> a
charIndentStreamParser :: (Monad m) => ParsecT s u m t -> ParsecT (CharIndentStream s) u m (t, Indentation)
consumed :: (Monad m) => (a -> m b) -> (a -> m b) -> Consumed (m a) -> m b
instance GHC.Show.Show s => GHC.Show.Show (Text.Parsec.Indentation.Char.CharIndentStream s)
instance Text.Parsec.Prim.Stream s m GHC.Types.Char => Text.Parsec.Prim.Stream (Text.Parsec.Indentation.Char.CharIndentStream s) m (GHC.Types.Char, Text.Parser.Indentation.Implementation.Indentation)

module Text.Parsec.Indentation.Token
type IndentLanguageDef st = GenLanguageDef (IndentStream (CharIndentStream String)) st Identity
makeIndentLanguageDef :: (Monad m) => GenLanguageDef s st m -> GenLanguageDef (IndentStream (CharIndentStream s)) st m
makeTokenParser :: (Stream s m (Char, Indentation)) => GenLanguageDef (IndentStream s) u m -> GenTokenParser (IndentStream s) u m
