Subversion

Galculator

?curdirlinks? - Rev 20

?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

-------------------------------------------------------------------------------


 

Theme by Vikram Singh | Powered by WebSVN v2.3.3