]> matita.cs.unibo.it Git - helm.git/commitdiff
xoa utility updated
authorFerruccio Guidi <fguidi@maelstrom.helm.cs.unibo.it>
Thu, 20 Dec 2018 15:46:01 +0000 (16:46 +0100)
committerFerruccio Guidi <fguidi@maelstrom.helm.cs.unibo.it>
Thu, 20 Dec 2018 15:46:01 +0000 (16:46 +0100)
+ two missing cases implemented
+ dependences fixed in Makefile

matita/components/binaries/xoa/Makefile
matita/components/binaries/xoa/xoa.ml

index dd5a763f7c302c88cf8d857824aa660d1a05725f..1933a2003b8764d7e320cada82fc72246771b25a 100644 (file)
@@ -1,6 +1,6 @@
 EXEC = xoa
 VERSION=0.2.0
 
-REQUIRES = helm-grafite
+REQUIRES = helm-registry
 
 include ../Makefile.common
index 219b906605327240452fba5c3638e34e2dc482b1..c5604f1e657243088e9682944122136d91618c91 100644 (file)
@@ -19,67 +19,76 @@ let incremental = ref true
 let separate = ref false
 
 let clear () =
-   incremental := true;
-   separate := false;
-   R.clear ()
+  incremental := true;
+  separate := false;
+  R.clear ()
 
 let unm_ex s =
-   Scanf.sscanf s "%u %u" A.mk_exists
+  Scanf.sscanf s "%u %u" A.mk_exists
 
 let unm_or s =
-   Scanf.sscanf s "%u" A.mk_or
+  Scanf.sscanf s "%u" A.mk_or
 
 let unm_and s =
-   Scanf.sscanf s "%u" A.mk_and
+  Scanf.sscanf s "%u" A.mk_and
 
 let process_centralized conf =
-   let preamble = L.get_preamble conf in
-   if R.has "xoa.objects" && R.has "xoa.notations" then begin
-      let ooch = L.open_out preamble (R.get_string "xoa.objects") in
-      let noch = L.open_out preamble (R.get_string "xoa.notations") in
-      List.iter (L.out_include ooch) (R.get_list R.string "xoa.include");
-      L.out_include ooch (R.get_string "xoa.notations" ^ ".ma");
-      List.iter (E.generate ooch noch) (R.get_list unm_ex "xoa.ex");
-      List.iter (E.generate ooch noch) (R.get_list unm_or "xoa.or");
-      List.iter (E.generate ooch noch) (R.get_list unm_and "xoa.and");
-      close_out noch; close_out ooch
-   end
+  let preamble = L.get_preamble conf in
+  if R.has "xoa.objects" && R.has "xoa.notations" then begin
+    let ooch = L.open_out preamble (R.get_string "xoa.objects") in
+    let noch = L.open_out preamble (R.get_string "xoa.notations") in
+    List.iter (L.out_include ooch) (R.get_list R.string "xoa.include");
+    L.out_include ooch (R.get_string "xoa.notations" ^ ".ma");
+    List.iter (E.generate ooch noch) (R.get_list unm_ex "xoa.ex");
+    List.iter (E.generate ooch noch) (R.get_list unm_or "xoa.or");
+    List.iter (E.generate ooch noch) (R.get_list unm_and "xoa.and");
+    close_out noch; close_out ooch
+  end
 
-let generate (p, o, n) = function
-   | A.Exists (c, v) as d ->
+let generate (p, o, n) d =
+  let oname, nname = match d with
+    | A.Exists (c, v) ->
       let oname = Printf.sprintf "%s/ex_%u_%u" o c v in
       let nname = Printf.sprintf "%s/ex_%u_%u" n c v in
-      if !incremental && L.exists_out oname && L.exists_out nname then () else
-      begin
-         let ooch = L.open_out p oname in
-         let noch = L.open_out p nname in
-         List.iter (L.out_include ooch) (R.get_list R.string "xoa.include");
-         L.out_include ooch (nname ^ ".ma");
-         E.generate ooch noch d;
-         close_out noch; close_out ooch
-      end
-   | A.Or c          -> ()
-   | A.And c         -> ()
+      oname, nname
+    | A.Or c          ->
+      let oname = Printf.sprintf "%s/or_%u" o c in
+      let nname = Printf.sprintf "%s/or_%u" n c in
+      oname, nname
+    | A.And c         ->
+      let oname = Printf.sprintf "%s/and_%u" o c in
+      let nname = Printf.sprintf "%s/and_%u" n c in
+      oname, nname
+  in
+  if !incremental && L.exists_out oname && L.exists_out nname then () else
+  begin
+    let ooch = L.open_out p oname in
+    let noch = L.open_out p nname in
+    List.iter (L.out_include ooch) (R.get_list R.string "xoa.include");
+    L.out_include ooch (nname ^ ".ma");
+    E.generate ooch noch d;
+    close_out noch; close_out ooch
+  end
 
 let process_distributed conf =
-   let preamble = L.get_preamble conf in
-   if R.has "xoa.objects" && R.has "xoa.notations" then begin
-      let st = preamble, R.get_string "xoa.objects", R.get_string "xoa.notations" in
-      List.iter (generate st) (R.get_list unm_ex "xoa.ex");
-      List.iter (generate st) (R.get_list unm_or "xoa.or");
-      List.iter (generate st) (R.get_list unm_and "xoa.and");
-   end
+  let preamble = L.get_preamble conf in
+  if R.has "xoa.objects" && R.has "xoa.notations" then begin
+    let st = preamble, R.get_string "xoa.objects", R.get_string "xoa.notations" in
+    List.iter (generate st) (R.get_list unm_ex "xoa.ex");
+    List.iter (generate st) (R.get_list unm_or "xoa.or");
+    List.iter (generate st) (R.get_list unm_and "xoa.and");
+  end
 
 let process conf =
-   if !separate then process_distributed conf else process_centralized conf
+  if !separate then process_distributed conf else process_centralized conf
 
 let _ =
-   let help = "Usage: xoa [ -Xs | <configuration file> ]*\n" in
-   let help_X  = " Clear configuration" in
-   let help_s  = " Generate separate objects" in
-   let help_u  = " Update existing separate files" in
-   Arg.parse [
-      "-X", Arg.Unit clear, help_X;
-      "-s", Arg.Set separate, help_s;
-      "-u", Arg.Clear incremental, help_u;
-   ] process help
+  let help = "Usage: xoa [ -Xs | <configuration file> ]*\n" in
+  let help_X  = " Clear configuration" in
+  let help_s  = " Generate separate objects" in
+  let help_u  = " Update existing separate files" in
+  Arg.parse [
+    "-X", Arg.Unit clear, help_X;
+    "-s", Arg.Set separate, help_s;
+    "-u", Arg.Clear incremental, help_u;
+  ] process help