home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / b / binprolog / !BinPro330 / progs / file2pred < prev    next >
Encoding:
Text File  |  1994-12-23  |  781 b   |  42 lines

  1. p:-[file2pred].
  2.  
  3. go:-go('progs/file2pred.pl').
  4.  
  5. go(F):-
  6.   see(F),
  7.   get_a_predicate(FN,Cs),
  8.   nl,write('% '),write(FN),nl,
  9.   member(C,Cs),
  10.   pp_clause(C),
  11.   fail
  12. ; seen.
  13.  
  14. get_a_predicate(F/N,Cs):-
  15.   read_predicate(F/N,Cs),
  16.   ( F=end_of_file->!,fail
  17.   ; true
  18.   ).
  19. get_a_predicate(FN,Cs):-
  20.   get_a_predicate(FN,Cs).
  21.  
  22. read_predicate(F/N,[(H:-B)|Cs]):-
  23.   rclause(H,B),
  24.   functor(H,F,N),
  25.   get_all_clauses(F,N,Cs).
  26.  
  27. get_all_clauses(F,N,Cs):-findall(C,get_a_clause(F,N,C),Cs).
  28.  
  29. get_a_clause(F,N,(H:-B)):-
  30.    radd(H,B),
  31.    ( H=end_of_file->!,fail
  32.    ; functor(H,F,N)->true
  33.    ; !,bb_def(left,over,(H:-B)),fail
  34.    ).
  35. get_a_clause(F,N,C):-
  36.    get_a_clause(F,N,C).
  37.  
  38. rclause(H,B):-val(left,over,(H:-B)),rm(left,over),!.
  39. rclause(H,B):-radd(H,B).
  40.  
  41. radd(H,B):-read_clause(C),add_true(C,(H:-B)).
  42.