-- 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.0 -- | 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 tokenPrimEx -- show nextpos mbnextstate test, recognises tokens when -- test returns Just x (and returns the value -- x). Tokens are shown in error messages using show. -- The position is calculated using nextpos, and finally, -- mbnextstate, can hold a function that updates the user state -- on every token recognised (nice to count tokens :-). The function is -- packed into a Maybe 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 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 -- http://www.cs.uu.nl/people/daan/parsec.html. -- -- Inspired by: -- -- -- -- 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 -- Text.ParserCombinators.Parsec.Token). 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: -- -- Parsing Permutation Phrases, 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