SilverTab (owner)

Revisions

gist: 207761 Download_button fork
public
Public Clone URL: git://gist.github.com/207761.git
Embed All Files: show embed
Haskell #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import ParsecExpr
 
expr :: Parser Integer
expr = buildExpressionParser table factor
        <?> "expression"
 
table = [[op "*" (*) AssocLeft, op "/" div AssocLeft]
          ,[op "+" (+) AssocLeft, op "-" (-) AssocLeft]
          ]
        where
          op s f assoc
             = Infix (do{ string s; return f}) assoc
 
factor = do{ char '('
            ; x <- expr
            ; char ')'
            ; return x
            }
        <|> number
        <?> "simple expression"
 
number :: Parser Integer
number = do{ ds <- many1 digit
            ; return (read ds)
            }
        <?> "number"