cpphs

Safe HaskellSafe-Inferred

Text.ParserCombinators.HuttonMeijer

Description

Copyright : Graham Hutton (University of Nottingham), Erik Meijer (University of Utrecht)

Maintainer : Malcolm Wallace Malcolm.Wallace@cs.york.ac.uk Stability : Stable Portability : All

A LIBRARY OF MONADIC PARSER COMBINATORS

29th July 1996

Graham Hutton Erik Meijer University of Nottingham University of Utrecht

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

The parser monad

Constructors

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

Instances

Monad Parser 
Functor Parser 
MonadPlus Parser 

item :: Parser Token

first :: Parser a -> Parser a

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

(+++) :: Parser a -> Parser a -> Parser a

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

many :: Parser a -> Parser [a]

many1 :: Parser a -> Parser [a]

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

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

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

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

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

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

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

bracket :: Parser a -> Parser b -> Parser c -> Parser b

char :: Char -> Parser Char

digit :: Parser Char

lower :: Parser Char

upper :: Parser Char

letter :: Parser Char

string :: String -> Parser String

ident :: Parser String

nat :: Parser Int

int :: Parser Int

junk :: Parser ()

skip :: Parser a -> Parser a

token :: Parser a -> Parser a

symbol :: String -> Parser String

identifier :: [String] -> Parser String