]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_disambiguation/disambiguatePp.ml
A parser for aliases implemented (required by the Whelp).
[helm.git] / helm / ocaml / cic_disambiguation / disambiguatePp.ml
index decaa5f5c6e9a8b13f2ecba403a9412d2d3970a5..d6a33cfaedf76a1daa38daa1e1279a8d9f024d21 100644 (file)
 
 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.add key value !environment;
+    done;
+    assert false
+  with End_of_file ->
+   !environment
+
 let pp_environment env =
   let aliases =
     Environment.fold