Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Text.Parsec
- data Term = Plus Term Term
- | Minus Term Term
- | Div Term Term
- | Mult Term Term
- | Number Integer
- deriving (Show)
- type TermParser a = Parsec String () a
- opParser :: TermParser (Term -> Term -> Term)
- opParser = choice [ char '+' >> return Plus
- , char '-' >> return Minus
- , char '/' >> return Div
- , char '*' >> return Mult ]
- numberParser :: TermParser Term
- numberParser = Number . (read :: String -> Integer) <$> many1 digit
- termParser :: TermParser Term
- termParser = chainl1 numberParser opParser
- -- > runParser termParser () "" "231+4321*434"
- -- Right (Mult (Plus (Number 231) (Number 4321)) (Number 434))
Add Comment
Please, Sign In to add comment