X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_disambiguation%2FdisambiguatePp.ml;h=24f9ea37ea1b319f166cc17090fa4ec42564df7c;hb=acd8ad809af863ee2a1b584959d8fca3eac722fa;hp=decaa5f5c6e9a8b13f2ecba403a9412d2d3970a5;hpb=d83fc9accd4ba44a6296eb707b2f62900380f00a;p=helm.git diff --git a/helm/ocaml/cic_disambiguation/disambiguatePp.ml b/helm/ocaml/cic_disambiguation/disambiguatePp.ml index decaa5f5c..24f9ea37e 100644 --- a/helm/ocaml/cic_disambiguation/disambiguatePp.ml +++ b/helm/ocaml/cic_disambiguation/disambiguatePp.ml @@ -25,21 +25,54 @@ open DisambiguateTypes +let parse_environment str = + let stream = Stream.of_string str in + let environment = ref Environment.empty in + try + while true do + let alias = + match GrafiteParser.parse_statement stream with + GrafiteAst.Executable (_, GrafiteAst.Command (_, GrafiteAst.Alias (_,alias))) + -> alias + | _ -> assert false in + let key,value = + (*CSC: Warning: this code should be factorized with the corresponding + code in MatitaEngine *) + match alias with + GrafiteAst.Ident_alias (id,uri) -> + Id id, + (uri,(fun _ _ _-> CicUtil.term_of_uri (UriManager.uri_of_string uri))) + | GrafiteAst.Symbol_alias (symb,instance,desc) -> + Symbol (symb,instance), + DisambiguateChoices.lookup_symbol_by_dsc symb desc + | GrafiteAst.Number_alias (instance,desc) -> + Num instance, + DisambiguateChoices.lookup_num_by_dsc desc + in + environment := Environment.cons key value !environment; + done; + assert false + with End_of_file -> + !environment + let pp_environment env = let aliases = Environment.fold - (fun domain_item (dsc, _) acc -> - let s = - match domain_item with - | Id id -> - GrafiteAstPp.pp_alias (GrafiteAst.Ident_alias (id, dsc)) ^ "." - | Symbol (symb, i) -> - GrafiteAstPp.pp_alias (GrafiteAst.Symbol_alias (symb, i, dsc)) - ^ "." - | Num i -> - GrafiteAstPp.pp_alias (GrafiteAst.Number_alias (i, dsc)) ^ "." - in - s :: acc) + (fun domain_item codomain_items acc -> + List.fold_left + (fun strings (dsc, _) -> + let s = + match domain_item with + | Id id -> + GrafiteAstPp.pp_alias (GrafiteAst.Ident_alias (id, dsc)) ^ "." + | Symbol (symb, i) -> + GrafiteAstPp.pp_alias (GrafiteAst.Symbol_alias (symb, i, dsc)) + ^ "." + | Num i -> + GrafiteAstPp.pp_alias (GrafiteAst.Number_alias (i, dsc)) ^ "." + in + s :: strings) + acc codomain_items) env [] in String.concat "\n" (List.sort compare aliases)