Skip to content

Instantly share code, notes, and snippets.

@SilverTab
Created October 11, 2009 17:22
Show Gist options
  • Save SilverTab/207761 to your computer and use it in GitHub Desktop.
Save SilverTab/207761 to your computer and use it in GitHub Desktop.
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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment