Advertisement
Guest User

Untitled

a guest
Mar 10th, 2017
516
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. let rec eval_stmt env s =
  2.  
  3. match s with
  4.  
  5. | NoOp -> env
  6.  
  7. | Seq(s1,s2) ->
  8. let updated_environment = eval_stmt env s1 in
  9. let updated_environment2 = eval_stmt updated_environment s2 in
  10. (* Return updated environment *)
  11. updated_environment2
  12.  
  13.  
  14. | Declare(d1,s)-> (s, Val_Int 0) :: env
  15. (* TO DO *)
  16.  
  17. | Assign(s,e) -> (s, eval_expr env e)::env
  18.  
  19. | If(g,b,e) ->
  20.  
  21. let Val_Bool n1 = eval_expr env g in
  22.  
  23. if n1 then eval_stmt env b else eval_stmt env e
  24.  
  25. | Print(e) -> let v = eval_expr env e in
  26. match v with
  27. | Val_Int i -> print_output_int i; env
  28. | Val_Bool b -> print_output_bool b; env;;
  29.  
  30. | While(g,body) -> let v = eval_expr env g in
  31. match v with
  32. | Val_Int i -> raise (TypeError)
  33. | Val_Bool b -> if b then eval_stmt env b else env
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement