import RefactoredParser -- the expression datatype data Expr = Num Int | Add Expr Expr | Mul Expr Expr deriving ( Show, Eq ) num, expr, term, factor :: Parser Expr num = pmap Num number expr = chain term '+' Add term = chain factor '*' Mul factor = char '(' >-> expr <-< char ')' +++ num readExpr :: String -> Maybe Expr readExpr = topLevel expr