]> matita.cs.unibo.it Git - helm.git/commitdiff
new xml exportation procedure for basic_rg (10 times faster than previous). the stati...
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 29 Oct 2009 18:15:17 +0000 (18:15 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 29 Oct 2009 18:15:17 +0000 (18:15 +0000)
14 files changed:
helm/software/lambda-delta/.depend.opt
helm/software/lambda-delta/Makefile
helm/software/lambda-delta/basic_rg/brgOutput.ml
helm/software/lambda-delta/basic_rg/brgOutput.mli
helm/software/lambda-delta/common/library.ml
helm/software/lambda-delta/common/library.mli
helm/software/lambda-delta/dual_rg/drg.ml
helm/software/lambda-delta/toplevel/top.ml
helm/software/lambda-delta/xml/ld-html-entity.xsl [new file with mode: 0644]
helm/software/lambda-delta/xml/ld-html-entry.xsl [deleted file]
helm/software/lambda-delta/xml/ld-html-library.xsl
helm/software/lambda-delta/xml/ld-html-root.xsl
helm/software/lambda-delta/xml/ld-html.xsl
helm/software/lambda-delta/xml/ld.dtd

index 5335eac4f476fd2d6dad00ad8a5bda7e6eeb93d4..1cf0b734ee0e82368cf52bf56e6ea9fa1c0cd9fc 100644 (file)
@@ -72,7 +72,7 @@ basic_ag/bagUntrusted.cmx: lib/nUri.cmx lib/log.cmx common/entity.cmx \
     basic_ag/bagUntrusted.cmi 
 basic_rg/brg.cmo: common/entity.cmx 
 basic_rg/brg.cmx: common/entity.cmx 
-basic_rg/brgOutput.cmi: lib/log.cmi basic_rg/brg.cmx 
+basic_rg/brgOutput.cmi: lib/log.cmi common/library.cmi basic_rg/brg.cmx 
 basic_rg/brgOutput.cmo: common/output.cmi lib/nUri.cmi lib/log.cmi \
     common/library.cmi common/hierarchy.cmi common/entity.cmx lib/cps.cmx \
     basic_rg/brg.cmx basic_rg/brgOutput.cmi 
index dacc62f6c17f6d535c771c060d70752f03342058..d2edae23bc93a6e11b70b1801b0e1aaa536fbfe4 100644 (file)
@@ -8,9 +8,9 @@ CLEAN = etc/log.txt
 
 TAGS = test test-si test-si-fast hal xml-si-drg xml-si-old 
 
-XMLS = xml/grundlagen/l/not.ld.xml xml/grundlagen/l/et.ld.xml \
-       xml/grundlagen/l/e/st/eq/landau/n/rt/rp/r/c/8283/t234.ld.xml \
-       xml/grundlagen/l/e/pairis1.ld.xml
+XMLS = xml/brg/grundlagen/l/not.ld.xml xml/brg/grundlagen/l/et.ld.xml \
+       xml/brg/grundlagen/l/e/st/eq/landau/n/rt/rp/r/c/8283/t234.ld.xml \
+       xml/brg/grundlagen/l/e/pairis1.ld.xml
 
 include Makefile.common
 
@@ -42,7 +42,6 @@ xml-si-drg: $(MAIN).opt
        @echo "  HELENA -u -x -s 1 $(INPUT)"
        $(H)./$(MAIN).opt -u -x -s 1 -S 1 $(INPUT) > etc/log.txt
 
-
 %.ld: BASEURL = --stringparam baseurl $(LDDLURL)
 
 %.ld:
index 7dfb2b9371d223058a5f4700eb6e55a0b4e9f152..58a407f04867041f157da26ab633b2966127c483 100644 (file)
@@ -222,44 +222,50 @@ let specs = {
 
 (* term xml printing ********************************************************)
 
-let rec exp_term c frm = function
+let rec exp_term e t out tab = match t with
    | B.Sort (a, l)    ->
       let a =
          let err _ = a in
          let f s = Y.Name (s, true) :: a in
         H.get_sort err f l
       in
-      F.fprintf frm "<Sort position=%S%a/>" (string_of_int l) X.old_name a
+      let attrs = [X.position l; X.name a] in
+      X.tag X.sort attrs out tab
    | B.LRef (a, i)    ->
       let a = 
          let err _ = a in
         let f n r = Y.Name (n, r) :: a in
         let f _ b = attrs_of_binder (Y.name err f) b in
-         B.get err f c i
+         B.get err f e i
       in
-      F.fprintf frm "<LRef position=%S%a/>" (string_of_int i) X.old_name a
-   | B.GRef (a, u)    ->
-      let a = Y.Name (U.name_of_uri u, true) :: a in
-      F.fprintf frm "<GRef uri=%S%a/>" (U.string_of_uri u) X.old_name a
-   | B.Cast (a, w, t) ->
-      F.fprintf frm "<Cast%a>%a</Cast>@,%a" X.old_name a (exp_boxed c) w (exp_term c) t 
+      let attrs = [X.position i; X.name a] in
+      X.tag X.lref attrs out tab
+   | B.GRef (a, n)    ->
+      let a = Y.Name (U.name_of_uri n, true) :: a in
+      let attrs = [X.uri n; X.name a] in
+      X.tag X.gref attrs out tab
+   | B.Cast (a, u, t) ->
+      let attrs = [] in
+      X.tag X.cast attrs ~contents:(exp_term e u) out tab;
+      exp_term e t out tab
    | B.Appl (a, v, t) ->
-      F.fprintf frm "<Appl%a>%a</Appl>@,%a" X.old_name a (exp_boxed c) v (exp_term c) t 
-   | B.Bind (b, t) ->
-      let f b cc = F.fprintf frm "%a@,%a" (exp_bind c) b (exp_term cc) t in 
-      let f b = B.push (f b) c b in
-      rename_bind f c b
+      let attrs = [] in
+      X.tag X.appl attrs ~contents:(exp_term e v) out tab;
+      exp_term e t out tab
+   | B.Bind (b, t)    ->
+      let b = rename_bind C.start e b in
+      exp_bind e b out tab; 
+      exp_term (B.push C.start e b) t out tab 
 
-and exp_boxed c frm t =
-   F.fprintf frm "@,@[<v3>   %a@]@," (exp_term c) t
-
-and exp_bind c frm = function
+and exp_bind e b out tab = match b with
    | B.Abst (a, w) ->
-      F.fprintf frm "<Abst%a>%a</Abst>" X.old_name a (exp_boxed c) w
+      let attrs = [X.name a; X.mark a] in
+      X.tag X.abst attrs ~contents:(exp_term e w) out tab
    | B.Abbr (a, v) ->
-      F.fprintf frm "<Abbr%a/>%a</Abbr>" X.old_name a (exp_boxed c) v
-   | B.Void a      ->
-      F.fprintf frm "<Void%a/>" X.old_name a
+      let attrs = [X.name a; X.mark a] in
+      X.tag X.abbr attrs ~contents:(exp_term e v) out tab
+   | B.Void a ->
+      let attrs = [X.name a; X.mark a] in
+      X.tag X.void attrs out tab
 
-let export_term frm t =
-   F.fprintf frm "%a" (exp_boxed B.empty_lenv) t
+let export_term = exp_term B.empty_lenv
index 69700febdf838508b551e0c2c017323616170d74..772f43cad5a1f0964a29a95a0d7e4c1aedfd1d21 100644 (file)
@@ -19,4 +19,7 @@ val print_counters: (unit -> 'a) -> counters -> 'a
 
 val specs: (Brg.lenv, Brg.term) Log.specs
 
+val export_term: Brg.term -> Library.pp
+(*
 val export_term: Format.formatter -> Brg.term -> unit
+*)
index ff4c54198832220c4154e44d7a62ef3da1a50318..25bca63a9e3a1cbb8557c40bf03616272b49e75b 100644 (file)
@@ -29,60 +29,8 @@ let system = "http://helm.cs.unibo.it/lambda-delta/" ^ base ^ "/ld.dtd"
 let path_of_uri uri =
    N.concat base (Str.string_after (U.string_of_uri uri) 3)
 
-let pp_head frm = 
-   F.fprintf frm "<?xml version=%S encoding=%S?>@,@," "1.0" "UTF-8"
-
-let pp_doctype frm =
-  F.fprintf frm "<!DOCTYPE ENTITY SYSTEM %S>@,@," system
-
-let open_entity si g frm =
-   let opts = if si then "si" else "" in
-   let f shp =
-      F.fprintf frm "<ENTITY hierarchy=%S options=%S>" shp opts
-   in
-   H.string_of_graph f g
-
-let close_entity frm =
-   F.fprintf frm "</ENTITY>"
-
-let name frm a =
-   let f s = function
-      | true  -> F.fprintf frm " name=%S" s
-      | false -> F.fprintf frm " name=%S" ("^" ^ s)
-   in      
-   Y.name C.start f a
-
-let pp_entity pp_term frm = function
-   | a, u, Y.Abst w -> 
-      let str = U.string_of_uri u in
-      let a = Y.Name (U.name_of_uri u, true) :: a in
-      F.fprintf frm "<ABST uri=%S%a>%a</ABST>" str name a pp_term w
-   | a, u, Y.Abbr v -> 
-      let str = U.string_of_uri u in
-      let a = Y.Name (U.name_of_uri u, true) :: a in
-      F.fprintf frm "<ABBR uri=%S%a>%a</ABBR>" str name a pp_term v
-
-let pp_boxed pp_term frm entity =
-   F.fprintf frm "@,@[<v3>   %a@]@," (pp_entity pp_term) entity
-
 (* interface functions ******************************************************)
 
-let old_export_entity pp_term si g entity =
-   let _, uri, _ = entity in
-   let path = path_of_uri uri in
-   let _ = Sys.command (Printf.sprintf "mkdir -p %s" (N.dirname path)) in
-   let och = open_out (path ^ obj_ext) in
-   let frm = F.formatter_of_out_channel och in
-   F.pp_set_margin frm max_int;
-   F.fprintf frm "@[<v>%t%t%t%a%t@]@." 
-      pp_head pp_doctype
-      (open_entity si g) (pp_boxed pp_term) entity close_entity;  
-   close_out och
-
-let old_name = name
-
-(****************************************************************************)
-
 type och = string -> unit
 
 type attr = string * string
index f364af329ed9621cf5da5d10bdfce52f40d41b0e..3364175bd38b1c84e123585e5bef3c3ed5832fee 100644 (file)
@@ -50,9 +50,3 @@ val arity: int -> attr
 val name: Entity.attrs -> attr
 
 val mark: Entity.attrs -> attr
-
-val old_export_entity:
-   (Format.formatter -> 'term -> unit) -> 
-   bool -> Hierarchy.graph -> 'term Entity.entity -> unit
-
-val old_name: Format.formatter -> Entity.attrs -> unit
index b20bdb3d387468fccf6c7436ec34ea3c0cdcb403..87e973ca84cace3a4f616bde4fdcccd5431fa8ec 100644 (file)
@@ -37,7 +37,7 @@ type entity = term Entity.entity
 (* helpers ******************************************************************)
 
 let mk_uri root s =
-   String.concat "/" ["ld:"; "drg"; root; s ^ ".ld"]
+   String.concat "/" ["ld:"; "crg"; root; s ^ ".ld"]
 
 let empty_lenv = ESort
 
index 0c85bb0c5dab51560344bdc7b5189f578860a460..6f7d60e9ca93d35051916c2442bb46bf3424f851 100644 (file)
@@ -115,7 +115,7 @@ let count_entity st = function
 
 let export_entity si g moch = function
    | DrgEntity e  -> X.export_entity DO.export_term si g e
-   | BrgEntity e  -> X.old_export_entity BrgO.export_term si g e
+   | BrgEntity e  -> X.export_entity BrgO.export_term si g e
    | MetaEntity e ->
       begin match moch with
          | None     -> ()
diff --git a/helm/software/lambda-delta/xml/ld-html-entity.xsl b/helm/software/lambda-delta/xml/ld-html-entity.xsl
new file mode 100644 (file)
index 0000000..ac30dac
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+    ||M||  This file is part of HELM, an Hypertextual, Electronic        
+    ||A||  Library of Mathematics, developed at the Computer Science     
+    ||T||  Department, University of Bologna, Italy.                     
+    ||I||                                                                
+    ||T||  HELM is free software; you can redistribute it and/or         
+    ||A||  modify it under the terms of the GNU General Public License   
+    \   /  version 2 or (at your option) any later version.              
+     \ /   This software is distributed as is, NO WARRANTY.              
+      V_______________________________________________________________ -->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:strip-space elements="ABST ABBR"/>
+
+<xsl:template match="ABST">
+   <h2>
+      <xsl:text>Declaration:</xsl:text>
+      <xsl:call-template name="entity"/>
+   </h2>
+   <div><xsl:apply-templates/></div>
+</xsl:template>
+
+<xsl:template match="ABBR">
+   <h2>
+      <xsl:text>Definition:</xsl:text>
+      <xsl:call-template name="entity"/>
+   </h2>
+   <div><xsl:apply-templates/></div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/helm/software/lambda-delta/xml/ld-html-entry.xsl b/helm/software/lambda-delta/xml/ld-html-entry.xsl
deleted file mode 100644 (file)
index c80119f..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-    ||M||  This file is part of HELM, an Hypertextual, Electronic        
-    ||A||  Library of Mathematics, developed at the Computer Science     
-    ||T||  Department, University of Bologna, Italy.                     
-    ||I||                                                                
-    ||T||  HELM is free software; you can redistribute it and/or         
-    ||A||  modify it under the terms of the GNU General Public License   
-    \   /  version 2 or (at your option) any later version.              
-     \ /   This software is distributed as is, NO WARRANTY.              
-      V_______________________________________________________________ -->
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<xsl:strip-space elements="ABST ABBR VOID"/>
-
-<xsl:template match="ABST">
-   <h2>
-      <xsl:text>Declaration:</xsl:text>
-      <xsl:call-template name="entry"/>
-   </h2>
-   <div><xsl:apply-templates/></div>
-</xsl:template>
-
-<xsl:template match="ABBR">
-   <h2>
-      <xsl:text>Definition:</xsl:text>
-      <xsl:call-template name="entry"/>
-   </h2>
-   <div><xsl:apply-templates/></div>
-</xsl:template>
-
-<xsl:template match="VOID">
-   <h2>
-      <xsl:text>Exclusion:</xsl:text>
-      <xsl:call-template name="entry"/>
-   </h2>
-   <div><xsl:apply-templates/></div>
-</xsl:template>
-
-</xsl:stylesheet>
index 3479c3038176884dd8a772300c91c1027285e5ec..cf6857d654377042ba5945673ca599f41bc8a715 100644 (file)
 
 <xsl:template name="global">
    <span style="{$global}">
-      <xsl:value-of select="@name"/>
-   </span>   
+      <a name="" title="{@mark}">
+         <xsl:value-of select="@name"/>
+      </a>
+   </span>
 </xsl:template>
 
 <xsl:template name="mk_segment">
    </xsl:choose>
 </xsl:template>
 
-<xsl:template name="entry">
+<xsl:template name="entity">
    <xsl:call-template name="sp"/>
    <xsl:call-template name="global"/>
    <xsl:call-template name="sp"/>
index 8ee5ebcae428268f41ee9e97386f740b3eadf38d..2b8edb470ea0e5f3496f688be54ba1d5c941fae8 100644 (file)
@@ -13,7 +13,8 @@
 
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
-<xsl:strip-space elements="ENTRY"/>
+<xsl:strip-space elements="ENTITY"/>
+
 <xsl:template match="/">
    <html><head>
       <meta content="Ferruccio Guidi" name="author"/>
@@ -54,7 +55,7 @@
    </body></html>
 </xsl:template>
 
-<xsl:template match="ENTRY">
+<xsl:template match="ENTITY">
    <xsl:apply-templates/><h2/>
    <div>
       Validation parameters:
index f166025db30feca7de01cb1c8be484d0f58b29a9..b5ed85342ef2ebc1da223cc4ee2949663e7d4f21 100644 (file)
@@ -17,7 +17,7 @@
 
 <xsl:include href="ld-html-library.xsl"/>
 <xsl:include href="ld-html-term.xsl"/>
-<xsl:include href="ld-html-entry.xsl"/>
+<xsl:include href="ld-html-entity.xsl"/>
 <xsl:include href="ld-html-root.xsl"/>
 
 <xsl:output 
index 00ea552390957f679b48be29da32b26143e170ba..49da5752196e3149e83f7bd559186c0b1d6053c5 100644 (file)
 <!ATTLIST Sort
           position NMTOKEN #REQUIRED
           name     CDATA   #IMPLIED
+          mark     NMTOKEN #IMPLIED
 >
 
 <!ELEMENT LRef EMPTY>
 <!ATTLIST LRef
           position NMTOKEN #REQUIRED
           name     CDATA   #IMPLIED
+          mark     NMTOKEN #IMPLIED
 >
 
 <!ELEMENT GRef EMPTY>
 <!ATTLIST GRef
-          uri  CDATA #REQUIRED
-          name CDATA #IMPLIED
+          uri  CDATA   #REQUIRED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
 >
 
 <!ELEMENT Cast %term;>
 <!ATTLIST Cast
-          name CDATA #IMPLIED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
 >
 
 <!ELEMENT Appl %term;>
 <!ATTLIST Appl
-          name CDATA #IMPLIED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
 >
 
 <!ELEMENT Abst %term;>
 <!ATTLIST Abst
-          name CDATA #IMPLIED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
 >
 
 <!ELEMENT Abbr %term;>
 <!ATTLIST Abbr
-          name CDATA #IMPLIED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
 >
 
 <!ELEMENT Void EMPTY>
 <!ATTLIST Void
-          name CDATA #IMPLIED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
 >
 
 <!-- ENVIRONMENT ENTRIES -->
 
-<!ENTITY % entry '(ABST|ABBR|VOID)'> 
+<!ENTITY % entity '(ABST|ABBR)'> 
 
 <!ELEMENT ABST %term;>
 <!ATTLIST ABST
-          uri  CDATA #REQUIRED
-          name CDATA #IMPLIED
+          uri  CDATA   #REQUIRED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
 >
 
 <!ELEMENT ABBR %term;>
 <!ATTLIST ABBR
-          uri  CDATA #REQUIRED
-          name CDATA #IMPLIED
->
-
-<!ELEMENT VOID EMPTY>
-<!ATTLIST VOID
-          uri  CDATA #REQUIRED
-          name CDATA #IMPLIED
+          uri  CDATA   #REQUIRED
+          name CDATA   #IMPLIED
+          mark NMTOKEN #IMPLIED
 >
 
 <!-- ROOT -->
 
-<!ELEMENT ENTRY %entry;>
-<!ATTLIST ENTRY
+<!ELEMENT ENTITY %entity;>
+<!ATTLIST ENTITY
           hierarchy NMTOKEN  #REQUIRED
           options   NMTOKENS #IMPLIED
 >