let parse_environment str =
let stream = Stream.of_string str in
let environment = ref Environment.empty in
+ let multiple_environment = ref Environment.empty in
try
while true do
let alias =
Num instance,
DisambiguateChoices.lookup_num_by_dsc desc
in
- environment := Environment.cons key value !environment;
+ environment := Environment.add key value !environment;
+ multiple_environment := Environment.cons key value !multiple_environment;
done;
assert false
with End_of_file ->
- !environment
+ !environment, !multiple_environment
let aliases_of_environment env =
Environment.fold
- (fun domain_item codomain_items acc ->
- List.fold_left
- (fun strings (dsc, _) ->
- let s =
- match domain_item with
- | Id id -> GrafiteAst.Ident_alias (id, dsc)
- | Symbol (symb, i) -> GrafiteAst.Symbol_alias (symb, i, dsc)
- | Num i -> GrafiteAst.Number_alias (i, dsc)
- in
- s :: strings)
- acc codomain_items)
+ (fun domain_item (dsc,_) acc ->
+ let s =
+ match domain_item with
+ | Id id -> GrafiteAst.Ident_alias (id, dsc)
+ | Symbol (symb, i) -> GrafiteAst.Symbol_alias (symb, i, dsc)
+ | Num i -> GrafiteAst.Number_alias (i, dsc)
+ in
+ s :: acc)
env []
let commands_of_environment env =