mpri-funcprog-project/src/prettify/PrettyTail.ml
Théophile Bastian 7bc7921fc3 Add IfZero in the syntax + placeholders
Also add (* TODO ifzero *) all around as placeholders
2018-02-16 00:19:44 +01:00

30 lines
892 B
OCaml

module S = Tail
open PrettyCommon
let rec fmt_block fmt (S.Lam (self, vars, body)) =
Format.fprintf fmt "λ%a(%a) ·@ %a"
fmt_self self
fmt_vars vars
fmt_term body
and fmt_term fmt (t: S.term) = match t with
| S.Exit ->
Format.fprintf fmt "Exit";
| S.TailCall(fct, args) ->
Format.fprintf fmt "Call %a %a" fmt_val fct fmt_vals args
| S.Print (value, next) ->
Format.fprintf fmt "Print %a;@ %a" fmt_val value fmt_term next
| S.LetVal (var, value, next) ->
Format.fprintf fmt "@[<v 4>let %a = %a@] in@ %a"
fmt_var var fmt_val value fmt_term next
| S.LetBlo (var, block, next) ->
Format.fprintf fmt "@[<v 4>let %a = %a@] in@ %a"
fmt_var var fmt_block block fmt_term next
| S.IfZero _ ->
(* TODO ifzero *)
assert false
let show term =
Format.asprintf "@[<v 0>%a@]" fmt_term term