X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=inline;f=helm%2Fsoftware%2Fmatita%2FmatitaEngine.ml;h=a8dcf98092e29a8d68009d012a6469ed3542f18f;hb=11b2157bacf59cfc561c2ef6f92ee41ee2c1a006;hp=5468c863a97f8ac1af856d9f17b7cde2aa850257;hpb=cb25e0f32f7581e1a49d1d1c109108763dfb882c;p=helm.git diff --git a/helm/software/matita/matitaEngine.ml b/helm/software/matita/matitaEngine.ml index 5468c863a..a8dcf9809 100644 --- a/helm/software/matita/matitaEngine.ml +++ b/helm/software/matita/matitaEngine.ml @@ -25,7 +25,7 @@ (* $Id$ *) -open Printf +module G = GrafiteAst let debug = false ;; let debug_print = if debug then prerr_endline else ignore ;; @@ -61,6 +61,7 @@ let disambiguate_macro lexicon_status_ref grafite_status macro context = let eval_ast ?do_heavy_checks lexicon_status grafite_status (text,prefix_len,ast) = + let dump = not (Helm_registry.get_bool "matita.moo") in let lexicon_status_ref = ref lexicon_status in let baseuri = GrafiteTypes.get_baseuri grafite_status in let changed_lexicon = ref false in @@ -76,11 +77,18 @@ let eval_ast ?do_heavy_checks lexicon_status { s with NTacStatus.istatus = { s.NTacStatus.istatus with NTacStatus.lstatus = lexicon_status }}} in let new_grafite_status,new_objs = + match ast with + | G.Executable (_, G.Command (_, G.Coercion _)) when dump -> +(* FG: some commands can not be executed when mmas are parsed *************) +(* To be removed when mmas will be executed *) + grafite_status, `Old [] + | ast -> GrafiteEngine.eval_ast ~disambiguate_tactic:(wrap (disambiguate_tactic text prefix_len lexicon_status_ref)) ~disambiguate_command:(wrap (disambiguate_command lexicon_status_ref)) ~disambiguate_macro:(wrap (disambiguate_macro lexicon_status_ref)) - ?do_heavy_checks grafite_status (text,prefix_len,ast) in + ?do_heavy_checks grafite_status (text,prefix_len,ast) + in let new_lexicon_status = if !changed_lexicon then !lexicon_status_ref @@ -103,7 +111,15 @@ let eval_ast ?do_heavy_checks lexicon_status UriManager.buri_of_uri (UriManager.uri_of_string v) = baseuri with - UriManager.IllFormedUri _ -> false (* v is a description, not a URI *) + UriManager.IllFormedUri _ -> + try + (* this too! *) + let NReference.Ref (uri,_) = NReference.reference_of_string v in + let ouri = NCic2OCic.ouri_of_nuri uri in + UriManager.buri_of_uri ouri = baseuri + with + NReference.IllFormedReference _ -> + false (* v is a description, not a URI *) in if b then lexicon_status,acc @@ -119,11 +135,7 @@ let eval_ast ?do_heavy_checks lexicon_status ((new_grafite_status,new_lexicon_status),None)::intermediate_states exception TryingToAdd of string -exception EnrichedWithLexiconStatus of exn * LexiconEngine.status - -let out = ref ignore - -let set_callback f = out := f +exception EnrichedWithStatus of exn * LexiconEngine.status * GrafiteTypes.status let eval_from_stream ~first_statement_only ~include_paths ?do_heavy_checks ?(enforce_no_new_aliases=true) @@ -152,7 +164,6 @@ let eval_from_stream ~first_statement_only ~include_paths false, lexicon_status, grafite_status, (((grafite_status,lexicon_status),None)::statuses) | GrafiteParser.LSome ast -> - !out ast; cb grafite_status ast; let new_statuses = eval_ast ?do_heavy_checks lexicon_status @@ -173,7 +184,7 @@ let eval_from_stream ~first_statement_only ~include_paths watch_statuses lexicon_status grafite_status ; false, lexicon_status, grafite_status, (new_statuses @ statuses)) with exn when not matita_debug -> - raise (EnrichedWithLexiconStatus (exn, lexicon_status)) + raise (EnrichedWithStatus (exn, lexicon_status, grafite_status)) in if stop then s else loop l g s in