 | polyparse-1.3: A variety of alternative parser combinator libraries. | Contents | Index |
|
Text.ParserCombinators.Poly.State |
|
|
|
|
|
Synopsis |
|
|
|
|
The Parser datatype
|
|
newtype Parser s t a |
This Parser datatype is a fairly generic parsing monad with error
reporting. It can be used for arbitrary token types, not just
String input. (If you require a running state, use module PolyState
instead)
| Constructors | P (s -> [t] -> Result [t] s a) | |
| Instances | |
|
|
data Result z s a |
A return type like Either, that distinguishes not only between
right and wrong answers, but also has gradations of wrongness.
This should only be used for writing very primitive
parsers - really it is an internal detail of the library.
| Constructors | | Instances | |
|
|
runParser :: Parser s t a -> s -> [t] -> (Either String a, s, [t]) |
Apply a parser to an input token sequence.
|
|
basic parsers
|
|
next :: Parser s t t |
|
satisfy :: (t -> Bool) -> Parser s t t |
|
State-handling
|
|
stUpdate :: (s -> s) -> Parser s t () |
Update the internal state.
|
|
stQuery :: (s -> a) -> Parser s t a |
Query the internal state.
|
|
stGet :: Parser s t s |
Deliver the entire internal state.
|
|
re-parsing
|
|
reparse :: [t] -> Parser s t () |
Push some tokens back onto the front of the input stream and reparse.
This is useful e.g. for recursively expanding macros. When the
user-parser recognises a macro use, it can lookup the macro
expansion from the parse state, lex it, and then stuff the
lexed expansion back down into the parser.
|
|
Re-export all more general combinators
|
|
module Text.ParserCombinators.Poly.Base |
|
Produced by Haddock version 2.5.0 |