]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/mathql_interpreter_galax/tools.ml
commit of galax mathql interpreter
[helm.git] / helm / ocaml / mathql_interpreter_galax / tools.ml
diff --git a/helm/ocaml/mathql_interpreter_galax/tools.ml b/helm/ocaml/mathql_interpreter_galax/tools.ml
new file mode 100644 (file)
index 0000000..7be6442
--- /dev/null
@@ -0,0 +1,98 @@
+
+(* QUESTE FUNZIONI ORA NON VENGONO USATE, SONO STATE INSERITE NEI FILE DELLE
+  
+   FUNZIONI CHE LE USANO!!!!*)
+
+
+
+open Unix;;
+
+(* Data una lista di token restituisce la stringa formata da tutti i token *)
+let rec token_to_str p =
+ match p with
+   [] -> ""
+ | head::tail ->
+    let h = match head with
+               MQBC s -> Str.global_replace (Str.regexp "\.") "\\\\\." s
+            |  MQBD -> "/"
+            |  MQBQ -> "[^/#]?"
+            |  MQBS -> "[^/#]*"
+            |  MQBSS -> "[^#]*"
+    in
+     h ^ (patterneval tail)
+;;
+
+
+
+
+(* data la lista dei token(fi) la trasforma in stringa aggiungendo la virgola
+tra un token e l'altro *)
+let rec fitoken_to_str p =
+ match p with
+   [] -> ""
+ | head::tail ->
+    let h = match head with
+               MQBQ -> "[^/#]?" ^ ","
+            |  MQBS -> "[^/#]*" ^ ","
+            |  MQBSS -> "[^#]*" ^ ","
+    in
+     h ^ (patterneval tail)
+;;
+
+
+
+
+
+
+
+(* NON SERVE ORA! *)
+
+(* Dato un path stringa restituisce la lista dei file contenuti a ogni livello
+nella dir relativa al path *)           
+
+(*let rec entry_list aspattern dir =
+        
+        if !contains(aspattern,'.') 
+                then
+                        let indir = opendir(aspattern) in
+                          let ent = readdir(indir) in
+                            if contains(ent, '.') (*se la entry e' un file*)
+                                  then [geturi(ent)] @ entry_list(readdir(indir), indir)
+                            else
+                                  entry_list(ent, indir)      (*se la entry e' una dir*)
+
+        else                  
+                [geturi(aspattern)] @ entry_list(readdir(dir), dir)*) (*se aspattern e' un file*)
+
+
+                
+(* FUNZIONE DI MATCHING: prende il descrittore del file delle uri e il path da
+matchare formato stringa e restituisce la lista dei path che fanno match in
+formato stringa    !! TAIL-RECURSIVE !! *)
+
+let pmatch inp path =
+        let rec aux inp path acc =  
+         
+          let s= try
+            Some (Str.string_after (input_line(inp)) 61)
+                 with End_of_file -> None 
+          in match s with
+            | Some s ->
+              if Str.string_match (Str.regexp path) s 0
+                then 
+                  begin 
+                    let p = (Str.match_end()-3) 
+                    in
+                      aux inp path ((Str.string_before s p)::acc) 
+                  end
+              else
+                (aux inp path acc)
+            | None -> List.rev acc 
+        in
+          aux inp path []                            
+;;
+
+
+
+
+