(** {2 Disambiguation interface} *)
-(** raised when ambiguous input is found but not expected (e.g. in the batch
- * compiler) *)
-exception Ambiguous_input
-
-(* the integer is an offset to be added to each location *)
-(* list of located error messages, each list is a tuple:
- * - environment in string form
- * - environment patch
- * - location
- * - error message
- * - significancy of the error message, if false the error is likely to be
- * useless for the final user ... *)
+type ('alias,'ast_thing,'metasenv,'subst,'thing,'ugraph) disamb_result =
+ | Disamb_success of ('ast_thing * 'metasenv * 'subst * 'thing * 'ugraph) list
+ | Disamb_failure of
+ (('ast_thing * 'alias option * Stdpp.location * string) list * Stdpp.location) list *
+ (('ast_thing * 'alias option * Stdpp.location * string) list * Stdpp.location) list
+
exception NoWellTypedInterpretation of
- int *
- ((Stdpp.location list * string * string) list *
- (DisambiguateTypes.domain_item * string) list *
- (Stdpp.location * string) Lazy.t *
- bool) list
+ ((Stdpp.location * string) list *
+ (Stdpp.location * string) list)
+
exception PathNotWellFormed
type 'a disambiguator_input = string * int * 'a
exception Try_again of string Lazy.t
+(*
val set_choose_uris_callback:
DisambiguateTypes.interactive_user_uri_choice_type -> unit
val set_choose_interp_callback:
DisambiguateTypes.interactive_interpretation_choice_type -> unit
+val set_choose_disamb_callback:
+ DisambiguateTypes.interactive_ast_choice_type -> unit
+
(** @raise Ambiguous_input if called, default value for internal
* choose_uris_callback if not set otherwise with set_choose_uris_callback
* above *)
* choose_interp_callback if not set otherwise with set_choose_interp_callback
* above *)
val mono_interp_callback: DisambiguateTypes.interactive_interpretation_choice_type
+*)
val resolve :
- env:'alias DisambiguateTypes.Environment.t ->
- mk_choice:('alias -> 'term DisambiguateTypes.codomain_item) ->
- DisambiguateTypes.Environment.key ->
+ env:'alias1 DisambiguateTypes.InterprEnv.t ->
+ universe: GrafiteAst.alias_spec list DisambiguateTypes.Environment.t ->
+ mk_choice:('alias1 -> 'term DisambiguateTypes.codomain_item) ->
+ DisambiguateTypes.InterprEnv.key -> 'alias1 option ->
[`Num_arg of string | `Args of 'term list] -> 'term
val find_in_context: string -> string option list -> int
val domain_of_obj:
context:string option list -> NotationPt.term NotationPt.obj -> domain
-(* val disambiguate_list :
- context:'context ->
- metasenv:'metasenv ->
- subst:'subst ->
- use_coercions:bool ->
- expty:'refined_thing option ->
- env:GrafiteAst.alias_spec DisambiguateTypes.Environment.t ->
- uri:'uri ->
- interpretate_thing:(context:'context ->
- env:GrafiteAst.alias_spec DisambiguateTypes.Environment.t ->
- uri:'uri ->
- is_path:bool ->
- 'ast_thing -> localization_tbl:'cic_hash -> 'raw_thing) ->
- refine_thing:('metasenv -> 'subst -> 'context -> 'uri ->
- use_coercions:bool -> 'raw_thing -> 'refined_thing option ->
- 'ugraph -> localization_tbl:'cic_hash ->
- ('refined_thing, 'metasenv, 'subst, 'ugraph) test_result) ->
- ugraph:'ugraph ->
- visit:((NotationPt.term -> bool) -> 'ast_thing ->
- ((NotationPt.term -> 'ast_thing) * NotationPt.term) option) ->
- universe:GrafiteAst.alias_spec list DisambiguateTypes.Environment.t ->
- mk_localization_tbl:(int -> 'cic_hash) ->
- 'ast_thing list -> ('ast_thing * 'ast_thing list) option
-*)
-
-(* val initialize_ast : unit *)
-
val disambiguate_thing:
context:'context ->
metasenv:'metasenv ->
mk_implicit:(bool -> 'alias) ->
description_of_alias:('alias -> string) ->
fix_instance:(DisambiguateTypes.domain_item -> 'alias list -> 'alias list) ->
- aliases:'alias DisambiguateTypes.Environment.t ->
+ aliases:'alias DisambiguateTypes.InterprEnv.t ->
universe:GrafiteAst.alias_spec list DisambiguateTypes.Environment.t ->
lookup_in_library:(
DisambiguateTypes.interactive_user_uri_choice_type ->
domain_of_thing:(context: string option list -> 'ast_thing -> domain) ->
interpretate_thing:(
context:'context ->
- env:'alias DisambiguateTypes.Environment.t ->
+ env:'alias DisambiguateTypes.InterprEnv.t ->
+ universe: GrafiteAst.alias_spec list DisambiguateTypes.Environment.t ->
uri:'uri ->
is_path:bool ->
'ast_thing ->
('refined_thing, 'metasenv,'subst,'ugraph) test_result) ->
visit:(pp_term:(NotationPt.term -> string) ->
(NotationPt.term -> bool) -> 'ast_thing ->
- ((NotationPt.term -> 'ast_thing) * NotationPt.term) option) ->
+ ((NotationPt.term -> 'ast_thing) * NotationPt.term * Stdpp.location) option) ->
mk_localization_tbl:(int -> 'cichash) ->
'ast_thing disambiguator_input ->
- ((DisambiguateTypes.Environment.key * 'alias) list *
- 'metasenv * 'subst * 'refined_thing * 'ugraph)
- list * bool
+ (GrafiteAst.alias_spec,'ast_thing,'metasenv,'subst,'refined_thing,'ugraph) disamb_result
+
+type 'ast marked_ast =
+ (NotationPt.term -> 'ast) * NotationPt.term * Stdpp.location
val bfvisit :
pp_term:(NotationPt.term -> string) ->
(NotationPt.term -> bool) ->
- NotationPt.term -> ((NotationPt.term -> NotationPt.term) * NotationPt.term) option
+ NotationPt.term -> (NotationPt.term marked_ast) option
val bfvisit_obj :
pp_term:(NotationPt.term -> string) ->
(NotationPt.term -> bool) ->
- NotationPt.term NotationPt.obj -> ((NotationPt.term -> NotationPt.term NotationPt.obj) * NotationPt.term) option
+ NotationPt.term NotationPt.obj ->
+ ((NotationPt.term NotationPt.obj) marked_ast) option