HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulepolyparse-1.13Haskell98

Text.ParserCombinators.Poly.StateParser

This module contains the definitions for a generic parser, with running state. These are the parts that are shared between the State and StateLazy variations. Do not import this module directly, but only via T.P.Poly.State or T.P.Poly.StateLazy.

  • 2 types
  • 8 values
  • Packagepolyparse-1.13
  • Exports10
  • LanguageHaskell98
  • LicenceLicenseRef-LGPL
  • SourceStateParser.hs

The Parser datatype

2 declarations
newtypenewtype Parser s t a
#

This Parser datatype is a fairly generic parsing monad with error reporting, and running state. It can be used for arbitrary token types, not just String input. (If you do not require a running state, use module Poly.Plain instead)

Constructors

Instances7Monad, Functor, MonadFail, Applicative, Alternative, Commitment, …
  • Monad (Parser s t)Defined in polyparse-1.13 · Text.ParserCombinators.Poly.StateParser
  • Functor (Parser s t)Defined in polyparse-1.13 · Text.ParserCombinators.Poly.StateParser
  • MonadFail (Parser s t)Defined in polyparse-1.13 · Text.ParserCombinators.Poly.StateParser
  • Applicative (Parser s t)Defined in polyparse-1.13 · Text.ParserCombinators.Poly.StateParser
  • Alternative (Parser s t)Defined in polyparse-1.13 · Text.ParserCombinators.Poly.StateParser
  • Commitment (Parser s t)Defined in polyparse-1.13 · Text.ParserCombinators.Poly.StateParser
  • PolyParse (Parser s t)Defined in polyparse-1.13 · Text.ParserCombinators.Poly.StateParser
datadata Result z a
#

A return type like Either, that distinguishes not only between right and wrong answers, but also has commitment, so that a failure cannot be undone. This should only be used for writing very primitive parsers - really it is an internal detail of the library. The z type is the remaining unconsumed input.

Constructors

Instances1Functor
  • Functor (Result z)Defined in polyparse-1.13 · Text.ParserCombinators.Poly.Result

basic parsers

valuenext :: Parser s t t
#

Simply return the next token in the input tokenstream.

valueeof :: Parser s t ()
#

Succeed if the end of file/input has been reached, fail otherwise.

valuesatisfy :: (t -> Bool) -> Parser s t t
#

Return the next token if it satisfies the given predicate.

valueonFail :: Parser s t a -> Parser s t a -> Parser s t a
#

p onFail q means parse p, unless p fails, in which case parse q instead. Can be chained together to give multiple attempts to parse something. (Note that q could itself be a failing parser, e.g. to change the error message from that defined in p to something different.) However, a severe failure in p cannot be ignored.

State-handling

valuestQuery :: (s -> a) -> Parser s t a
#

Query the internal state.

valuestGet :: Parser s t s
#

Deliver the entire internal state.

re-parsing

valuereparse :: [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.