]> matita.cs.unibo.it Git - helm.git/commitdiff
new MathQL syntax
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Tue, 28 May 2002 17:48:08 +0000 (17:48 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Tue, 28 May 2002 17:48:08 +0000 (17:48 +0000)
18 files changed:
helm/ocaml/mathql_interpreter/.depend
helm/ocaml/mathql_interpreter/Makefile
helm/ocaml/mathql_interpreter/dbconn.ml
helm/ocaml/mathql_interpreter/eval.ml
helm/ocaml/mathql_interpreter/eval.mli
helm/ocaml/mathql_interpreter/func.ml
helm/ocaml/mathql_interpreter/func.mli
helm/ocaml/mathql_interpreter/mathql.ml [deleted file]
helm/ocaml/mathql_interpreter/mathql_semantics.ml
helm/ocaml/mathql_interpreter/mqint.ml
helm/ocaml/mathql_interpreter/mqint.mli
helm/ocaml/mathql_interpreter/pattern.ml
helm/ocaml/mathql_interpreter/pattern.mli
helm/ocaml/mathql_interpreter/select.ml
helm/ocaml/mathql_interpreter/select.mli
helm/ocaml/mathql_interpreter/sortedby.ml
helm/ocaml/mathql_interpreter/sortedby.mli
helm/ocaml/mathql_interpreter/use.mli

index 75754ac27efbe29931cae7ecdcdf3f2c4f063815..7ee73d95c647222978e92a1b0a05fe1d7d7fcc6b 100644 (file)
@@ -1,28 +1,22 @@
-eval.cmi: mathql.cmo 
-func.cmi: mathql.cmo 
-sortedby.cmi: mathql.cmo 
-select.cmi: mathql.cmo mathql_semantics.cmo 
+select.cmi: mathql_semantics.cmo 
 intersect.cmi: mathql_semantics.cmo 
 union.cmi: mathql_semantics.cmo 
-pattern.cmi: mathql.cmo mathql_semantics.cmo 
-use.cmi: mathql.cmo mathql_semantics.cmo 
-mqint.cmi: mathql.cmo 
-mathql_semantics.cmo: mathql.cmo 
-mathql_semantics.cmx: mathql.cmx 
-dbconn.cmo: mathql.cmo dbconn.cmi 
-dbconn.cmx: mathql.cmx dbconn.cmi 
-eval.cmo: mathql.cmo eval.cmi 
-eval.cmx: mathql.cmx eval.cmi 
+pattern.cmi: mathql_semantics.cmo 
+use.cmi: mathql_semantics.cmo 
+dbconn.cmo: dbconn.cmi 
+dbconn.cmx: dbconn.cmi 
+eval.cmo: eval.cmi 
+eval.cmx: eval.cmi 
 utility.cmo: dbconn.cmi utility.cmi 
 utility.cmx: dbconn.cmx utility.cmi 
-func.cmo: dbconn.cmi mathql.cmo utility.cmi func.cmi 
-func.cmx: dbconn.cmx mathql.cmx utility.cmx func.cmi 
+func.cmo: dbconn.cmi utility.cmi func.cmi 
+func.cmx: dbconn.cmx utility.cmx func.cmi 
 diff.cmo: diff.cmi 
 diff.cmx: diff.cmi 
-sortedby.cmo: func.cmi mathql.cmo utility.cmi sortedby.cmi 
-sortedby.cmx: func.cmx mathql.cmx utility.cmx sortedby.cmi 
-select.cmo: func.cmi mathql.cmo mathql_semantics.cmo utility.cmi select.cmi 
-select.cmx: func.cmx mathql.cmx mathql_semantics.cmx utility.cmx select.cmi 
+sortedby.cmo: func.cmi utility.cmi sortedby.cmi 
+sortedby.cmx: func.cmx utility.cmx sortedby.cmi 
+select.cmo: func.cmi mathql_semantics.cmo utility.cmi select.cmi 
+select.cmx: func.cmx mathql_semantics.cmx utility.cmx select.cmi 
 intersect.cmo: mathql_semantics.cmo intersect.cmi 
 intersect.cmx: mathql_semantics.cmx intersect.cmi 
 union.cmo: mathql_semantics.cmo union.cmi 
@@ -31,9 +25,9 @@ pattern.cmo: dbconn.cmi eval.cmi mathql_semantics.cmo utility.cmi pattern.cmi
 pattern.cmx: dbconn.cmx eval.cmx mathql_semantics.cmx utility.cmx pattern.cmi 
 use.cmo: dbconn.cmi mathql_semantics.cmo utility.cmi use.cmi 
 use.cmx: dbconn.cmx mathql_semantics.cmx utility.cmx use.cmi 
-mqint.cmo: dbconn.cmi diff.cmi eval.cmi intersect.cmi mathql.cmo \
-    mathql_semantics.cmo pattern.cmi select.cmi sortedby.cmi union.cmi \
-    use.cmi utility.cmi mqint.cmi 
-mqint.cmx: dbconn.cmx diff.cmx eval.cmx intersect.cmx mathql.cmx \
-    mathql_semantics.cmx pattern.cmx select.cmx sortedby.cmx union.cmx \
-    use.cmx utility.cmx mqint.cmi 
+mqint.cmo: dbconn.cmi diff.cmi eval.cmi intersect.cmi mathql_semantics.cmo \
+    pattern.cmi select.cmi sortedby.cmi union.cmi use.cmi utility.cmi \
+    mqint.cmi 
+mqint.cmx: dbconn.cmx diff.cmx eval.cmx intersect.cmx mathql_semantics.cmx \
+    pattern.cmx select.cmx sortedby.cmx union.cmx use.cmx utility.cmx \
+    mqint.cmi 
index ccd485a59444fa7593719ef13443fd96b0c026ce..28c71737db037c1c4fc2b8898ac1c0e4f539b46b 100644 (file)
@@ -1,16 +1,16 @@
 PACKAGE = mathql_interpreter
-REQUIRES = helm-urimanager pgocaml unix
+REQUIRES = helm-urimanager pgocaml unix helm-mathql
 PREDICATES =
 
 INTERFACE_FILES = dbconn.mli eval.mli utility.mli func.mli diff.mli \
                  sortedby.mli select.mli intersect.mli union.mli \
                  pattern.mli use.mli mqint.mli
 
-IMPLEMENTATION_FILES = mathql.ml mathql_semantics.ml \
+IMPLEMENTATION_FILES = mathql_semantics.ml \
                        $(INTERFACE_FILES:%.mli=%.ml)
 
-EXTRA_OBJECTS_TO_INSTALL = mathql.ml mathql.cmi mathql_semantics.ml \
-                           mathql_semantics.cmi
+EXTRA_OBJECTS_TO_INSTALL = mathql_semantics.ml mathql_semantics.cmi
+
 EXTRA_OBJECTS_TO_CLEAN =
 
 
index 185ea011d60257881d1e35966b1c5a0b816a45b1..e46f89cb280180659b58d43d31552feea343dd0b 100644 (file)
@@ -31,7 +31,7 @@
  * le eccezioni lanciate dalle funzioni init e pgc sono
  * definite nel modulo Mathql 
  *)
-open Mathql;;
+open MathQL;;
 
 (*
  * paramentri della connessione
index 4bc9a88db942c10b00f28f2bdf7737fa5efa4565..81be805201317557c330dc08d116e79411a7f6d6 100644 (file)
@@ -27,7 +27,7 @@
  *
  *)
 
-open Mathql;;
+open MathQL;;
 
 (*
  * conversione di un pattern
@@ -37,11 +37,11 @@ let rec patterneval p =
    [] -> ""
  | head::tail ->
     let h = match head with
-               MQString (s) -> Str.global_replace (Str.regexp "\.") "\\\\\." s
-            |  MQSlash -> "/"
-            |  MQAnyChr -> "[^/#]?"
-            |  MQAst -> "[^/#]*"
-            |  MQAstAst -> "[^#]*"
+               MQBC (s) -> Str.global_replace (Str.regexp "\.") "\\\\\." s
+            |  MQBD -> "/"
+            |  MQBQ -> "[^/#]?"
+            |  MQBS -> "[^/#]*"
+            |  MQBSS -> "[^#]*"
     in
      h ^ (patterneval tail)
 ;;
@@ -50,14 +50,13 @@ let rec patterneval p =
  * conversione di un fragment identifier
  *)
 let fieval fi =
- match fst fi with
-    None -> ""
- |  Some i ->
+match fi with
+    [] -> ""
+ |  MQFC i :: tail ->  
      let s = "#xpointer\\\\(1/" ^ string_of_int (i) in
-      match snd fi with
-         None ->
-         s ^ "\\\\)"
-      |  Some j ->
+      match tail with
+         [] -> s ^ "\\\\)"
+      |  MQFC j :: tail2 ->
          s ^ "/" ^ string_of_int j ^ "\\\\)"
 ;;
 
@@ -77,7 +76,8 @@ let exteval ext =
  * valuta il preambolo
  *)
 let preeval p =
- p
+ match p with 
+   Some s -> s
 ;;
 
 (*
@@ -87,7 +87,7 @@ let preeval p =
  * SQL standard LIKE perche' MathQL prevede esperssioni con "*"
  * e con "**".
  *)
-let pattern_match preamble pattern fragid =
+let pattern_match (preamble, pattern, fragid) =
  " ~ '" ^ (preeval preamble) ^ ":/" ^ (patterneval pattern) ^ (fieval fragid) ^ "'"
 ;;
 
index 1c634d97730b2e38ae7fcf9a2ad72310a75ff64f..00b64ed9552534b03c0c361707ca225b5cbf07d4 100644 (file)
@@ -24,5 +24,4 @@
  *)
 
 val pattern_match :
-  string ->
-  Mathql.mquptoken list -> int option * int option -> string
+  MathQL.mqtref -> string
index 7f80da7f492f5d499eed9bc199493e735c60c732..314ad2b01db7a7b5428ddcfcd551d0ceed40c765 100644 (file)
@@ -29,7 +29,7 @@
 
 open Dbconn;;
 open Utility;;
-open Mathql;;
+open MathQL;;
 
 (*
  * implementazione della funzione NAME
index 5e9d77ff375e991dda37609824cfb59fff34a57e..fb68df82a69bfde4e7060fb874f1adb26a69edb1 100644 (file)
@@ -23,4 +23,4 @@
  * http://cs.unibo.it/helm/.
  *)
 
-val apply_func: Mathql.mqfunc -> string -> string
+val apply_func: MathQL.mqfunc -> string -> string
diff --git a/helm/ocaml/mathql_interpreter/mathql.ml b/helm/ocaml/mathql_interpreter/mathql.ml
deleted file mode 100644 (file)
index e780290..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-(* 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://cs.unibo.it/helm/.
- *)
-
-(******************************************************************************)
-(*                                                                            *)
-(*                               PROJECT HELM                                 *)
-(*                                                                            *)
-(*                     Ferruccio Guidi <fguidi@cs.unibo.it>                   *)
-(*                     Domenico Lordi  <lordi@cs.unibo.it>                    *)
-(*                                 30/04/2002                                 *)
-(*                                                                            *)
-(*                                                                            *)
-(******************************************************************************)
-
-exception MQInvalidURI of string
-exception MQConnectionFailed of string
-exception MQInvalidConnection of string
-
-(* Input types **************************************************************)
-(* main type is mquery                                                      *)
-
-type mqrvar = string                         (* name *)
-
-type mqsvar = string                         (* name *)
-
-type mquptoken =
-   | MQString of string                      (* a constant string *)
-   | MQSlash                                 (* a slash: '/' *)
-   | MQAnyChr                                (* Any single character: '?' *)
-   | MQAst                                   (* single asterisk: '*' *)
-   | MQAstAst                                (* double asterisk: '**' *)
-
-type mqup = mquptoken list                   (* uri pattern (helper) *)
-
-type mqfi = int option * int option
-
-type mqtref = string * mqup * mqfi           (* HELM preamble,
-                                                uri pattern, 
-                                               fragment identifier *)
-
-type mqpattern = mqtref                      (* constant pattern *)
-
-type mqfunc =
-   | MQName                                  (* NAME *)
-   | MQTheory
-   | MQTitle
-   | MQContributor
-   | MQCreator
-   | MQPublisher
-   | MQSubject
-   | MQDescription
-   | MQDate
-   | MQType
-   | MQFormat
-   | MQIdentifier
-   | MQLanguage
-   | MQRelation
-   | MQSource
-   | MQCoverage
-   | MQRights
-   | MQInstitution
-   | MQContact
-   | MQFirstVersion
-   | MQModified
-
-type mqstring =
-   | MQCons of string                        (* constant *)
-   | MQFunc of mqfunc * mqrvar               (* function, rvar *)
-   | MQRVar of mqrvar                        (* rvar *)
-   | MQSVar of mqsvar                        (* svar *)
-   | MQMConclusion                           (* main conclusion *)
-   | MQConclusion                            (* inner conclusion *)
-
-type mqorder =
-   | MQAsc
-   | MQDesc
-
-type mqbool =
-   | MQTrue
-   | MQFalse
-   | MQAnd of mqbool * mqbool
-   | MQOr of mqbool * mqbool
-   | MQNot of mqbool
-   | MQIs of mqstring * mqstring             (* operands *)
-   | MQSetEqual of mqlist * mqlist           (* the two lists denote the *)
-                                             (* same set                 *)
-   | MQSubset of mqlist * mqlist             (* the two lists denote two   *)
-                                             (* sets, the first one        *)
-                                             (* subsect of the second one. *)
-
-and mqlist =
-   | MQSelect of mqrvar * mqlist * mqbool    (* rvar, list, boolean *) 
-   | MQUse of mqlist * mqsvar                (* list, Position attribute *)
-   | MQUsedBy of mqlist * mqsvar             (* list, Position attribute *)
-   | MQPattern of mqpattern                  (* pattern *)
-   | MQUnion of mqlist * mqlist              (*  *)
-   | MQDiff of mqlist * mqlist               (*  *)
-   | MQIntersect of mqlist * mqlist          (*  *)
-   | MQSortedBy of mqlist * mqorder * mqfunc (*  *)
-   | MQRVarOccur of mqrvar
-
-type mquery =
-   | MQList of mqlist
-   
-(* Output types *************************************************************)
-(* main type is mqresult                                                    *)
-
-type mquref = UriManager.uri * mqfi          (* uri, fragment identifier *)
-
-type mqrefs = mqtref list                    (* list of references (helper) *)
-
-type mqresult =
-   | MQRefs of mqrefs
index e7e5ee5e5551605b2aacab4aff3bd89766c3696f..f618e1e5ce736058e281459ef7a6415812b947b2 100644 (file)
@@ -25,9 +25,9 @@
 
 (* attributes are sorted w.r.t. their name in increasing order *)
 type attributed_uri =
- { uri: string ; attributes : (Mathql.mqsvar * string) list }
+ { uri: string ; attributes : (MathQL.mqsvar * string) list }
 
 type attributed_uri_env =
- (Mathql.mqrvar * attributed_uri) list
+ (MathQL.mqrvar * attributed_uri) list
 
 type result = attributed_uri list
index 2bf4d144ed18994658ff0ec012d8d7c7e7aa986b..dce67f86494d9fc3f95006622eae5af340626a51 100644 (file)
@@ -26,7 +26,7 @@
 (*
  * implementazione del'interprete MathQL
  *)
-open Mathql;;
+open MathQL;;
 open Eval;;
 open Utility;;
 open Dbconn;;
@@ -74,7 +74,7 @@ let rec execute_ex env =
  |  MQUse (alist, asvar) ->
      use_ex (execute_ex env alist) asvar "B" (*"backPointer"*)
  |  MQPattern (apreamble, apattern, afragid) ->
-     pattern_ex apreamble apattern afragid
+     pattern_ex (apreamble, apattern, afragid)
  |  MQUnion (l1, l2) ->
      union_ex (execute_ex env l1) (execute_ex env l2)
 (*
@@ -122,6 +122,8 @@ Select.execute := execute_ex;;
  * la uri puo' far parte del risultato.
  *)
 let xres_to_res l =
+ MQRefs (List.map (function {Mathql_semantics.uri = uri} -> uri) l)
+(*
  let tmp = List.map (function {Mathql_semantics.uri = uri} -> uri) l in
   MQRefs
    (List.map
@@ -131,48 +133,49 @@ let xres_to_res l =
           match List.rev tl with
              ")"::n::"xpointer(1"::tail    ->
               (
-               hd,
+               Some hd,
                List.fold_left
                 (fun par t ->
                  match par with
-                    [] -> [MQString t] 
-                 |  _  -> (MQString t) :: MQSlash :: par
+                    [] -> [MQBC t] 
+                 |  _  -> (MQBC t) :: MQBD :: par
                 )
                 []
                 tail, 
-               (Some (int_of_string n), None)
+               [MQFC (int_of_string n)]
               )
           |  ")"::n::m::"xpointer(1"::tail ->
               (
-               hd,
+               Some hd,
                List.fold_left
                 (fun par t ->
                  match par with
-                    [] -> [MQString t] 
-                 |  _  -> (MQString t) :: MQSlash :: par
+                    [] -> [MQBC t] 
+                 |  _  -> (MQBC t) :: MQBD :: par
                 )
                 []
                 tail,
-               (Some (int_of_string m), Some (int_of_string n))
+               [MQFC (int_of_string m); MQFC (int_of_string n)]
               )
           |  tail                          ->
               (
-               hd,
+               Some hd,
                List.fold_left
                 (fun par t ->
                  match par with
-                    [] -> [MQString t] 
-                 |  _  -> (MQString t) :: MQSlash :: par
+                    [] -> [MQBC t] 
+                 |  _  -> (MQBC t) :: MQBD :: par
                 )
                 []
                 tail, 
-               (None, None)
+               []
               )
       )  
       |  [] -> assert false
     )
     tmp
    )
+*)
 ;;
 
 
index 55836d94033210a8150279210c3171d69aa9f89f..60f00f50c3da307f028ad0826d8f7eaa5147668d 100644 (file)
@@ -27,7 +27,7 @@
  * interfaccia dell'interprete MathQL
  *)
 
-open Mathql;;
+open MathQL;;
 
 (*
  * inizializzazione del database
index fa28f6cc5a4c682650c8cef556ade0f6341615dc..7aa09f1720633a03dc669ff38eb7c200ee01be94 100644 (file)
@@ -32,11 +32,11 @@ open Utility;;
 open Eval;;
 open Mathql_semantics;;
 
-let pattern_ex apreamble apattern afragid =
+let pattern_ex (apreamble, apattern, afragid) =
  let c = pgc () in
   (*let r1 = helm_class_id "MathResource" in*)
    (*let qq = "select att0 from t" ^ r1 ^ " where att0 " ^ (pattern_match apreamble apattern afragid) ^ " order by t" ^ r1 ^ ".att0 asc" in*)
-   let qq = "select uri from registry where uri " ^ (pattern_match apreamble apattern afragid) ^ " order by registry.uri asc" in
+   let qq = "select uri from registry where uri " ^ (pattern_match (apreamble, apattern, afragid)) ^ " order by registry.uri asc" in
    (*let _ = print_endline qq in*)
     let res =
      c#exec (qq)
index 72d44dc411b53d92a82d5234aebdb2c7061c0827..1fd21bdbad4bedeed3020fc71674d7d2663c45b7 100644 (file)
@@ -24,5 +24,5 @@
  *)
 
 val pattern_ex :
-  string -> Mathql.mquptoken list -> int option * int option ->
+  MathQL.mqtref ->
    Mathql_semantics.result
index 4b2c264027b69651637bc2fb92b1c89cf20d8dd4..1e53a4ba408a53339a328f12495f893bcc6e8507 100644 (file)
@@ -27,7 +27,7 @@
  * implementazione del comando SELECT
  *)
 
-open Mathql;;
+open MathQL;;
 open Func;;
 open Utility;;
 
index 582fc0030b88a9161845d1ca2562e195a45a810f..7c2fe9ddf2628929448755db856b130c9cdcbadb 100644 (file)
@@ -26,9 +26,9 @@
 exception ExecuteFunctionNotInitialized;;
 val execute:
  (Mathql_semantics.attributed_uri_env ->
-   Mathql.mqlist -> Mathql_semantics.result) ref
+   MathQL.mqlist -> Mathql_semantics.result) ref
 
 val select_ex :
   Mathql_semantics.attributed_uri_env ->
-   Mathql.mqrvar -> Mathql_semantics.result -> Mathql.mqbool ->
+   MathQL.mqrvar -> Mathql_semantics.result -> MathQL.mqbool ->
     Mathql_semantics.result
index a629266840608b6c2b5eb415ac05a3b29ccffdd8..db2258d569974ecd229dcf4c08f4b53f72bd1452 100644 (file)
@@ -27,7 +27,7 @@
  * implementazione del comando SORTEDBY
  *)
 
-open Mathql;;
+open MathQL;;
 open Func;;
 open Utility;;
 
index ebed97055a85da8461a12e795e2222184172d33f..6c01aa0e646243a383957d75d4a1446f30a71c57 100644 (file)
@@ -24,4 +24,4 @@
  *)
 
 val sortedby_ex :
-  string list list -> Mathql.mqorder -> Mathql.mqfunc -> string list list
+  string list list -> MathQL.mqorder -> MathQL.mqfunc -> string list list
index a8186b40a5f9538e104f38d7e4c14a758581a95f..0572ad5ac7fcfb24fd14e4ad4957d2733ab26b88 100644 (file)
@@ -24,4 +24,4 @@
  *)
 
 val use_ex :
- Mathql_semantics.result -> Mathql.mqsvar -> string -> Mathql_semantics.result
+ Mathql_semantics.result -> MathQL.mqsvar -> string -> Mathql_semantics.result