%% ------------------------- T r a c e r ------------------------------------ %% %% RELFUN-part of the tracer. mh, Jan. 93 %% tracer_print_enter(Head, Clause-n, Redo-p, Print-p, Print-f, Hn_or_ft) tracer_print_enter(Head, Clause-n, Redo-p, false, Print-f, _) :- % do not print but possible inc. level tracer_inc_level(Redo-p). tracer_print_enter(Head, Clause-n, false, true, Print-f, Hn_or_ft) :- % no redo, printing enabled. tracer-increment-level(), Indent .= tracer-print-heading(">"), % Print-f returns the cursor position tracer-print-hn-or-ft(Hn_or_ft, Print-f(head, Indent, Clause-n, Head)), rf-terpri(). tracer_print_enter(Head, Clause-n, true, true, Print-f, Hn_or_ft) :- % redo, printing is enabled. Indent .= tracer-print-heading("|"), % Print-f returns the cursor position: tracer-print-hn-or-ft(Hn_or_ft, Print-f(head, Indent, Clause-n, Head)), rf-terpri(). tracer_print_exit(Head, Clause-n, false, Print-f|Foot) :- % do not print but dec. level tracer-check-max(), tracer-decrement-level(). tracer_print_exit(Head, Clause-n, true, Print-f) :- % hornish clause, printing is enabled Post_head .= Print-f(head, tracer-print-heading("<"), Clause-n, Head), tracer-print-hn-or-ft(hn-exit, Post_head), rf-terpri(), tracer-check-max(), tracer-decrement-level (). tracer_print_exit(Head, Clause-n, true, Print-f, Foot) :- % footed clause, printing is enabled Post_head .= Print-f(head, tracer-print-heading("<"), Clause-n, Head), Post_tag .= tracer-print-hn-or-ft(ft-exit, Post_head), Print-f(foot, Post_tag, Foot), tracer-check-max(), tracer-decrement-level(). %% tracer_print_fail(Functor, Redo-p, Print-p, Print-f) tracer_print_fail(Functor, Redo-p, false, Print-f) :- % do not print but poss. dec. level tracer_dec_level(Redo-p). tracer_print_fail(Functor, true, true, Print-f) :- % printing is enabled, at least one head has been unified Print-f(head, tracer-print-heading("~ "), Functor), tracer_dec_level(true), rf-terpri(). tracer_print_fail(Functor, false, true, Print-f) :- % printing is enabled, no head has been unified Print-f(head, tracer-print-heading("~> "), Functor), rf-terpri(). %% tracer_cut_message(Head, Clause-n, Print-flag, Print-f) tracer_cut_message(_, _, _, _). tracer_cut_message(Head, Clause-n, true, Print-f) :- %% Printing enabled Print-f(head, tracer-print-heading("~!"), Clause-n, Head), tracer-decrement-level(), rf-terpri(), unknown. tracer_cut_message(Head, Clause-n, false, Print-f) :- %% Printing disabled tracer-decrement-level(), unknown. tracer_inc_level(false) :- tracer-increment-level(). % false = Redo-p tracer_inc_level(true). % true = Redo-p tracer_dec_level(true) :- tracer-decrement-level(). % true = Redo-p tracer_dec_level(false). % false = Redo-p % The print-function must return the cursor-pos. tracer_default_printer(head, Indent, Clause-n, Head) :- & tracer-print-head(Indent, Head, Clause-n). tracer_default_printer(head, Indent, Head) :- & tracer-print-head(Indent, Head). tracer_default_printer(foot, Indent, Foot) :- the_foot[Real_foot] .= Foot & tracer-print-foot(Indent, Real_foot). tracer_get_redo_p(Clause_n, Redo_functor, Head) :- & Redo_functor(Clause_n, tracer-cps(Head)). tracer_get_print_flag(Head, Pred, true) :- Pred(Head). tracer_get_print_flag(Head, Pred, false). %% ----------------------- T r a c e r E n d ------------------------------