?prevdifflink? - Blame
{-# OPTIONS_GHC -Wall #-} ------------------------------------------------------------------------------- {- | Module : Text.ParserCombinators.Parsec.Utils Description : Useful functions for parsing. Copyright : (c) Paulo Silva License : LGPL Maintainer : paufil@di.uminho.pt Stability : experimental Portability : portable -} ------------------------------------------------------------------------------- module Text.ParserCombinators.Parsec.Utils ( binary, prefix, postfix, wrapper, parseIdentifier, parseConst ) where import Text.ParserCombinators.Parsec import qualified Text.ParserCombinators.Parsec.Token as P import Text.ParserCombinators.Parsec.Expr ------------------------------------------------------------------------------- binary :: P.TokenParser st -> String -> (a -> a -> a) -> Assoc -> Operator Char st a binary lexer name fun assoc = Infix (do {P.reservedOp lexer name; return fun}) assoc ------------------------------------------------------------------------------- prefix :: P.TokenParser st -> String -> (a -> a) -> Operator Char st a prefix lexer name fun = Prefix (do {P.reserved lexer name; return fun}) ------------------------------------------------------------------------------- postfix :: P.TokenParser st -> String -> (a -> a) -> Operator Char st a postfix lexer name fun = Postfix (do {P.reserved lexer name; return fun}) ------------------------------------------------------------------------------- wrapper :: P.TokenParser st -> GenParser Char st t -> GenParser Char st t wrapper lexer prs = do P.whiteSpace lexer t <- prs eof return t ------------------------------------------------------------------------------- parseIdentifier :: P.TokenParser st -> (String -> a) -> GenParser Char st a parseIdentifier lexer fun = do tid <- P.identifier lexer return $ fun tid ------------------------------------------------------------------------------- parseConst :: P.TokenParser st -> String -> a -> GenParser Char st a parseConst lexer name fun = do P.reserved lexer name return fun ------------------------------------------------------------------------------- |