-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Monadic parsing combinator library with attention to locations -- -- Monadic parsing combinator library with attention to locations. @package text-lips @version 0.1 -- | Monadic parsing combinator library with attention to locations. module Text.Lips -- | Lines of text consumed by a parser (fully or partially). data ParsedLines ParsedLines :: Seq Text -> Maybe Text -> ParsedLines -- | Fully consumed lines [plFull] :: ParsedLines -> Seq Text -- | Partially consumed line [plPartial] :: ParsedLines -> Maybe Text -- | Opaque parser type. data Parser α -- | Parser result. data ParserResult α ParserSuccess :: [Text] -> ParsedLines -> LineCol -> α -> ParserResult α -- | Unparsed input [prLeftovers] :: ParserResult α -> [Text] -- | Parsed input [prLines] :: ParserResult α -> ParsedLines -- | Last location [prLoc] :: ParserResult α -> LineCol -- | Parsed value [prResult] :: ParserResult α -> α ParserFailure :: [Text] -> ParsedLines -> LineCol -> [String] -> String -> ParserResult α -- | Unparsed input [prLeftovers] :: ParserResult α -> [Text] -- | Parsed input [prLines] :: ParserResult α -> ParsedLines -- | Last location [prLoc] :: ParserResult α -> LineCol -- | Error context [prErrCtx] :: ParserResult α -> [String] -- | Error message [prErrMsg] :: ParserResult α -> String -- | Parser continuation. data ParserStep α ParserCont :: (Text -> ParserStep α) -> (ParserResult α) -> ParserStep α ParserDone :: (ParserResult α) -> ParserStep α -- | Start a parser. startParser :: Parser α -> ParserStep α -- | Start a parser on a specific line number and provide it with a first -- chunk of the input. startParserAtLine :: Word -> Text -> Parser α -> ParserStep α -- | Feed a parser continuation with empty input. starveParser :: ParserStep α -> ParserResult α -- | Run a parser on a text. parseText :: Text -> Parser α -> ParserResult α -- | Parsers that provide location information. class CharParsing p => LocParsing p where type ParserLoc p location = lift location where { type family ParserLoc p; } -- | The current location. location :: LocParsing p => p (ParserLoc p) -- | The current location. location :: (LocParsing p, MonadTrans t, Monad p) => t p (ParserLoc p) -- | Attach the starting location to the parsed value. located :: LocParsing p => p α -> p (Located (ParserLoc p) α) -- | Attach the spanned location to the parsed value. spanned :: LocParsing p => p α -> p (Located (Span (ParserLoc p)) α) -- | Parsers with resettable line numbers. class LocParsing p => ResetLineParsing p where resetLineNr = lift . resetLineNr -- | Reset the current line number and return the text lines fully consumed -- by the parser so far. resetLineNr :: ResetLineParsing p => Word -> p (Seq Text) -- | Reset the current line number and return the text lines fully consumed -- by the parser so far. resetLineNr :: (ResetLineParsing p, MonadTrans t, Monad p) => Word -> t p (Seq Text) instance GHC.Show.Show α => GHC.Show.Show (Text.Lips.ParserResult α) instance GHC.Show.Show Text.Lips.ParsedLines instance GHC.Base.Functor Text.Lips.Parser instance GHC.Base.Applicative Text.Lips.Parser instance GHC.Base.Alternative Text.Lips.Parser instance GHC.Base.Monad Text.Lips.Parser instance GHC.Base.MonadPlus Text.Lips.Parser instance Text.Parser.Combinators.Parsing Text.Lips.Parser instance Text.Parser.Char.CharParsing Text.Lips.Parser instance α ~ GHC.Base.String => Data.String.IsString (Text.Lips.Parser α) instance Text.Lips.LocParsing Text.Lips.Parser instance Text.Lips.ResetLineParsing Text.Lips.Parser instance (GHC.Base.MonadPlus p, Text.Lips.LocParsing p) => Text.Lips.LocParsing (Control.Monad.Trans.Identity.IdentityT p) instance (GHC.Base.MonadPlus p, Text.Lips.ResetLineParsing p) => Text.Lips.ResetLineParsing (Control.Monad.Trans.Identity.IdentityT p) instance (GHC.Base.MonadPlus p, Text.Lips.LocParsing p) => Text.Lips.LocParsing (Control.Monad.Trans.Reader.ReaderT r p) instance (GHC.Base.MonadPlus p, Text.Lips.ResetLineParsing p) => Text.Lips.ResetLineParsing (Control.Monad.Trans.Reader.ReaderT r p) instance (GHC.Base.Monoid w, GHC.Base.MonadPlus p, Text.Lips.LocParsing p) => Text.Lips.LocParsing (Control.Monad.Trans.Writer.Lazy.WriterT w p) instance (GHC.Base.Monoid w, GHC.Base.MonadPlus p, Text.Lips.ResetLineParsing p) => Text.Lips.ResetLineParsing (Control.Monad.Trans.Writer.Lazy.WriterT w p) instance (GHC.Base.Monoid w, GHC.Base.MonadPlus p, Text.Lips.LocParsing p) => Text.Lips.LocParsing (Control.Monad.Trans.Writer.Strict.WriterT w p) instance (GHC.Base.Monoid w, GHC.Base.MonadPlus p, Text.Lips.ResetLineParsing p) => Text.Lips.ResetLineParsing (Control.Monad.Trans.Writer.Strict.WriterT w p) instance (GHC.Base.MonadPlus p, Text.Lips.LocParsing p) => Text.Lips.LocParsing (Control.Monad.Trans.State.Lazy.StateT s p) instance (GHC.Base.MonadPlus p, Text.Lips.ResetLineParsing p) => Text.Lips.ResetLineParsing (Control.Monad.Trans.State.Lazy.StateT s p) instance (GHC.Base.MonadPlus p, Text.Lips.LocParsing p) => Text.Lips.LocParsing (Control.Monad.Trans.State.Strict.StateT s p) instance (GHC.Base.MonadPlus p, Text.Lips.ResetLineParsing p) => Text.Lips.ResetLineParsing (Control.Monad.Trans.State.Strict.StateT s p) instance (GHC.Base.Monoid w, GHC.Base.MonadPlus p, Text.Lips.LocParsing p) => Text.Lips.LocParsing (Control.Monad.Trans.RWS.Lazy.RWST r w s p) instance (GHC.Base.Monoid w, GHC.Base.MonadPlus p, Text.Lips.ResetLineParsing p) => Text.Lips.ResetLineParsing (Control.Monad.Trans.RWS.Lazy.RWST r w s p) instance (GHC.Base.Monoid w, GHC.Base.MonadPlus p, Text.Lips.LocParsing p) => Text.Lips.LocParsing (Control.Monad.Trans.RWS.Strict.RWST r w s p) instance (GHC.Base.Monoid w, GHC.Base.MonadPlus p, Text.Lips.ResetLineParsing p) => Text.Lips.ResetLineParsing (Control.Monad.Trans.RWS.Strict.RWST r w s p)