module Expr1Simple where import UU_Parsing instance Symbol Char pDigit = (\d -> ord d - ord '0') <$> pAnyOf ['0'..'9'] pNat = foldl (\a b -> a*10 + b) 0 <$> pSome pDigit pParens = pPacked (pSym '(') (pSym ')') pFact = pNat <|> pParens pExpr pTerm = pChainl ( (*) <$ pSym '*' <|> div <$ pSym '/' ) pFact pExpr = pChainl ( (+) <$ pSym '+' <|> (-) <$ pSym '-' ) pTerm t p inp = let (r, rest, errors) = parse p null inp in do putStr (show r) putStr (show errors) t1 = t pExpr "3*4-6" t2 = t pExpr "3**4-6" main :: IO () main = do putStr "Enter expression: " inp <- getLine let (r, rest, errors) = parse pExpr null inp putStr (show r) putStr (show errors) main