-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A highly generic parser combinators library. -- -- Please see the README on GitHub at -- https://github.com/nasso/comparse#readme @package comparse @version 0.2.0.0 module Data.Stream class Ord (Pos s) => Stream s where { type family Item s :: Type; type family Pos s :: Type; } next :: Stream s => s -> Maybe (Item s, s) getPos :: Stream s => s -> Pos s module Control.Monad.Parser.Class -- | A monad with parsing capabilities. class (Monad m, Stream (Input m)) => MonadParser m where { type family Input m :: Type; } -- | The current input stream. parseStream :: MonadParser m => m (Input m) -- | Replace the input stream. setParseStream :: MonadParser m => Input m -> m () -- | A parser that always fails. noParse :: MonadParser m => m a -- | A parser that returns the next item. item :: MonadParser m => m (Item (Input m)) -- | followedBy p is a parser that succeeds if p -- succeeds, but it does not consume any input. followedBy :: MonadParser m => m a -> m () -- | notFollowedBy p is a parser that only succeeds if p -- fails. This parser will not consume any input. notFollowedBy :: MonadParser m => m a -> m () -- | try p is a parser that does everything like p, -- except it forcefully resets the position of any error reported by -- p to the current position. try :: MonadParser m => m a -> m a -- | p | q is a parser that is equivalent to p -- when p succeeds and q when p fails to parse -- anything. (<|>) :: MonadParser m => m a -> m a -> m a -- | p ? msg is a parser that behaves like p, but -- when p fails, it reports an error indicating that -- msg was the expected input. () :: MonadParser m => m a -> String -> m a infixl 1 infixl 3 <|> -- | Parser that succeeds if the stream is empty. Does not consume any -- items. eof :: MonadParser m => m () -- | Fail with an "expected" message. expected :: MonadParser m => String -> m a -- | Succeeds only if the value parsed by the parser satisfies the -- predicate. satisfy :: MonadParser m => m a -> (a -> Bool) -> m a -- | Parse a single item satisfying the given predicate. match :: MonadParser m => (Item (Input m) -> Bool) -> m (Item (Input m)) -- | Make a parser optional. optional :: MonadParser m => m a -> m (Maybe a) -- | Try a series of parsers in order, returning the first one that -- succeeds. choice :: MonadParser m => [m a] -> m a -- | Try to run the given parser as many times as possible. many :: MonadParser m => m a -> m [a] -- | Try to run the given parser as many times as possible, but at least -- once. The result is returned as a regular list, but is guaranteed to -- be non-empty. many1 :: MonadParser m => m a -> m [a] -- | Try to run the given parser as many times as possible, but at least -- once. some :: MonadParser m => m a -> m (NonEmpty a) -- | Parse a non-empty series of a separated by bs -- (without a trailing b). sepBy1 :: MonadParser m => m a -> m b -> m (NonEmpty a) -- | Parse a potentially empty series of a separated by -- bs (without a trailing b). sepBy :: MonadParser m => m a -> m b -> m [a] -- | Parse any value equal to a. like :: (MonadParser m, Eq (Item (Input m)), Show (Item (Input m))) => Item (Input m) -> m (Item (Input m)) -- | Parse any value not equal to a. unlike :: (MonadParser m, Eq (Item (Input m)), Show (Item (Input m))) => Item (Input m) -> m (Item (Input m)) -- | Parse a continuous sequence of items equal to the given one. string :: (MonadParser m, Eq (Item (Input m)), Show (Item (Input m))) => [Item (Input m)] -> m [Item (Input m)] -- | Parse any value equal to at least one element of the given list. oneOf :: (MonadParser m, Eq (Item (Input m)), Show (Item (Input m))) => [Item (Input m)] -> m (Item (Input m)) -- | Parse any value not equivalent to any element of the given list. For a -- version that accepts non-Show items, see noneOf'. noneOf :: (MonadParser m, Eq (Item (Input m)), Show (Item (Input m))) => [Item (Input m)] -> m (Item (Input m)) -- | chainl1 p op Parse a chain of *one* or more occurrences of -- p, separated by op. Return a value obtained by a -- left associative application of all functions returned by op -- to the values returned by p. -- -- This is particularly useful for parsing left associative infix -- operators. chainl1 :: MonadParser m => m a -> m (a -> a -> a) -> m a -- | chainr1 p op Parse a chain of *one* or more occurrences of -- p, separated by op. Return a value obtained by a -- right associative application of all functions returned by op -- to the values returned by p. -- -- This is particularly useful for parsing right associative infix -- operators. chainr1 :: MonadParser m => m a -> m (a -> a -> a) -> m a -- | Run a parser on a different stream of items. withInput :: MonadParser m => Input m -> m a -> m (a, Input m) module Control.Monad.Trans.Parser -- | Parser monad transformer. newtype ParserT s m a ParserT :: (s -> m (ParseResult a s)) -> ParserT s m a [runParserT] :: ParserT s m a -> s -> m (ParseResult a s) data ParseResult v s Parsed :: v -> s -> ParseError (Pos s) -> ParseResult v s NoParse :: ParseError (Pos s) -> ParseResult v s data ParseError p ParseError :: p -> [ErrorDesc] -> ParseError p data ErrorDesc Expected :: String -> ErrorDesc Note :: String -> ErrorDesc instance GHC.Classes.Eq Control.Monad.Trans.Parser.ErrorDesc instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Trans.Parser.ParserT s m) instance (Data.Stream.Stream s, GHC.Base.Applicative m, GHC.Base.Monad m) => GHC.Base.Applicative (Control.Monad.Trans.Parser.ParserT s m) instance (Data.Stream.Stream s, GHC.Base.Monad m) => GHC.Base.Monad (Control.Monad.Trans.Parser.ParserT s m) instance (GHC.Base.Applicative m, GHC.Base.Monad m, Data.Stream.Stream s) => Control.Monad.Fail.MonadFail (Control.Monad.Trans.Parser.ParserT s m) instance (GHC.Base.Monad m, Data.Stream.Stream s) => Control.Monad.Parser.Class.MonadParser (Control.Monad.Trans.Parser.ParserT s m) instance Data.Stream.Stream s => Control.Monad.Trans.Class.MonadTrans (Control.Monad.Trans.Parser.ParserT s) instance (Data.Stream.Stream s, Control.Monad.IO.Class.MonadIO m) => Control.Monad.IO.Class.MonadIO (Control.Monad.Trans.Parser.ParserT s m) instance (Data.Stream.Stream s, Control.Monad.State.Class.MonadState s' m) => Control.Monad.State.Class.MonadState s' (Control.Monad.Trans.Parser.ParserT s m) instance (Data.Stream.Stream s, Control.Monad.Error.Class.MonadError e m) => Control.Monad.Error.Class.MonadError e (Control.Monad.Trans.Parser.ParserT s m) instance (Data.Stream.Stream s, Control.Monad.Reader.Class.MonadReader r m) => Control.Monad.Reader.Class.MonadReader r (Control.Monad.Trans.Parser.ParserT s m) instance (Data.Stream.Stream s, Control.Monad.Cont.Class.MonadCont m) => Control.Monad.Cont.Class.MonadCont (Control.Monad.Trans.Parser.ParserT s m) instance (GHC.Show.Show v, GHC.Show.Show (Data.Stream.Pos s)) => GHC.Show.Show (Control.Monad.Trans.Parser.ParseResult v s) instance GHC.Show.Show p => GHC.Show.Show (Control.Monad.Trans.Parser.ParseError p) module Data.Stream.StringLines data StringPos StringPos :: Int -> Int -> String -> StringPos data StringLines StringLines :: String -> StringPos -> StringLines fromString :: String -> StringLines instance GHC.Show.Show Data.Stream.StringLines.StringLines instance GHC.Classes.Eq Data.Stream.StringLines.StringLines instance Data.Stream.Stream Data.Stream.StringLines.StringLines instance GHC.Show.Show Data.Stream.StringLines.StringPos instance GHC.Classes.Eq Data.Stream.StringLines.StringPos instance GHC.Classes.Ord Data.Stream.StringLines.StringPos module Data.Stream.TextLines data TextPos TextPos :: Int -> Int -> Vector Text -> TextPos data TextLines TextLines :: Text -> TextPos -> TextLines fromText :: Text -> TextLines instance GHC.Show.Show Data.Stream.TextLines.TextLines instance GHC.Classes.Eq Data.Stream.TextLines.TextLines instance Data.Stream.Stream Data.Stream.TextLines.TextLines instance GHC.Show.Show Data.Stream.TextLines.TextPos instance GHC.Classes.Eq Data.Stream.TextLines.TextPos instance GHC.Classes.Ord Data.Stream.TextLines.TextPos module Control.Monad.Parser -- | Parser monad transformer. newtype ParserT s m a ParserT :: (s -> m (ParseResult a s)) -> ParserT s m a [runParserT] :: ParserT s m a -> s -> m (ParseResult a s) data ParseResult v s Parsed :: v -> s -> ParseError (Pos s) -> ParseResult v s NoParse :: ParseError (Pos s) -> ParseResult v s data ParseError p ParseError :: p -> [ErrorDesc] -> ParseError p data ErrorDesc Expected :: String -> ErrorDesc Note :: String -> ErrorDesc type Parser s a = ParserT s Identity a type StringParser a = Parser StringLines a type ParserOf i p = (MonadParser p, Item (Input p) ~ i) type CharParser p = ParserOf Char p runParser :: Parser s a -> s -> ParseResult a s runStringParser :: StringParser a -> String -> ParseResult a StringLines runTextParser :: TextParser a -> Text -> ParseResult a TextLines