Subversion

Galculator

?curdirlinks? -

Blame information for rev 20

Line No. Rev Author Line
1 20 paulosilva {-# OPTIONS_GHC -Wall #-}
2  
3 -------------------------------------------------------------------------------
4  
5 {- |
6 Module      :  Text.ParserCombinators.Parsec.Utils
7 Description :  Useful functions for parsing.
8 Copyright   :  (c) Paulo Silva
9 License     :  LGPL
10  
11 Maintainer  :  paufil@di.uminho.pt
12 Stability   :  experimental
13 Portability :  portable
14  
15 -}
16  
17 -------------------------------------------------------------------------------
18  
19 module Text.ParserCombinators.Parsec.Utils (
20   binary,
21   prefix,
22   postfix,
23   wrapper,
24   parseIdentifier,
25   parseConst
26  ) where
27  
28 import Text.ParserCombinators.Parsec
29 import qualified Text.ParserCombinators.Parsec.Token as P
30 import Text.ParserCombinators.Parsec.Expr
31  
32 -------------------------------------------------------------------------------
33  
34 binary :: P.TokenParser st -> String -> (a -> a -> a) -> Assoc -> Operator Char st a
35 binary lexer name fun assoc = Infix (do {P.reservedOp lexer name; return fun}) assoc
36  
37 -------------------------------------------------------------------------------
38  
39 prefix :: P.TokenParser st ->  String -> (a -> a) -> Operator Char st a
40 prefix lexer name fun = Prefix (do {P.reserved lexer name; return fun})
41  
42 -------------------------------------------------------------------------------
43  
44 postfix :: P.TokenParser st ->  String -> (a -> a) -> Operator Char st a
45 postfix lexer name fun = Postfix (do {P.reserved lexer name; return fun})
46  
47 -------------------------------------------------------------------------------
48  
49 wrapper :: P.TokenParser st -> GenParser Char st t -> GenParser Char st t
50 wrapper lexer prs = do
51   P.whiteSpace lexer
52   t <- prs
53   eof
54   return t
55  
56 -------------------------------------------------------------------------------
57  
58 parseIdentifier :: P.TokenParser st -> (String -> a) -> GenParser Char st a
59 parseIdentifier lexer fun = do
60   tid <- P.identifier lexer
61   return $ fun tid
62  
63 -------------------------------------------------------------------------------
64  
65 parseConst :: P.TokenParser st -> String -> a -> GenParser Char st a
66 parseConst lexer name fun = do
67   P.reserved lexer name
68   return fun
69  
70 -------------------------------------------------------------------------------
71  
72  

Theme by Vikram Singh | Powered by WebSVN v2.3.3