polyparse-1.8: A variety of alternative parser combinator libraries.

PortabilityAll A LIBRARY OF MONADIC PARSER COMBINATORS 29th July 1996 Graham Hutton Erik Meijer University of Nottingham University of Utrecht
StabilityStable
MaintainerMalcolm Wallace <Malcolm.Wallace@cs.york.ac.uk>
Safe HaskellSafe-Infered

Text.ParserCombinators.HuttonMeijer

Description

This Haskell script defines a library of parser combinators, and is taken from sections 1-6 of our article Monadic Parser Combinators. Some changes to the library have been made in the move from Gofer to Haskell:

  • Do notation is used in place of monad comprehension notation;
  • The parser datatype is defined using newtype, to avoid the overhead of tagging and untagging parsers with the P constructor.

Synopsis

Documentation

newtype Parser a Source

The parser monad

Constructors

P ([Token] -> [(a, [Token])]) 

papply :: Parser a -> [Token] -> [(a, [Token])]Source

sat :: (Token -> Bool) -> Parser TokenSource

sepby :: Parser a -> Parser b -> Parser [a]Source

sepby1 :: Parser a -> Parser b -> Parser [a]Source

chainl :: Parser a -> Parser (a -> a -> a) -> a -> Parser aSource

chainl1 :: Parser a -> Parser (a -> a -> a) -> Parser aSource

chainr :: Parser a -> Parser (a -> a -> a) -> a -> Parser aSource

chainr1 :: Parser a -> Parser (a -> a -> a) -> Parser aSource

ops :: [(Parser a, b)] -> Parser bSource