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


-- | Monadic parser combinators
--   
--   Parsec is designed from scratch as an industrial-strength parser
--   library. It is simple, safe, well documented (on the package
--   homepage), has extensive libraries and good error messages, and is
--   also fast.
@package parsec
@version 2.1.0.1


-- | Textual source positions.
module Text.ParserCombinators.Parsec.Pos
type SourceName = String
type Line = Int
type Column = Int
data SourcePos
sourceLine :: SourcePos -> Line
sourceColumn :: SourcePos -> Column
sourceName :: SourcePos -> SourceName
incSourceLine :: SourcePos -> Line -> SourcePos
incSourceColumn :: SourcePos -> Column -> SourcePos
setSourceLine :: SourcePos -> Line -> SourcePos
setSourceColumn :: SourcePos -> Column -> SourcePos
setSourceName :: SourcePos -> SourceName -> SourcePos
newPos :: SourceName -> Line -> Column -> SourcePos
initialPos :: SourceName -> SourcePos
updatePosChar :: SourcePos -> Char -> SourcePos
updatePosString :: SourcePos -> String -> SourcePos
instance Eq SourcePos
instance Ord SourcePos
instance Show SourcePos


-- | Parse errors
module Text.ParserCombinators.Parsec.Error
data Message
SysUnExpect :: !String -> Message
UnExpect :: !String -> Message
Expect :: !String -> Message
Message :: !String -> Message
messageString :: Message -> String
messageCompare :: Message -> Message -> Ordering
messageEq :: Message -> Message -> Bool
data ParseError
errorPos :: ParseError -> SourcePos
errorMessages :: ParseError -> [Message]
errorIsUnknown :: ParseError -> Bool

-- | Language independent show function
showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String
newErrorMessage :: Message -> SourcePos -> ParseError
newErrorUnknown :: SourcePos -> ParseError
addErrorMessage :: Message -> ParseError -> ParseError
setErrorPos :: SourcePos -> ParseError -> ParseError
setErrorMessage :: Message -> ParseError -> ParseError
mergeError :: ParseError -> ParseError -> ParseError
instance Show ParseError


-- | The primitive parser combinators.
module Text.ParserCombinators.Parsec.Prim
(<?>) :: GenParser tok st a -> String -> GenParser tok st a
(<|>) :: GenParser tok st a -> GenParser tok st a -> GenParser tok st a
type Parser a = GenParser Char () a
data GenParser tok st a
runParser :: GenParser tok st a -> st -> SourceName -> [tok] -> Either ParseError a
parse :: GenParser tok () a -> SourceName -> [tok] -> Either ParseError a
parseFromFile :: Parser a -> SourceName -> IO (Either ParseError a)
parseTest :: Show a => GenParser tok () a -> [tok] -> IO ()
token :: (tok -> String) -> (tok -> SourcePos) -> (tok -> Maybe a) -> GenParser tok st a
tokens :: Eq tok => ([tok] -> String) -> (SourcePos -> [tok] -> SourcePos) -> [tok] -> GenParser tok st [tok]
tokenPrim :: (tok -> String) -> (SourcePos -> tok -> [tok] -> SourcePos) -> (tok -> Maybe a) -> GenParser tok st a

-- | The most primitive token recogniser. The expression <tt>tokenPrimEx
--   show nextpos mbnextstate test</tt>, recognises tokens when
--   <tt>test</tt> returns <tt>Just x</tt> (and returns the value
--   <tt>x</tt>). Tokens are shown in error messages using <tt>show</tt>.
--   The position is calculated using <tt>nextpos</tt>, and finally,
--   <tt>mbnextstate</tt>, can hold a function that updates the user state
--   on every token recognised (nice to count tokens :-). The function is
--   packed into a <a>Maybe</a> type for performance reasons.
tokenPrimEx :: (tok -> String) -> (SourcePos -> tok -> [tok] -> SourcePos) -> Maybe (SourcePos -> tok -> [tok] -> st -> st) -> (tok -> Maybe a) -> GenParser tok st a
try :: GenParser tok st a -> GenParser tok st a
label :: GenParser tok st a -> String -> GenParser tok st a
labels :: GenParser tok st a -> [String] -> GenParser tok st a
unexpected :: String -> GenParser tok st a
pzero :: GenParser tok st a
many :: GenParser tok st a -> GenParser tok st [a]
skipMany :: GenParser tok st a -> GenParser tok st ()
getState :: GenParser tok st st
setState :: st -> GenParser tok st ()
updateState :: (st -> st) -> GenParser tok st ()
getPosition :: GenParser tok st SourcePos
setPosition :: SourcePos -> GenParser tok st ()
getInput :: GenParser tok st [tok]
setInput :: [tok] -> GenParser tok st ()
data State tok st
State :: [tok] -> !SourcePos -> !st -> State tok st
stateInput :: State tok st -> [tok]
statePos :: State tok st -> !SourcePos
stateUser :: State tok st -> !st
getParserState :: GenParser tok st (State tok st)
setParserState :: State tok st -> GenParser tok st (State tok st)
instance MonadPlus (GenParser tok st)
instance Monad (GenParser tok st)
instance Functor (GenParser tok st)


-- | Commonly used character parsers.
module Text.ParserCombinators.Parsec.Char
type CharParser st a = GenParser Char st a
spaces :: CharParser st ()
space :: CharParser st Char
newline :: CharParser st Char
tab :: CharParser st Char
upper :: CharParser st Char
lower :: CharParser st Char
alphaNum :: CharParser st Char
letter :: CharParser st Char
digit :: CharParser st Char
hexDigit :: CharParser st Char
octDigit :: CharParser st Char
char :: Char -> CharParser st Char
string :: String -> CharParser st String
anyChar :: CharParser st Char
oneOf :: [Char] -> CharParser st Char
noneOf :: [Char] -> CharParser st Char
satisfy :: (Char -> Bool) -> CharParser st Char


-- | Commonly used generic combinators
module Text.ParserCombinators.Parsec.Combinator
choice :: [GenParser tok st a] -> GenParser tok st a
count :: Int -> GenParser tok st a -> GenParser tok st [a]
between :: GenParser tok st open -> GenParser tok st close -> GenParser tok st a -> GenParser tok st a
option :: a -> GenParser tok st a -> GenParser tok st a
optionMaybe :: GenParser tok st a -> GenParser tok st (Maybe a)
optional :: GenParser tok st a -> GenParser tok st ()
skipMany1 :: GenParser tok st a -> GenParser tok st ()
many1 :: GenParser tok st a -> GenParser tok st [a]
sepBy :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]
sepBy1 :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]
endBy :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]
endBy1 :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]
sepEndBy :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]
sepEndBy1 :: GenParser tok st a -> GenParser tok st sep -> GenParser tok st [a]
chainl :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> a -> GenParser tok st a
chainl1 :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> GenParser tok st a
chainr :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> a -> GenParser tok st a
chainr1 :: GenParser tok st a -> GenParser tok st (a -> a -> a) -> GenParser tok st a
eof :: Show tok => GenParser tok st ()
notFollowedBy :: Show tok => GenParser tok st tok -> GenParser tok st ()
manyTill :: GenParser tok st a -> GenParser tok st end -> GenParser tok st [a]
lookAhead :: GenParser tok st a -> GenParser tok st a
anyToken :: Show tok => GenParser tok st tok


-- | A helper module to parse "expressions". Builds a parser given a table
--   of operators and associativities.
module Text.ParserCombinators.Parsec.Expr
data Assoc
AssocNone :: Assoc
AssocLeft :: Assoc
AssocRight :: Assoc
data Operator t st a
Infix :: (GenParser t st (a -> a -> a)) -> Assoc -> Operator t st a
Prefix :: (GenParser t st (a -> a)) -> Operator t st a
Postfix :: (GenParser t st (a -> a)) -> Operator t st a
type OperatorTable t st a = [[Operator t st a]]
buildExpressionParser :: OperatorTable tok st a -> GenParser tok st a -> GenParser tok st a


-- | Parsec, the Fast Monadic Parser combinator library, see
--   <a>http://www.cs.uu.nl/people/daan/parsec.html</a>.
--   
--   Inspired by:
--   
--   <ul>
--   <li>Graham Hutton and Erik Meijer: Monadic Parser Combinators.
--   Technical report NOTTCS-TR-96-4. Department of Computer Science,
--   University of Nottingham, 1996.
--   <a>http://www.cs.nott.ac.uk/~gmh/monparsing.ps</a></li>
--   <li>Andrew Partridge, David Wright: Predictive parser combinators need
--   four values to report errors. Journal of Functional Programming 6(2):
--   355-364, 1996</li>
--   </ul>
--   
--   This helper module exports elements from the basic libraries.
module Text.ParserCombinators.Parsec
data ParseError
errorPos :: ParseError -> SourcePos
data SourcePos
type SourceName = String
type Line = Int
type Column = Int
sourceName :: SourcePos -> SourceName
sourceLine :: SourcePos -> Line
sourceColumn :: SourcePos -> Column
incSourceLine :: SourcePos -> Line -> SourcePos
incSourceColumn :: SourcePos -> Column -> SourcePos
setSourceLine :: SourcePos -> Line -> SourcePos
setSourceColumn :: SourcePos -> Column -> SourcePos
setSourceName :: SourcePos -> SourceName -> SourcePos


-- | A helper module to parse lexical elements (tokens).
module Text.ParserCombinators.Parsec.Token
data LanguageDef st
LanguageDef :: String -> String -> String -> Bool -> CharParser st Char -> CharParser st Char -> CharParser st Char -> CharParser st Char -> [String] -> [String] -> Bool -> LanguageDef st
commentStart :: LanguageDef st -> String
commentEnd :: LanguageDef st -> String
commentLine :: LanguageDef st -> String
nestedComments :: LanguageDef st -> Bool
identStart :: LanguageDef st -> CharParser st Char
identLetter :: LanguageDef st -> CharParser st Char
opStart :: LanguageDef st -> CharParser st Char
opLetter :: LanguageDef st -> CharParser st Char
reservedNames :: LanguageDef st -> [String]
reservedOpNames :: LanguageDef st -> [String]
caseSensitive :: LanguageDef st -> Bool
data TokenParser st
TokenParser :: CharParser st String -> (String -> CharParser st ()) -> CharParser st String -> (String -> CharParser st ()) -> CharParser st Char -> CharParser st String -> CharParser st Integer -> CharParser st Integer -> CharParser st Double -> CharParser st (Either Integer Double) -> CharParser st Integer -> CharParser st Integer -> CharParser st Integer -> (String -> CharParser st String) -> (forall a. CharParser st a -> CharParser st a) -> CharParser st () -> (forall a. CharParser st a -> CharParser st a) -> (forall a. CharParser st a -> CharParser st a) -> (forall a. CharParser st a -> CharParser st a) -> (forall a. CharParser st a -> CharParser st a) -> (forall a. CharParser st a -> CharParser st a) -> CharParser st String -> CharParser st String -> CharParser st String -> CharParser st String -> (forall a. CharParser st a -> CharParser st [a]) -> (forall a. CharParser st a -> CharParser st [a]) -> (forall a. CharParser st a -> CharParser st [a]) -> (forall a. CharParser st a -> CharParser st [a]) -> TokenParser st
identifier :: TokenParser st -> CharParser st String
reserved :: TokenParser st -> String -> CharParser st ()
operator :: TokenParser st -> CharParser st String
reservedOp :: TokenParser st -> String -> CharParser st ()
charLiteral :: TokenParser st -> CharParser st Char
stringLiteral :: TokenParser st -> CharParser st String
natural :: TokenParser st -> CharParser st Integer
integer :: TokenParser st -> CharParser st Integer
float :: TokenParser st -> CharParser st Double
naturalOrFloat :: TokenParser st -> CharParser st (Either Integer Double)
decimal :: TokenParser st -> CharParser st Integer
hexadecimal :: TokenParser st -> CharParser st Integer
octal :: TokenParser st -> CharParser st Integer
symbol :: TokenParser st -> String -> CharParser st String
lexeme :: TokenParser st -> forall a. CharParser st a -> CharParser st a
whiteSpace :: TokenParser st -> CharParser st ()
parens :: TokenParser st -> forall a. CharParser st a -> CharParser st a
braces :: TokenParser st -> forall a. CharParser st a -> CharParser st a
angles :: TokenParser st -> forall a. CharParser st a -> CharParser st a
brackets :: TokenParser st -> forall a. CharParser st a -> CharParser st a
squares :: TokenParser st -> forall a. CharParser st a -> CharParser st a
semi :: TokenParser st -> CharParser st String
comma :: TokenParser st -> CharParser st String
colon :: TokenParser st -> CharParser st String
dot :: TokenParser st -> CharParser st String
semiSep :: TokenParser st -> forall a. CharParser st a -> CharParser st [a]
semiSep1 :: TokenParser st -> forall a. CharParser st a -> CharParser st [a]
commaSep :: TokenParser st -> forall a. CharParser st a -> CharParser st [a]
commaSep1 :: TokenParser st -> forall a. CharParser st a -> CharParser st [a]
makeTokenParser :: LanguageDef st -> TokenParser st


-- | A helper module that defines some language definitions that can be
--   used to instantiate a token parser (see
--   <a>Text.ParserCombinators.Parsec.Token</a>).
module Text.ParserCombinators.Parsec.Language
haskellDef :: LanguageDef st
haskell :: TokenParser st
mondrianDef :: LanguageDef st
mondrian :: TokenParser st
emptyDef :: LanguageDef st
haskellStyle :: LanguageDef st
javaStyle :: LanguageDef st
data LanguageDef st
LanguageDef :: String -> String -> String -> Bool -> CharParser st Char -> CharParser st Char -> CharParser st Char -> CharParser st Char -> [String] -> [String] -> Bool -> LanguageDef st
commentStart :: LanguageDef st -> String
commentEnd :: LanguageDef st -> String
commentLine :: LanguageDef st -> String
nestedComments :: LanguageDef st -> Bool
identStart :: LanguageDef st -> CharParser st Char
identLetter :: LanguageDef st -> CharParser st Char
opStart :: LanguageDef st -> CharParser st Char
opLetter :: LanguageDef st -> CharParser st Char
reservedNames :: LanguageDef st -> [String]
reservedOpNames :: LanguageDef st -> [String]
caseSensitive :: LanguageDef st -> Bool


-- | This module implements permutation parsers. The algorithm used is
--   fairly complex since we push the type system to its limits :-) The
--   algorithm is described in:
--   
--   <i>Parsing Permutation Phrases,</i> by Arthur Baars, Andres Loh and
--   Doaitse Swierstra. Published as a functional pearl at the Haskell
--   Workshop 2001.
module Text.ParserCombinators.Parsec.Perm
data PermParser tok st a
permute :: PermParser tok st a -> GenParser tok st a
(<||>) :: PermParser tok st (a -> b) -> GenParser tok st a -> PermParser tok st b
(<$$>) :: (a -> b) -> GenParser tok st a -> PermParser tok st b
(<|?>) :: PermParser tok st (a -> b) -> (a, GenParser tok st a) -> PermParser tok st b
(<$?>) :: (a -> b) -> (a, GenParser tok st a) -> PermParser tok st b
