]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/content_pres/objPp.ml
content2Procedural.ml: "Intros+LetTac" ok
[helm.git] / helm / software / components / content_pres / objPp.ml
index 1eb47dbabb5a899137e5e352871193112cfb378e..aa2e3a6b8f7090955915816164cf60a787dfb1b2 100644 (file)
  * http://helm.cs.unibo.it/
  *)
 
-let obj_to_string n obj =
+let remove_closed_substs s =
+    Pcre.replace ~pat:"{...}" ~templ:"" s
+
+let term2pres n ids_to_inner_sorts annterm = 
+   let ast, ids_to_uris = 
+      TermAcicContent.ast_of_acic ids_to_inner_sorts annterm
+   in
+   let bobj =
+      CicNotationPres.box_of_mpres (
+         CicNotationPres.render ids_to_uris (TermContentPres.pp_ast ast)
+      )
+   in
+   let render = function _::x::_ -> x | _ -> assert false in
+   let mpres = CicNotationPres.mpres_of_box bobj in
+   let s = BoxPp.render_to_string render n mpres in
+   remove_closed_substs s
+
+let obj_to_string n style prefix obj =
   let aobj,_,_,ids_to_inner_sorts,ids_to_inner_types,_,_ = Cic2acic.acic_object_of_cic_object obj in
   let cobj = Acic2content.annobj2content ids_to_inner_sorts ids_to_inner_types aobj in
-  let bobj = Content2pres.content2pres ids_to_inner_sorts cobj in
-  BoxPp.render_to_string (function _::x::_ -> x | _ -> assert false) n (CicNotationPres.mpres_of_box bobj)
+  match style with
+     | GrafiteAst.Declarative ->
+        let bobj = Content2pres.content2pres ids_to_inner_sorts cobj in
+        remove_closed_substs ("\n\n" ^
+          BoxPp.render_to_string (function _::x::_ -> x | _ -> assert false) n (CicNotationPres.mpres_of_box bobj)
+       )
+     | GrafiteAst.Procedural ->
+        let term_pp = term2pres (n - 8) ids_to_inner_sorts in
+        let lazy_term_pp = term_pp in
+        let obj_pp = CicNotationPp.pp_obj term_pp in
+        let aux = GrafiteAstPp.pp_statement ~term_pp ~lazy_term_pp ~obj_pp in
+        let script = Content2Procedural.content2procedural ~ids_to_inner_sorts prefix cobj in
+       "\n\n" ^ String.concat "" (List.map aux script)