improve prism compatibility (fix asia).
This commit is contained in:
parent
524edecdd3
commit
84b0529060
@ -81,10 +81,10 @@ getclauses1(File, Prog, _Opts) :-
|
|||||||
|
|
||||||
'$bpe_process_pred'([], _F, N, Mode, _Delay, _Tabled, []) -->
|
'$bpe_process_pred'([], _F, N, Mode, _Delay, _Tabled, []) -->
|
||||||
{ '$init_mode'(N, Mode) }.
|
{ '$init_mode'(N, Mode) }.
|
||||||
'$bpe_process_pred'(Call.Prog0, F,N,Modes,Delay,Tabled, Cls0) -->
|
'$bpe_process_pred'([Call|Prog0], F,N, Modes, Delay, Tabled, Cls0) -->
|
||||||
{ '$get_pred'(Call, F, N, Modes, Delay, Tabled, Cls0, ClsI) }, !,
|
{ '$get_pred'(Call, F, N, Modes, Delay, Tabled, Cls0, ClsI) }, !,
|
||||||
'$bpe_process_pred'(Prog0, F,N,Modes,Delay,Tabled, ClsI).
|
'$bpe_process_pred'(Prog0, F, N, Modes, Delay, Tabled, ClsI).
|
||||||
'$bpe_process_pred'(Call.Prog0, F,N,Modes,Delay,Tabled, Cls0) -->
|
'$bpe_process_pred'([Call|Prog0], F, N, Modes, Delay, Tabled, Cls0) -->
|
||||||
[ Call ],
|
[ Call ],
|
||||||
'$bpe_process_pred'(Prog0, F,N,Modes,Delay,Tabled, Cls0).
|
'$bpe_process_pred'(Prog0, F,N,Modes,Delay,Tabled, Cls0).
|
||||||
|
|
||||||
@ -97,21 +97,22 @@ getclauses1(File, Prog, _Opts) :-
|
|||||||
'$get_pred'((P :- Q), F, N, _Modes, _Delay, _Tabled) -->
|
'$get_pred'((P :- Q), F, N, _Modes, _Delay, _Tabled) -->
|
||||||
{ functor(P, F, N), ! },
|
{ functor(P, F, N), ! },
|
||||||
[(P:-Q)].
|
[(P:-Q)].
|
||||||
'$get_pred'((:- mode Q), F, N, _Modes, _Delay, _Tabled) -->
|
'$get_pred'((:- mode Q), F, N, Modes, _Delay, _Tabled) -->
|
||||||
{ functor(Q, F, N), !, Q =.. [_|Modes0],
|
{ functor(Q, F, N), !, Q =.. [_|Modes0],
|
||||||
'$bpe_cvt_modes'(Modes0,Modes,[])
|
'$bpe_cvt_modes'(Modes0, Modes, [])
|
||||||
},
|
},
|
||||||
[].
|
[].
|
||||||
%'$get_pred'((:- table _), F, N, Modes, Delay, Tabled) -->
|
%'$get_pred'((:- table _), F, N, Modes, Delay, Tabled) -->
|
||||||
% { functor(Q, F, N), !, Q =.. [_|Modes] },
|
% { functor(Q, F, N), !, Q =.. [_|Modes] },
|
||||||
% [].
|
% [].
|
||||||
'$get_pred'((:- _), _F, _N, _Modes, _Delay, _Tabled) --> !, { fail }.
|
'$get_pred'((:- Q), '$damon_load', 0, _Modes, _Delay, _Tabled) -->
|
||||||
|
[ ('$damon_load' :- '$query'( Q ) )].
|
||||||
'$get_pred'((P), F, N, _Modes, _Delay, _Tabled) -->
|
'$get_pred'((P), F, N, _Modes, _Delay, _Tabled) -->
|
||||||
{ functor(P, F, N), ! },
|
{ functor(P, F, N), ! },
|
||||||
[(P)].
|
[(P)].
|
||||||
|
|
||||||
|
|
||||||
'$bpe_cvt_modes'(Mode.Modes0) --> [NewMode],
|
'$bpe_cvt_modes'([Mode|Modes0]) --> [NewMode],
|
||||||
{ '$bpe_cvt_mode'(Mode, NewMode) },
|
{ '$bpe_cvt_mode'(Mode, NewMode) },
|
||||||
'$bpe_cvt_modes'(Modes0).
|
'$bpe_cvt_modes'(Modes0).
|
||||||
'$bpe_cvt_modes'([]) --> [].
|
'$bpe_cvt_modes'([]) --> [].
|
||||||
@ -127,20 +128,40 @@ preprocess_cl(Cl, Cl, _, _, _, _).
|
|||||||
|
|
||||||
phase_1_process(Prog, Prog).
|
phase_1_process(Prog, Prog).
|
||||||
|
|
||||||
compileProgToFile(_,_File,[]).
|
compileProgToFile(_, _File, []).
|
||||||
compileProgToFile(_,File,pred(F,N,_,_,Tabled,Clauses).Prog2) :-
|
compileProgToFile(_, File, [Pred|Prog2]) :-
|
||||||
|
consult_pred(Pred),
|
||||||
|
compileProgToFile(_, File, Prog2).
|
||||||
|
|
||||||
|
consult_preds([], L) :- !,
|
||||||
|
consult_preds(L).
|
||||||
|
consult_preds(L0, L) :-
|
||||||
|
writeln(consult_preds(L0,L)).
|
||||||
|
|
||||||
|
consult_preds([]).
|
||||||
|
consult_preds([P|L]) :-
|
||||||
|
consult_pred(P),
|
||||||
|
consult_preds(L).
|
||||||
|
|
||||||
|
consult_pred(pred(F,N,_Mode,_Delay,Tabled,Clauses)) :-
|
||||||
(nonvar(Tabled) -> table(F/N) ; true),
|
(nonvar(Tabled) -> table(F/N) ; true),
|
||||||
functor(S,F,N),
|
functor(S,F,N),
|
||||||
assert(b_IS_CONSULTED_c(S)),
|
assert(b_IS_CONSULTED_c(S)),
|
||||||
'$assert_clauses'(Clauses),
|
abolish(F/N),
|
||||||
compileProgToFile(_,File,Prog2).
|
'$assert_clauses'(Clauses).
|
||||||
|
|
||||||
|
add_pred(Name, Arity, _Mode, _Delay, Tabled, Clauses) :-
|
||||||
|
'$assert_clauses'(Clauses).
|
||||||
|
|
||||||
'$assert_clauses'([]).
|
'$assert_clauses'([]).
|
||||||
'$assert_clauses'(Cl.Clauses) :-
|
'$assert_clauses'([Cl|Clauses]) :-
|
||||||
assert_static(Cl),
|
assert_static(Cl),
|
||||||
'$assert_clauses'(Clauses).
|
'$assert_clauses'(Clauses).
|
||||||
|
|
||||||
'$myload'(_F).
|
'$myload'(_F) :-
|
||||||
|
'$damon_load'.
|
||||||
|
|
||||||
|
'$query'(G) :- call(G).
|
||||||
|
|
||||||
initialize_table :- abolish_all_tables.
|
initialize_table :- abolish_all_tables.
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ $pp_expl_one_goal(failure) :- !,
|
|||||||
$pp_expl_failure.
|
$pp_expl_failure.
|
||||||
$pp_expl_one_goal(Goal) :-
|
$pp_expl_one_goal(Goal) :-
|
||||||
$pp_is_dummy_goal(Goal),!,
|
$pp_is_dummy_goal(Goal),!,
|
||||||
call(Goal).
|
( call(Goal), fail ; true ).
|
||||||
$pp_expl_one_goal(Goal) :-
|
$pp_expl_one_goal(Goal) :-
|
||||||
% FIXME: handling non-tabled probabilistic predicate is future work
|
% FIXME: handling non-tabled probabilistic predicate is future work
|
||||||
$pp_require_tabled_probabilistic_atom(Goal,$msg(0006),$pp_expl_one_goal/1),
|
$pp_require_tabled_probabilistic_atom(Goal,$msg(0006),$pp_expl_one_goal/1),
|
||||||
|
Reference in New Issue
Block a user