+ (* ex lexicon commands *)
+ | GrafiteAst.Interpretation (loc, dsc, (symbol, args), cic_appl_pattern) ->
+ let rec disambiguate =
+ function
+ NotationPt.ApplPattern l ->
+ NotationPt.ApplPattern (List.map disambiguate l)
+ | NotationPt.VarPattern id
+ when not
+ (List.exists
+ (function (NotationPt.IdentArg (_,id')) -> id'=id) args)
+ ->
+ let item = DisambiguateTypes.Id id in
+ begin try
+ match DisambiguateTypes.Environment.find item status#lstatus.LexiconTypes.aliases with
+ GrafiteAst.Ident_alias (_, uri) ->
+ NotationPt.NRefPattern (NReference.reference_of_string uri)
+ | _ -> assert false
+ with Not_found ->
+ prerr_endline
+ ("LexiconEngine.eval_command: domain item not found: " ^
+ (DisambiguateTypes.string_of_domain_item item));
+ LexiconEngine.dump_aliases prerr_endline "" status;
+ raise
+ (Failure
+ ((DisambiguateTypes.string_of_domain_item item) ^ " not found"))
+ end
+ | p -> p
+ in
+ let cic_appl_pattern = disambiguate cic_appl_pattern in
+ let status =
+ Interpretations.add_interpretation status
+ dsc (symbol, args) cic_appl_pattern in
+ let mode = GrafiteAst.WithPreferences (*assert false*) in (* VEDI SOTTO *)
+ let diff =
+ [DisambiguateTypes.Symbol (symbol, 0),
+ GrafiteAst.Symbol_alias (symbol,0,dsc)] in
+ let status =
+ LexiconEngine.set_proof_aliases status ~implicit_aliases:false mode diff
+ in
+ status
+ (*assert false*) (* MANCA SALVATAGGIO SU DISCO CHE DEVE TENERE IN CONTO
+ IL MODE WithPreference/WithOutPreferences*)
+ | GrafiteAst.Notation (loc, dir, l1, associativity, precedence, l2) ->
+ let l1 =
+ CicNotationParser.check_l1_pattern
+ l1 (dir = Some `RightToLeft) precedence associativity
+ in
+ let status =
+ if dir <> Some `RightToLeft then
+ GrafiteParser.extend status l1
+ (fun env loc ->
+ NotationPt.AttributedTerm
+ (`Loc loc,TermContentPres.instantiate_level2 env l2))
+ else status
+ in
+ let status =
+ if dir <> Some `LeftToRight then
+ let status = TermContentPres.add_pretty_printer status l2 l1 in
+ status
+ else
+ status
+ in
+(* assert false (* MANCA SALVATAGGIO SU DISCO *) *)
+ status (* capire [] XX *)
+ | GrafiteAst.Alias (loc, spec) ->
+ let diff =
+ (*CSC: Warning: this code should be factorized with the corresponding
+ code in DisambiguatePp *)
+ match spec with
+ | GrafiteAst.Ident_alias (id,uri) ->
+ [DisambiguateTypes.Id id,spec]
+ | GrafiteAst.Symbol_alias (symb, instance, desc) ->
+ [DisambiguateTypes.Symbol (symb,instance),spec]
+ | GrafiteAst.Number_alias (instance,desc) ->
+ [DisambiguateTypes.Num instance,spec]
+ in
+ let mode = assert false in (* VEDI SOPRA *)
+ LexiconEngine.set_proof_aliases status ~implicit_aliases:false mode diff;
+ assert false (* MANCA SALVATAGGIO SU DISCO *)