X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fmathql_interpreter%2Fpattern.ml;h=9809552a034c64d55373c3dfcd771157409b5b3c;hb=6f6b8f33397548319fef9b374f9e9017e7fa151d;hp=2445e1c760fdae5096914631b5a2f70c2d0a6597;hpb=6a1d05b388683befc860b48b4f2bbaf42f58a112;p=helm.git diff --git a/helm/ocaml/mathql_interpreter/pattern.ml b/helm/ocaml/mathql_interpreter/pattern.ml index 2445e1c76..9809552a0 100644 --- a/helm/ocaml/mathql_interpreter/pattern.ml +++ b/helm/ocaml/mathql_interpreter/pattern.ml @@ -1,14 +1,54 @@ +(* Copyright (C) 2000, HELM Team. + * + * This file is part of HELM, an Hypertextual, Electronic + * Library of Mathematics, developed at the Computer Science + * Department, University of Bologna, Italy. + * + * HELM is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * HELM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with HELM; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + * + * For details, see the HELM World-Wide-Web page, + * http://www.cs.unibo.it/helm/. + *) open Dbconn;; open Utility;; -open Eval;; - -let pattern_ex apreamble apattern ext afragid = - let c = pgc () in - let r1 = c#exec "select att0 from class where att2='Object'" in - let res = - c#exec ("select att0 from t" ^ (pgresult_to_string r1) ^ - " where att0 " ^ (pattern_match apreamble apattern ext afragid)) - in - [["retVal"]] @ List.map (fun l -> [l]) (pgresult_to_string_list res) + +let cat l1 l2 = + if l1 > l2 then + l2 @ l1 + else + l1 @ l2 ;; + +let rec pattern_ex l = + match l with + [] -> [] + | s::tl -> let result = + let c = pgc () in + let quoted_s = + Str.global_substitute (Str.regexp "'") + (function _ -> "\\'") s in + let qq = "select uri from registry where uri ~ '" ^ quoted_s ^ "' order by registry.uri asc" in + let res = c#exec (qq) in + List.map (function uri -> (List.hd uri,[])) res#get_list + (*for i = 0 to res#ntuples do + List.map (function uri -> (uri,[])) (res#get_tuple_list i) + done*) + + in + cat result (pattern_ex tl) +;; +