packages feed

comparse-0.1.0.0: Control/Monad/Parser.hs

module Control.Monad.Parser
  ( module Control.Monad.Parser.Class,
    ParserT (..),
    ParseResult (..),
    ParseError (..),
    ErrorDesc (..),
    Parser,
    StringParser,
    runParser,
    runStringParser,
  )
where

import Control.Monad.Identity
import Control.Monad.Parser.Class
import Control.Monad.Trans.Parser
import Data.Stream.StringLines (StringLines)
import qualified Data.Stream.StringLines as StringLines

type Parser s a = ParserT s Identity a

runParser :: Parser s a -> s -> ParseResult a s
runParser p = runIdentity . runParserT p

type StringParser a = Parser StringLines a

runStringParser :: StringParser a -> String -> ParseResult a StringLines
runStringParser p s = runIdentity $ runParserT p $ StringLines.fromString s