;;
let on_buffer f t =
+ try
let buff = Buffer.create 100 in
let formatter = F.formatter_of_buffer buff in
f ~formatter:formatter t;
F.fprintf formatter "@?";
Buffer.contents buff
+ with Failure m ->
+ "[[Unprintable: " ^ m ^ "]]"
;;
let ppterm ~formatter ~context ~subst ~metasenv ?(margin=80) ?inside_fix t =
ppterm ~formatter ~context ~subst ~metasenv ?inside_fix t
;;
-let rec ppcontext ~formatter ?(sep="\n") ~subst ~metasenv = function
+let rec ppcontext ~formatter ?(sep="; ") ~subst ~metasenv = function
| [] -> ()
| (name, NCic.Decl t) :: tl ->
ppcontext ~formatter ~sep ~subst ~metasenv tl;
F.fprintf formatter "%s: " name;
ppterm ~formatter ~subst ~metasenv ~context:tl t;
- F.fprintf formatter "%s" sep
+ F.fprintf formatter "%s@;" sep
| (name, NCic.Def (bo,ty)) :: tl->
ppcontext ~formatter ~sep ~subst ~metasenv tl;
F.fprintf formatter "%s: " name;
ppterm ~formatter ~subst ~metasenv ~context:tl ty;
F.fprintf formatter " := ";
ppterm ~formatter ~subst ~metasenv ~context:tl bo;
- F.fprintf formatter "%s" sep
+ F.fprintf formatter "%s@;" sep
+;;
+let ppcontext ~formatter ?sep ~subst ~metasenv c =
+ F.fprintf formatter "@[<hov>";
+ ppcontext ~formatter ?sep ~subst ~metasenv c;
+ F.fprintf formatter "@]";
;;
let ppmetaattrs =
String.concat ","
(List.map
(function
- `IsSort -> "sort"
+ | `IsTerm -> "term"
+ | `IsType -> "type"
+ | `IsSort -> "sort"
| `Name n -> "name=" ^ n
| `InScope -> "in_scope"
| `OutScope n -> "out_scope:" ^ string_of_int n