diff --git a/affichage.ml b/affichage.ml index 16e32db..493f5d3 100644 --- a/affichage.ml +++ b/affichage.ml @@ -1,21 +1,14 @@ open Expr (* 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 - | Add(e1,e2) -> aff_aux "Add(" e1 e2 - | Mul(e1,e2) -> aff_aux "Mul(" e1 e2 - | Min(e1,e2) -> aff_aux "Min(" e1 e2 +let rec string_of_expr = function + Fun ((s, t), e) -> "fun ("^s^":"^t^") => "^(string_of_expr e) + | App (e1, e2) -> "("^(string_of_expr e1)^") "^(string_of_expr e2) + | Var (s) -> s + | Exf (e, s) -> "exf("^(string_of_expr e)^":"^s^")" + +let print_expr e = + print_string (string_of_expr e) let affiche_val v = print_string "TODO" diff --git a/lexer.mll b/lexer.mll index bb8468f..8d05184 100644 --- a/lexer.mll +++ b/lexer.mll @@ -20,7 +20,7 @@ rule token = parse | '0' { BOTTOM } | '(' { LPAREN } | ')' { RPAREN } - | "FUN" { FUN } + | "fun" { FUN } | ':' { COLON } | "=>" { ARR } | "exf" { EXFALSO } diff --git a/main.ml b/main.ml index df9ea64..f2d1bc5 100644 --- a/main.ml +++ b/main.ml @@ -1,10 +1,11 @@ open Expr +open Affichage let interpret e = begin - affiche_expr e; + print_expr e; print_newline(); - print_int (eval e); + (*print_int (eval e);*) print_newline() end diff --git a/tests/basic.ml b/tests/basic.lam similarity index 100% rename from tests/basic.ml rename to tests/basic.lam