]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/mathql_interpreter/mQueryInterpreter.ml
* removed currified constructors everywhere. A bug in the ocaml compiler
[helm.git] / helm / ocaml / mathql_interpreter / mQueryInterpreter.ml
index 58fb7b87e734545491f893046333a50a85265bf0..b2bfd445dd59ae71d247bcea7b6800a7a6d90c42 100644 (file)
@@ -64,7 +64,7 @@ let execute h x =
       | M.True -> U.mql_true
       | M.Const s -> [s]
       | M.Set l -> U.iter (eval_val c) l
-      | M.Test k y1 y2 ->
+      | M.Test (k,y1,y2) ->
          let cand y1 y2 =
            if eval_val c y1 = U.mql_false then U.mql_false else eval_val c y2
         in
@@ -89,16 +89,16 @@ let execute h x =
       | M.VVar i -> begin
          try List.assoc i c.vvars 
          with Not_found -> warn (M.Subj (M.VVar i)); [] end
-      | M.Dot i p -> begin
+      | M.Dot (i,p) -> begin
          try List.assoc p (List.assoc i c.groups) 
-        with Not_found -> warn (M.Subj (M.Dot i p)); [] end
-      | M.Proj None x -> List.map (fun (r, _) -> r) (eval_query c x)
-      | M.Proj (Some p) x -> 
+        with Not_found -> warn (M.Subj (M.Dot (i,p))); [] end
+      | M.Proj (None,x) -> List.map (fun (r, _) -> r) (eval_query c x)
+      | M.Proj ((Some p),x) -> 
          let proj_group_aux (q, v) = if q = p then v else [] in 
          let proj_group a = U.iter proj_group_aux a in
          let proj_set (_, g) = U.iter proj_group g in
          U.iter proj_set (eval_query c x)
-      | M.Ex l y -> 
+      | M.Ex (l,y) -> 
          let rec ex_aux h = function
            | []        -> 
               let d = {c with groups = h} in
@@ -123,12 +123,12 @@ let execute h x =
          C.log h (Printf.sprintf "Stat: %s,%i\n" s (List.length r));
         r
       | M.Count y -> [string_of_int (List.length (eval_val c y))]
-      | M.Align s y -> U.iter (U.align s) (eval_val c y)
+      | M.Align (s,y) -> U.iter (U.align s) (eval_val c y)
    and eval_query c = function
       | M.Empty -> [] 
       | M.Subj x ->
          List.map (fun s -> (s, [])) (eval_val c x)
-      | M.Log _ b x ->
+      | M.Log (_,b,x) ->
          if b then begin
            let t = P.start_time () in
            P.text_of_query (C.log h) x "\n";
@@ -145,10 +145,10 @@ let execute h x =
               C.log h (Printf.sprintf "Log: %s\n" r);
            s
         end
-      | M.If y x1 x2 ->
+      | M.If (y,x1,x2) ->
          if (eval_val c y) = U.mql_false 
            then (eval_query c x2) else (eval_query c x1)
-      | M.Bin k x1 x2 ->
+      | M.Bin (k,x1,x2) ->
          let f = match k with
            | M.BinFJoin -> U.mql_union
            | M.BinFMeet -> U.mql_intersect
@@ -161,13 +161,13 @@ let execute h x =
       | M.AVar i -> begin
          try [List.assoc i c.avars] 
         with Not_found -> warn (M.AVar i); [] end
-      | M.LetSVar i x1 x2 ->
+      | M.LetSVar (i,x1,x2) ->
         let d = {c with svars = U.set (i, eval_query c x1) c.svars} in
          eval_query d x2
-      | M.LetVVar i y x ->
+      | M.LetVVar (i,y,x) ->
         let d = {c with vvars = U.set (i, eval_val c y) c.vvars} in
          eval_query d x
-      | M.For k i x1 x2 ->
+      | M.For (k,i,x1,x2) ->
          let f = match k with
            | M.GenFJoin -> U.mql_union
            | M.GenFMeet -> U.mql_intersect
@@ -179,11 +179,11 @@ let execute h x =
               f (eval_query d x2) (for_aux t)
         in
         for_aux (eval_query c x1)
-      | M.Add b z x ->
+      | M.Add (b,z,x) ->
          let f = if b then U.mql_prod else U.set_union in
         let g a s = (fst a, f (snd a) (eval_grp c z)) :: s in
         List.fold_right g (eval_query c x) []
-      | M.Property q0 q1 q2 mc ct cfl el pat y ->
+      | M.Property (q0,q1,q2,mc,ct,cfl,el,pat,y) ->
         let subj, mct = 
            if q0 then [], (pat, q2 @ mc, eval_val c y)
                  else (q2 @ mc), (pat, [], eval_val c y)  
@@ -205,7 +205,7 @@ let execute h x =
         let s = P.stop_time t in
          C.log h (Printf.sprintf "Stat: %s,%i\n" s (List.length r));
         r
-      | M.Select i x y ->
+      | M.Select (i,x,y) ->
          let rec select_aux = function
            | []     -> []
            | h :: t ->
@@ -214,7 +214,7 @@ let execute h x =
                  then select_aux t else h :: select_aux t
         in
         select_aux (eval_query c x)
-      | M.Keep b l x -> 
+      | M.Keep (b,l,x) -> 
          let keep_path (p, v) t = 
            if List.mem p l = b then t else (p, v) :: t in
         let keep_grp a = List.fold_right keep_path a [] in