]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/mathql/grammar.txt
ocaml 3.09 transition
[helm.git] / helm / mathql / grammar.txt
index 979b4c549cd2f21fb0437ea10f4e18086769cd64..5622761a3381db959570f04bbd778f456bc1d31f 100644 (file)
@@ -16,8 +16,10 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
        |  SELECT <rvar> IN <set> WHERE <bool>  (* selezione *)
        |  LET <svar> BE <set> IN <set>         (* assegnazione a set-var in 
                                                   contesto *)
-       |  <relation> <quoted-constant-string> <set> ATTR <vvar-list>           
-                                               (* unione insieme risorse in
+       |  LET <vvar> BE <string-set> IN <set>  (* assegnamento a value-var
+                                                 in contesto*)
+       |  RELATION <refine_op> <quoted-constant-string-path> <set> ATTR <vvar-list>
+                                                      (* unione insieme risorse in
                                                  relazione specificata con le
                                                  risorse in set, ognuna con 
                                                  attributi (ATTR) *)
@@ -25,12 +27,18 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
        |  <set> INTERSECT <set>                (* intersezione *)
        |  <set> DIFF <set>                     (* differenza *)
 
-<relation> := RELATION                        (* relazione (proprieta') *)
-          |  SUBRELATION                      (* proprieta' e 
+<refine_op> := ""                             (* relazione (proprieta') *)
+           |  SUB                             (* proprieta' e 
                                                  sotto-proprieta' *)
-          |  SUPERRELATION                    (* proprieta' e 
+           |  SUPER                           (* proprieta' e 
                                                  super-proprieta' *)
 
+<quoted-constant-string-path> := <quoted-constant-string> 
+                                              (* relazione (proprieta') *)
+                             |  <quoted-constant-string> "/" <quoted-constant-string-path>
+                                              (* insieme di stringhe:
+                                                 proprieta' strutturata *)
+
 <vvar-list> := <vvar>
             |  <vvar> , <vvar-list>
 
@@ -49,17 +57,19 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
                                                  insiemi stringhe *)
        |  EX <bool>                           (* existential on attributes
                                                  of references *)
-<string-set> := {}                                (* insieme vuoto*)
-            |  <quoted-constant-string-set>       (* stringa singoletto *)
-             |  {<quoted-constant-string-set>}    (* insieme stringhe *)
-             |  REFOF <set>                       (* insieme riferimenti *)
-             |  <rvar>.<vvar>                      (* variabile per insieme
-                                                     stringhe, relativa a 
-                                                     riferimento *)
+<string-set> := ( <string-set> )               (* parentesizzazione *)
+             |  {}                            (* insieme vuoto*)
+            |  <quoted-constant-string>       (* stringa singoletto *)
+             |  {<quoted-constant-string-list>}(* insieme stringhe *)
+             |  REFOF <set>                   (* insieme riferimenti *)
+             |  <rvar>.<vvar>                  (* variabile per insieme
+                                                 stringhe, relativa a 
+                                                 riferimento *)
             |  <function> <quoted-constant-string> <string-set> 
-                                                  (* applicazione di funzione
-                                                     specificata a riferimento
-                                                     o insiemi di rif. o var*)
+                                              (* applicazione di funzione
+                                                 specificata a riferimento
+                                                 o insiemi di rif. o var*)
+             |  <vvar>                        (* vvar introduced by LET *)
 
 <quoted-constant-string-list> := <quoted-constant-string>
                              |  <quoted-constant-string> , <quoted-constant-string-list>                                                 
@@ -68,12 +78,11 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
 <function> := FUN                         (* funzione generale *)
           |  <property>        
 
-<property> := ATTRIBUTE                           (* funzione proprieta': restituisce
-                                             suoi  valori*)
-           |  SUBATTR                     (* restituisce valori proprieta' e 
-                                             sotto-proprieta' di *) 
-           |  SUPERATTR                           (* restituisce valori proprieta' e 
-                                             super-proprieta' di *)
+<property> := ATTRIBUTE        <refine-op>        (* funzione proprieta': restituisce
+                                             suoi valori (anche strutturati)
+                                             (e delle sotto-proprieta' o 
+                                             super-proprieta' *)
+
 
 <rvar> := @ <not-reserved-identifier>          (* variabile per riferimento *)
 <vvar> := $ <not-reserved-identifier>          (* variabile per insiemi 
@@ -99,7 +108,7 @@ MATHEMATICAL QUERY LANGUAGE (MathQL)
 - REF aumenta performance perche' NON accede al data base (costoso).
 - l'argomento di PATTERN ha sintassi di una espressione regolare 
   POSIX 1003.2-1992
-- Possibile <function> (<quoted-constant-string>):
+- Possibile FUN (<quoted-constant-string>):
   NAME (* URIREF -> nome_oggetto *)
 - MEET aumenta performance nel caso si verifichi (a in S) oppure 
   (b in S) = ({a,b} meet S) perche' valuta S una volta sola