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