Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
Descriptive
Description
Descriptive parsers.
- consume :: Consumer s d a -> s -> Result (Description d) a
- describe :: Consumer s d a -> s -> Description d
- runConsumer :: Consumer s d a -> s -> (Result (Description d) a, s)
- runDescription :: Consumer s d a -> s -> (Description d, s)
- data Description a
- = Unit !a
- | Bounded !Integer !Bound !(Description a)
- | And !(Description a) !(Description a)
- | Or !(Description a) !(Description a)
- | Sequence [Description a]
- | Wrap a (Description a)
- | None
- data Bound
- data Consumer s d a = Consumer {
- consumerDesc :: s -> (Description d, s)
- consumerParse :: s -> (Result (Description d) a, s)
- data Result e a
- consumer :: (s -> (Description d, s)) -> (s -> (Result (Description d) a, s)) -> Consumer s d a
- wrap :: (s -> (t -> (Description d, t)) -> (Description d, s)) -> (s -> (t -> (Description d, t)) -> (t -> (Result (Description d) a, t)) -> (Result (Description d) b, s)) -> Consumer t d a -> Consumer s d b
- sequencing :: [Consumer d s a] -> Consumer d s [a]
Consuming and describing
Arguments
:: Consumer s d a | The consumer to run. |
-> s | Initial state. |
-> Result (Description d) a |
Run a consumer.
Arguments
:: Consumer s d a | The consumer to run. |
-> s | Initial state. Can be empty if you don't use it for generating descriptions. |
-> Description d | A description and resultant state. |
Describe a consumer.
Lower-level runners
Arguments
:: Consumer s d a | The consumer to run. |
-> s | Initial state. |
-> (Result (Description d) a, s) |
Run a consumer.
Arguments
:: Consumer s d a | The consumer to run. |
-> s | Initial state. Can be empty if you don't use it for generating descriptions. |
-> (Description d, s) | A description and resultant state. |
Describe a consumer.
Types
data Description a Source
Description of a consumable thing.
Constructors
Unit !a | |
Bounded !Integer !Bound !(Description a) | |
And !(Description a) !(Description a) | |
Or !(Description a) !(Description a) | |
Sequence [Description a] | |
Wrap a (Description a) | |
None |
Instances
Eq a => Eq (Description a) | |
Show a => Show (Description a) | |
Monoid (Description d) | |
Monoid a => Monoid (Result (Description d) a) |
The bounds of a many-consumable thing.
Constructors
NaturalBound !Integer | |
UnlimitedBound |
A consumer.
Constructors
Consumer | |
Fields
|
Instances
Alternative (Consumer s d) | |
Functor (Consumer s d) | |
Applicative (Consumer s d) | |
Monoid a => Monoid (Consumer s d a) |
Some result.
Combinators
Arguments
:: (s -> (Description d, s)) | Produce description based on the state. |
-> (s -> (Result (Description d) a, s)) | Parse the state and maybe transform it if desired. |
-> Consumer s d a |
Make a consumer.
Arguments
:: (s -> (t -> (Description d, t)) -> (Description d, s)) | Transformer the description. |
-> (s -> (t -> (Description d, t)) -> (t -> (Result (Description d) a, t)) -> (Result (Description d) b, s)) | Transform the parser. Can re-run the parser if desired. |
-> Consumer t d a | The consumer to transform. |
-> Consumer s d b | A new consumer with a potentially new state type. |
Wrap a consumer with another consumer.
sequencing :: [Consumer d s a] -> Consumer d s [a] Source
Compose contiguous items into one sequence. Similar to sequenceA
.