X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2FmatitaDisambiguator.ml;h=daf64884ca6b89c0e67e966c64ba0c27900e2724;hb=0c6a5aadb1a7746681a8e26fc0b009f847c10557;hp=183e775d0630e4b24c6433f455e5aa52d61adc52;hpb=07dde6f87105c18b28fc784b7d596a5d242e1225;p=helm.git diff --git a/helm/matita/matitaDisambiguator.ml b/helm/matita/matitaDisambiguator.ml index 183e775d0..daf64884c 100644 --- a/helm/matita/matitaDisambiguator.ml +++ b/helm/matita/matitaDisambiguator.ml @@ -25,18 +25,8 @@ class parserr () = object - method parseTerm (stream: char Stream.t) = - CicTextualParser2.parse_term stream - - (* TODO Zack: implements methods below *) - method parseTactic (_: char Stream.t) : DisambiguateTypes.tactic = - MatitaTypes.not_implemented "parserr.parseTactic" - method parseTactical (_: char Stream.t) : DisambiguateTypes.tactical = - MatitaTypes.not_implemented "parserr.parseTactical" - method parseCommand (_: char Stream.t) : DisambiguateTypes.command = - MatitaTypes.not_implemented "parserr.parseCommand" - method parseScript (_: char Stream.t) : DisambiguateTypes.script = - MatitaTypes.not_implemented "parserr.parseScript" + method parseTerm = CicTextualParser2.parse_term + method parseTactical = CicTextualParser2.parse_tactical end class disambiguator @@ -70,13 +60,24 @@ class disambiguator method parserr = parserr method setParserr p = parserr <- p - method disambiguateTermAst - ~context ~metasenv ?(env = DisambiguateTypes.Environment.empty) termAst - = - disambiguate_term mqiconn context metasenv termAst ~aliases:env + val mutable _env = DisambiguateTypes.Environment.empty + method env = _env + method setEnv e = _env <- e + + method disambiguateTermAst ?(context = []) ?(metasenv = []) ?env termAst = + let (save_state, env) = + match env with + | Some env -> (false, env) + | None -> (true, _env) + in + match disambiguate_term mqiconn context metasenv termAst ~aliases:env with + | [ (env, metasenv, term) as x ] -> + if save_state then self#setEnv env; + x + | _ -> assert false - method disambiguateTerm ~context ~metasenv ?env stream = - self#disambiguateTermAst ~context ~metasenv ?env + method disambiguateTerm ?context ?metasenv ?env stream = + self#disambiguateTermAst ?context ?metasenv ?env (parserr#parseTerm stream) end