summaryrefslogtreecommitdiff
path: root/lec05
diff options
context:
space:
mode:
Diffstat (limited to 'lec05')
-rw-r--r--lec05/Calc.hs8
1 files changed, 8 insertions, 0 deletions
diff --git a/lec05/Calc.hs b/lec05/Calc.hs
index 8051d76..cd6f408 100644
--- a/lec05/Calc.hs
+++ b/lec05/Calc.hs
@@ -1,6 +1,7 @@
module Calc where
import ExprT
+import Parser
-- Exercise 1
@@ -8,3 +9,10 @@ eval :: ExprT -> Integer
eval (Lit n) = n
eval (Add l r) = eval l + eval r
eval (Mul l r) = eval l * eval r
+
+-- Exercise 2
+
+evalStr :: String -> Maybe Integer
+evalStr s = case parseExp Lit Add Mul s of
+ Nothing -> Nothing
+ Just t -> Just (eval t)