Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let rec eval (vtab : SymTab) (e : EXP) : VALUE =
- let apply op n m =
- match (eval vtab n, eval vtab m) with
- | (INT a, INT b) -> INT (op a b)
- match e with
- | CONSTANT v -> v
- | VARIABLE v -> lookup v vtab
- | ADD (n, m) -> apply (+) n m
- | MULTIPLY (n, m) -> apply (*) n m
- | SUBTRACT (n, m) -> apply (-) n m
- | DIVIDE (n, m) -> apply (/) n m
- | LET_IN (var, e', e) ->
- let vtab = bind var (eval vtab e') vtab
- eval vtab e
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement