X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2FmatitaDisambiguator.ml;h=178c7d8c7f18372fc4c1b768470c4e09d2183921;hb=7e9904185ceff75884783dbf0bad506b8521b857;hp=5b95f4192854fd05fc8efe6f814d87b714925a06;hpb=c4afa186c53998a10eab85d3fcc113b07bccfdf9;p=helm.git diff --git a/helm/matita/matitaDisambiguator.ml b/helm/matita/matitaDisambiguator.ml index 5b95f4192..178c7d8c7 100644 --- a/helm/matita/matitaDisambiguator.ml +++ b/helm/matita/matitaDisambiguator.ml @@ -31,10 +31,12 @@ class parserr () = method parseTactical = CicTextualParser2.parse_tactical end -class disambiguator - ~parserr ~dbd ~(chooseUris: MatitaTypes.choose_uris_callback) - ~(chooseInterp: MatitaTypes.choose_interp_callback) () - = +let parserr () = new parserr () +let parserr_instance = MatitaMisc.singleton parserr + +class disambiguator () = + let _chooseUris = ref mono_uris_callback in + let _chooseInterp = ref mono_interp_callback in let disambiguate_term = let module Callbacks = struct @@ -42,30 +44,38 @@ class disambiguator ~selection_mode ?ok ?(enable_button_for_non_vars = true) ~title ~msg ~id uris = - chooseUris ~selection_mode ~title ~msg + !_chooseUris ~selection_mode ~title ~msg ~nonvars_button:enable_button_for_non_vars uris - let interactive_interpretation_choice = chooseInterp + let interactive_interpretation_choice interp = !_chooseInterp interp + let input_or_locate_uri ~(title:string) ?id = (* Zack: I try to avoid using this callback. I therefore assume that * the presence of an identifier that can't be resolved via "locate" * query is a syntax error *) - let msg = match id with Some id -> id | _ -> "" in + let msg = match id with Some id -> id | _ -> "_" in raise (Unbound_identifier msg) end in let module Disambiguator = Disambiguate.Make (Callbacks) in - Disambiguator.disambiguate_term + Disambiguator.disambiguate_term in object (self) - val mutable parserr: parserr = parserr - method parserr = parserr - method setParserr p = parserr <- p - val mutable _env = DisambiguateTypes.Environment.empty method env = _env method setEnv e = _env <- e + method chooseUris = !_chooseUris + method setChooseUris f = _chooseUris := f + + method chooseInterp = !_chooseInterp + method setChooseInterp f = _chooseInterp := f + + val parserr = parserr_instance () + method parserr = parserr + + val dbd = MatitaMisc.dbd_instance () + method disambiguateTermAst ?(context = []) ?(metasenv = []) ?env termAst = let (save_state, env) = match env with @@ -91,3 +101,6 @@ class disambiguator (parserr#parseTerm stream) end +let disambiguator () = new disambiguator () +let instance = MatitaMisc.singleton disambiguator +