Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let rec eval_stmt env s =
- match s with
- | NoOp -> env
- | Seq(s1,s2) ->
- let updated_environment = eval_stmt env s1 in
- let updated_environment2 = eval_stmt updated_environment s2 in
- (* Return updated environment *)
- updated_environment2
- | Declare(d1,s)-> (s, Val_Int 0) :: env
- (* TO DO *)
- | Assign(s,e) -> (s, eval_expr env e)::env
- | If(g,b,e) ->
- let Val_Bool n1 = eval_expr env g in
- if n1 then eval_stmt env b else eval_stmt env e
- | Print(e) -> let v = eval_expr env e in
- match v with
- | Val_Int i -> print_output_int i; env
- | Val_Bool b -> print_output_bool b; env;;
- | While(g,body) -> let v = eval_expr env g in
- match v with
- | Val_Int i -> raise (TypeError)
- | Val_Bool b -> if b then eval_stmt env b else env
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement