(* $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
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 ->
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
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
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"
+;;