Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --After really struggling alot I just mostly followed what is described in the lecture slides.
- parseExpr :: [String] -> (Ast, [String])
- --parseExpr [] = (Var "Syntax error", [])
- parseExpr [] = error "Not a valid expression"
- parseExpr ("+":rs) = let (e1, r1) = parseExpr rs
- (e2, r2) = parseExpr r1 in (Sum e1 e2, r2)
- parseExpr ("*":rs) = let (e1, r1) = parseExpr rs
- (e2, r2) = parseExpr r1 in (Mult e1 e2, r2)
- parseExpr ("-":rs) = let (e1, r1) = parseExpr rs
- (e2, r2) = parseExpr r1 in (Min e1 e2, r2)
- --Changed to guards.
- parseExpr (s:rs)
- | (onlyDigits s) = (Tall (read s :: Int), rs)
- | otherwise = error ("Syntax error at: " ++ s)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement