Cabal-2.2.0.1: A framework for packaging Haskell software

Copyright (c) Edward Kmett 2011-2012 BSD3 ekmett@gmail.com experimental non-portable None Haskell2010

Distribution.Compat.Parsing

Contents

Description

Alternative parser combinators.

Originally in parsers package.

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) Source # 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 "}") some :: Alternative f => f a -> f [a] Source # One or more. many :: Alternative f => f a -> f [a] Source # 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. 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. 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. 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