| Copyright | (C) 2016 mniip |
|---|---|
| License | MIT |
| Maintainer | mniip <mniip@mniip.com> |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | Safe |
| Language | Haskell2010 |
Control.Monad.Yoctoparsec
Description
- type Parser b t a = FreeT ((->) t) b a
- token :: Applicative b => Parser b t t
- parseStream :: Monad b => (s -> b (t, s)) -> Parser b t a -> s -> b (a, s)
- parseString :: MonadPlus b => Parser b t a -> [t] -> b (a, [t])
Documentation
type Parser b t a = FreeT ((->) t) b a Source
A Parser b t a is a parser that consumes a stream of t tokens and as a
result yields a value of type a, while operating under the b
non-determinism monad. For most purposes b should be a MonadPlus. Useful
examples include [] if you want backtracking, Maybe if you want no
backtracking, if you want to maintain a state that is
automatically reverted when backtracking, and so on. StateT []hoistFreeT can be used
to change the backtracking monad.
FreeT provides us with instances for Functor, Applicative, Monad,
Alternative and MonadPlus.
token :: Applicative b => Parser b t t Source
A trivial parser that consumes a single token and yields it. Other parsers
can be derived from this one using methods of the aforementioned typeclasses.
For example,
char x = mfilter (== x) token
parseStream :: Monad b => (s -> b (t, s)) -> Parser b t a -> s -> b (a, s) Source
Apply a parser to a stream given a function that obtains the next character from the stream within the same non-determinism monad.
parseString :: MonadPlus b => Parser b t a -> [t] -> b (a, [t]) Source
Parse a string. When the end of the string is encountered, empty is
yielded into the non-determinism monad.