| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Synopsis | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Documentation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
newtype Parser a | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
alphanum :: Parser Char | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
string :: String -> Parser String | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ident :: Parser String | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nat :: Parser Int | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int :: Parser Int | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
spaces :: Parser () | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
comment :: Parser () | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
junk :: Parser () | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
skip :: Parser a -> Parser a | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
token :: Parser a -> Parser a | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
natural :: Parser Int | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
integer :: Parser Int | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
symbol :: String -> Parser String | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
identifier :: [String] -> Parser String | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Produced by Haddock version 2.1.0 |