open Domains;;
open Interpreter;;

let parse () =
  Trivialml_lexer.parse_stdin ();;

let e_as_string =
  "soit x : entier = 2 + 2 dans x";;

(*
let e = 
  ESoit("x",
        TEntier,
        EOperation(ELitteral(LEntier 2),
                   OPlus,
                   ELitteral(LEntier 2)),
        EVariable "x");;
*)

let p =
  parse ();;

Printf.printf "Type checking...\n";;
Type_checking.type_check_program p Environment.empty;;
Printf.printf "Type checking passed\n\n";;

Printf.printf "Executing...\n";;
let v =
  eval_program p Environment.empty;;
Printf.printf "The result is %s\n\n" (string_of_value v);;

Printf.printf "Success\n";;
