44 lines
1.2 KiB
OCaml
44 lines
1.2 KiB
OCaml
open Expr
|
|
|
|
let affiche_val v = match v with
|
|
| VInt k -> print_int k
|
|
| VBool b -> print_string (if b then "Vrai" else "Faux")
|
|
|
|
|
|
(* fonction d'affichage *)
|
|
let rec affiche_expr e =
|
|
let aff_aux s a b =
|
|
begin
|
|
print_string s;
|
|
affiche_expr a;
|
|
print_string ", ";
|
|
affiche_expr b;
|
|
print_string ")"
|
|
end
|
|
in
|
|
match e with
|
|
| Const k -> print_int k
|
|
| BConst b -> affiche_val (VBool b)
|
|
| Add(e1,e2) -> aff_aux "Add(" e1 e2
|
|
| Mul(e1,e2) -> aff_aux "Mul(" e1 e2
|
|
| Min(e1,e2) -> aff_aux "Min(" e1 e2
|
|
| Eq(e1,e2) -> aff_aux "Eq(" e1 e2
|
|
| Gt(e1,e2) -> aff_aux "Gt(" e1 e2
|
|
| Lt(e1,e2) -> aff_aux "Lt(" e1 e2
|
|
| Gte(e1,e2) -> aff_aux "Gte(" e1 e2
|
|
| Lte(e1,e2) -> aff_aux "Lte(" e1 e2
|
|
| Band(e1,e2) -> aff_aux "BooleanAnd(" e1 e2
|
|
| Bor(e1,e2) -> aff_aux "BooleanOr(" e1 e2
|
|
| ITE(ec,e1,e2) ->
|
|
begin print_string "IF(";
|
|
affiche_expr ec;
|
|
print_string ", ";
|
|
affiche_expr e1;
|
|
print_string ", ";
|
|
affiche_expr e2;
|
|
print_string ")"
|
|
end
|
|
| PrInt(e1) -> print_string "PrInt(";affiche_expr e1;print_string ")"
|
|
| Var(x) -> print_string "Var(";print_string x;print_string ")"
|
|
| LetIn(x,e0,e1) -> print_string "LetIn(";print_string x;print_string ",";affiche_expr e0;print_string ",";affiche_expr e1;print_string ")"
|