parsers-0.12.9: Parsing combinators

Text.Parser.Combinators

Contents

Description

Alternative parser combinators

Synopsis

# Parsing Combinators

choice :: Alternative m => [m a] -> m a Source #

choice ps tries to apply the parsers in the list ps in order, until one of them succeeds. Returns the value of the succeeding parser.

option :: Alternative m => a -> m a -> m a Source #

option x p tries to apply parser p. If p fails without consuming input, it returns the value x, otherwise the value returned by p.

 priority = option 0 (digitToInt <$> digit) optional :: Alternative f => f a -> f (Maybe a) # One or none. skipOptional :: Alternative m => m a -> m () Source # skipOptional p tries to apply parser p. It will parse p or nothing. It only fails if p fails after consuming input. It discards the result of p. (Plays the role of parsec's optional, which conflicts with Applicative's optional) between :: Applicative m => m bra -> m ket -> m a -> m a Source # between open close p parses open, followed by p and close. Returns the value returned by p.  braces = between (symbol "{") (symbol "}") surroundedBy :: Applicative m => m a -> m sur -> m a Source # p surroundedBy f is p surrounded by f. Shortcut for between f f p. As in between, returns the value returned by p. some :: Alternative f => f a -> f [a] # One or more. many :: Alternative f => f a -> f [a] # Zero or more. sepBy :: Alternative m => m a -> m sep -> m [a] Source # sepBy p sep parses zero or more occurrences of p, separated by sep. Returns a list of values returned by p.  commaSep p = p sepBy (symbol ",") sepBy1 :: Alternative m => m a -> m sep -> m [a] Source # sepBy1 p sep parses one or more occurrences of p, separated by sep. Returns a list of values returned by p. sepByNonEmpty :: Alternative m => m a -> m sep -> m (NonEmpty a) Source # sepByNonEmpty p sep parses one or more occurrences of p, separated by sep. Returns a non-empty list of values returned by p. sepEndBy1 :: Alternative m => m a -> m sep -> m [a] Source # sepEndBy1 p sep parses one or more occurrences of p, separated and optionally ended by sep. Returns a list of values returned by p. sepEndByNonEmpty :: Alternative m => m a -> m sep -> m (NonEmpty a) Source # sepEndByNonEmpty p sep parses one or more occurrences of p, separated and optionally ended by sep. Returns a non-empty list of values returned by p. sepEndBy :: Alternative m => m a -> m sep -> m [a] Source # sepEndBy p sep parses zero or more occurrences of p, separated and optionally ended by sep, ie. haskell style statements. Returns a list of values returned by p.  haskellStatements = haskellStatement sepEndBy semi endBy1 :: Alternative m => m a -> m sep -> m [a] Source # endBy1 p sep parses one or more occurrences of p, separated and ended by sep. Returns a list of values returned by p. endByNonEmpty :: Alternative m => m a -> m sep -> m (NonEmpty a) Source # endByNonEmpty p sep parses one or more occurrences of p, separated and ended by sep. Returns a non-empty list of values returned by p. endBy :: Alternative m => m a -> m sep -> m [a] Source # endBy p sep parses zero or more occurrences of p, separated and ended by sep. Returns a list of values returned by p.  cStatements = cStatement endBy semi count :: Applicative m => Int -> m a -> m [a] Source # count n p parses n occurrences of p. If n is smaller or equal to zero, the parser equals to return []. Returns a list of n values returned by p. chainl :: Alternative m => m a -> m (a -> a -> a) -> a -> m a Source # chainl p op x parses zero or more occurrences of p, separated by op. Returns a value obtained by a left associative application of all functions returned by op to the values returned by p. If there are zero occurrences of p, the value x is returned. chainr :: Alternative m => m a -> m (a -> a -> a) -> a -> m a Source # chainr p op x parses zero or more occurrences of p, separated by op Returns a value obtained by a right associative application of all functions returned by op to the values returned by p. If there are no occurrences of p, the value x is returned. chainl1 :: Alternative m => m a -> m (a -> a -> a) -> m a Source # chainl1 p op x parses one or more occurrences of p, separated by op Returns a value obtained by a left associative application of all functions returned by op to the values returned by p. . This parser can for example be used to eliminate left recursion which typically occurs in expression grammars.  expr = term chainl1 addop term = factor chainl1 mulop factor = parens expr <|> integer mulop = (*) <$ symbol "*"
<|> div <$symbol "/" addop = (+) <$ symbol "+"
Instances