]> matita.cs.unibo.it Git - helm.git/blobdiff - matitaB/components/disambiguation/disambiguateTypes.ml
Keeping track of locations of disambiguated ids and symbols.
[helm.git] / matitaB / components / disambiguation / disambiguateTypes.ml
index 8db0c220d302e46bdd9b3a210880dff6a170ae90..4e74e4a3de8ba87f756a36521825db6f6ad43f91 100644 (file)
 
 (* $Id$ *)
 
+(*
 type domain_item =
  | Id of (string * string option)              (* literal, opt. uri *)
  | Symbol of string * (string option * string) option (* literal, opt. (uri,interp.) *)
  | Num of (string option * string) option             (* opt. uri, interpretation *)
+*)
 
-(*
 type domain_item =
  | Id of string     (* literal *)
  | Symbol of string (* literal *)
  | Num 
- *)
 
 exception Invalid_choice of (Stdpp.location * string) Lazy.t
 
 module OrderedDomain =
   struct
     type t = domain_item
+    (*
+    let compare a b = 
+      match a,b with
+      | Id (x,None), Id (y,_)
+      | Id (x,_), Id (y,None) when x = y -> 0
+      | Symbol (x,None), Symbol (y,_)
+      | Symbol (x,_), Symbol (y,None) when x = y -> 0
+      | _ -> Pervasives.compare a b *)
     let compare = Pervasives.compare
   end
 
@@ -54,40 +62,19 @@ struct
 
   let find k env =
     try find k env 
-    with Not_found -> 
+    with Not_found ->
+           (* 
       match k with
        | Symbol (sym,_) -> find (Symbol (sym,None)) env
        | Num _ -> find (Num None) env
        | Id (id,_) -> find (Id (id,None)) env 
+       *) raise Not_found
 
   let cons desc_of_alias k v env =
-    let default_dom_item = function
-    | Id (s,_) -> Id (s,None)
-    | Symbol (s,_) -> Symbol (s,None)
-    | Num _ -> Num None
-    in
-    (*
-    try
-      let current = find k env in
-      let dsc = desc_of_alias v in
-      let entry = v::(List.filter (fun x -> desc_of_alias x <> dsc) current) in
-      let id = match k with
-        | Id (id,_) -> id
-        | Symbol (sym,_) -> "SYMBOL:"^sym
-        | Num _ -> "NUM"
-      in
-      prerr_endline (Printf.sprintf "updated alias for %s with entry of length %d (was: %d)" id (List.length entry) (List.length current));
-      let res = add k entry env
-      in
-      let test = find k res in
-      prerr_endline (Printf.sprintf "so the current length of the entry is %d."
-        (List.length test));
-      res
-    with Not_found -> add k [v] env
-    *)
+    let default_dom_item x = x in
     let env' =
       try
-        let current = find k env in
+        let current = Environment'.find k env in
         let dsc = desc_of_alias v in
         add k (v :: (List.filter (fun x -> desc_of_alias x <> dsc) current)) env
       with Not_found ->
@@ -104,6 +91,14 @@ struct
 
 end
 
+module InterprOD =
+  struct
+    type t = Stdpp.location
+    let compare = Pervasives.compare
+  end
+
+module InterprEnv = Map.Make (InterprOD)
+
 type 'term codomain_item =
   string *  (* description *)
    [`Num_interp of string -> 'term
@@ -119,9 +114,12 @@ type interactive_user_uri_choice_type =
 type interactive_interpretation_choice_type = string -> int ->
   (Stdpp.location list * string * string) list list -> int list
 
+type interactive_ast_choice_type = string list -> int
+
 type input_or_locate_uri_type = 
   title:string -> ?id:string -> unit -> NReference.reference option
 
+(*
 let string_of_domain_item item =
   let f_opt f x default =
     match x with
@@ -131,7 +129,20 @@ let string_of_domain_item item =
   match item with
   | Id (s,huri) -> 
      Printf.sprintf "ID(%s,%s)" s (f_opt (fun x -> x) huri "_")
-  | Symbol (s,_) -> Printf.sprintf "SYMBOL(%s)" s
+  | Symbol (s,None) -> Printf.sprintf "SYMBOL(%s)" s
+  | Symbol (s,Some (_,dsc)) -> Printf.sprintf "SYMBOL(%s,%s)" s dsc
   | Num _ -> "NUM"
 ;;
-
+*)
+let string_of_domain_item item =
+  let f_opt f x default =
+    match x with
+    | None -> default
+    | Some y -> f y
+  in
+  match item with
+  | Id s -> 
+     Printf.sprintf "ID(%s)" s
+  | Symbol s -> Printf.sprintf "SYMBOL(%s)" s
+  | Num -> "NUM"
+;;