fix arena initialization
This commit is contained in:
parent
495ab155f9
commit
19d0f56f2d
14
C/exec.c
14
C/exec.c
@ -1783,6 +1783,14 @@ Yap_InitYaamRegs( int myworker_id )
|
|||||||
DEPTH = RESET_DEPTH();
|
DEPTH = RESET_DEPTH();
|
||||||
#endif
|
#endif
|
||||||
STATIC_PREDICATES_MARKED = FALSE;
|
STATIC_PREDICATES_MARKED = FALSE;
|
||||||
|
if (REMOTE_GlobalArena(myworker_id) == 0L ||
|
||||||
|
REMOTE_GlobalArena(myworker_id) == TermNil) {
|
||||||
|
} else {
|
||||||
|
HR = RepAppl(REMOTE_GlobalArena(myworker_id));
|
||||||
|
}
|
||||||
|
REMOTE_GlobalArena(myworker_id) = TermNil;
|
||||||
|
Yap_AllocateDefaultArena(128*1024, 2, myworker_id);
|
||||||
|
Yap_InitPreAllocCodeSpace( myworker_id );
|
||||||
#ifdef FROZEN_STACKS
|
#ifdef FROZEN_STACKS
|
||||||
H_FZ = HR;
|
H_FZ = HR;
|
||||||
#ifdef YAPOR_SBA
|
#ifdef YAPOR_SBA
|
||||||
@ -1813,12 +1821,6 @@ Yap_InitYaamRegs( int myworker_id )
|
|||||||
PP = NULL;
|
PP = NULL;
|
||||||
PREG_ADDR = NULL;
|
PREG_ADDR = NULL;
|
||||||
#endif
|
#endif
|
||||||
if (REMOTE_GlobalArena(myworker_id) == 0L ||
|
|
||||||
REMOTE_GlobalArena(myworker_id) == TermNil) {
|
|
||||||
REMOTE_GlobalArena(myworker_id) = TermNil;
|
|
||||||
Yap_AllocateDefaultArena(128*1024, 2, myworker_id);
|
|
||||||
Yap_InitPreAllocCodeSpace( myworker_id );
|
|
||||||
}
|
|
||||||
cut_c_initialize( myworker_id );
|
cut_c_initialize( myworker_id );
|
||||||
Yap_PrepGoal(0, NULL, NULL PASS_REGS);
|
Yap_PrepGoal(0, NULL, NULL PASS_REGS);
|
||||||
#ifdef TABLING
|
#ifdef TABLING
|
||||||
|
@ -796,7 +796,8 @@ INPUT = docs/yap.md \
|
|||||||
packages \
|
packages \
|
||||||
library \
|
library \
|
||||||
CXX \
|
CXX \
|
||||||
OPTYap
|
OPTYap \
|
||||||
|
docs/foreigns.yap
|
||||||
|
|
||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
||||||
|
86
docs/yap.md
86
docs/yap.md
@ -1295,6 +1295,28 @@ will be used:
|
|||||||
+ a preceding minus sign will denote an "output argument";
|
+ a preceding minus sign will denote an "output argument";
|
||||||
+ an argument with no preceding symbol can be used in both ways.
|
+ an argument with no preceding symbol can be used in both ways.
|
||||||
|
|
||||||
|
@page Features
|
||||||
|
|
||||||
|
@subpage CohYroutining
|
||||||
|
|
||||||
|
|
||||||
|
@subpage Attributed_Variables
|
||||||
|
|
||||||
|
|
||||||
|
@subpage Tabling
|
||||||
|
|
||||||
|
|
||||||
|
@subpage Low_Level_Tracing
|
||||||
|
|
||||||
|
|
||||||
|
@subpage Low_Level_Profiling
|
||||||
|
|
||||||
|
|
||||||
|
@subpage Indexing
|
||||||
|
|
||||||
|
@subpage Parallelism
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@defgroup YAPBuiltins Built-In Predicates
|
@defgroup YAPBuiltins Built-In Predicates
|
||||||
|
|
||||||
@ -1420,10 +1442,6 @@ will be used:
|
|||||||
|
|
||||||
@subpage Exo_Intervals
|
@subpage Exo_Intervals
|
||||||
|
|
||||||
|
|
||||||
@subpage Gecode
|
|
||||||
|
|
||||||
|
|
||||||
@subpage Heaps
|
@subpage Heaps
|
||||||
|
|
||||||
|
|
||||||
@ -1502,16 +1520,6 @@ will be used:
|
|||||||
@subpage DBUsage
|
@subpage DBUsage
|
||||||
|
|
||||||
|
|
||||||
@subpage Lambda
|
|
||||||
|
|
||||||
@page pYapPacks YAP Packages
|
|
||||||
|
|
||||||
@subpage LAM
|
|
||||||
|
|
||||||
|
|
||||||
@subpage BDDs
|
|
||||||
|
|
||||||
|
|
||||||
@subpage Block_Diagram
|
@subpage Block_Diagram
|
||||||
|
|
||||||
|
|
||||||
@ -1527,11 +1535,6 @@ will be used:
|
|||||||
@subpage Rational_Trees
|
@subpage Rational_Trees
|
||||||
|
|
||||||
|
|
||||||
@subpage CohYroutining
|
|
||||||
|
|
||||||
|
|
||||||
@subpage Attributed_Variables
|
|
||||||
|
|
||||||
|
|
||||||
@subpage New_Style_Attribute_Declarations
|
@subpage New_Style_Attribute_Declarations
|
||||||
|
|
||||||
@ -1539,17 +1542,12 @@ will be used:
|
|||||||
@subpage Old_Style_Attribute_Declarations
|
@subpage Old_Style_Attribute_Declarations
|
||||||
|
|
||||||
|
|
||||||
@subpage CLPR_Solver_Predicates
|
|
||||||
|
|
||||||
|
@subpage Lambda
|
||||||
|
|
||||||
@subpage CLPR_Syntax
|
@page YapPacks YAP Packages
|
||||||
|
|
||||||
|
|
||||||
@subpage CLPR_Unification
|
|
||||||
|
|
||||||
|
|
||||||
@subpage CLPR_NonhYlinear_Constraints
|
|
||||||
|
|
||||||
|
@subpage LAM
|
||||||
|
|
||||||
@subpage CHR_Introduction
|
@subpage CHR_Introduction
|
||||||
|
|
||||||
@ -1572,7 +1570,23 @@ will be used:
|
|||||||
@subpage CHR_Guidelines
|
@subpage CHR_Guidelines
|
||||||
|
|
||||||
|
|
||||||
@subpage Logtalk
|
@subpage Gecode
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@subpage BDDs
|
||||||
|
|
||||||
|
@subpage CLPR_Solver_Predicates
|
||||||
|
|
||||||
|
|
||||||
|
@subpage CLPR_Syntax
|
||||||
|
|
||||||
|
|
||||||
|
@subpage CLPR_Unification
|
||||||
|
|
||||||
|
|
||||||
|
@subpage CLPR_NonhYlinear_Constraints
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@subpage Creating_and_Destroying_Prolog_Threads
|
@subpage Creating_and_Destroying_Prolog_Threads
|
||||||
@ -1587,17 +1601,6 @@ will be used:
|
|||||||
@subpage Thread_Synchronisation
|
@subpage Thread_Synchronisation
|
||||||
|
|
||||||
|
|
||||||
@subpage Parallelism
|
|
||||||
|
|
||||||
|
|
||||||
@subpage Tabling
|
|
||||||
|
|
||||||
|
|
||||||
@subpage Low_Level_Tracing
|
|
||||||
|
|
||||||
|
|
||||||
@subpage Low_Level_Profiling
|
|
||||||
|
|
||||||
|
|
||||||
@subpage Debugging
|
@subpage Debugging
|
||||||
|
|
||||||
@ -1608,9 +1611,6 @@ will be used:
|
|||||||
@subpage Deb_Interaction
|
@subpage Deb_Interaction
|
||||||
|
|
||||||
|
|
||||||
@subpage Indexing
|
|
||||||
|
|
||||||
|
|
||||||
@subpage Loading_Objects
|
@subpage Loading_Objects
|
||||||
|
|
||||||
|
|
||||||
@ -1824,6 +1824,8 @@ SICStus Prolog use:
|
|||||||
|
|
||||||
+ By default, directives in YAP can be called from the top level.
|
+ By default, directives in YAP can be called from the top level.
|
||||||
|
|
||||||
|
@page SWILibs SWI Libraries
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@subsection Fully_SICStus_Compatible YAP predicates fully compatible with SICStus Prolog
|
@subsection Fully_SICStus_Compatible YAP predicates fully compatible with SICStus Prolog
|
||||||
|
@ -33,7 +33,7 @@ The same as fail.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/** @pred repeat is iso
|
/** @pred repeat is iso
|
||||||
Succeeds repeatedly.
|
bprolqSucceeds repeatedly.
|
||||||
|
|
||||||
In the next example, `repeat` is used as an efficient way to implement
|
In the next example, `repeat` is used as an efficient way to implement
|
||||||
a loop. The next example reads all terms in a file:
|
a loop. The next example reads all terms in a file:
|
||||||
@ -882,7 +882,7 @@ the loop.
|
|||||||
/** @pred tree_to_rational_term(? _TI_,- _TF_)
|
/** @pred tree_to_rational_term(? _TI_,- _TF_)
|
||||||
|
|
||||||
|
|
||||||
Inverse of above. The term _TI_ is a tree representation (without
|
Inverse of rational_term_to_tree/2. The term _TI_ is a tree representation (without
|
||||||
cycles) for the Prolog term _TF_. Loops replace terms of the form
|
cycles) for the Prolog term _TF_. Loops replace terms of the form
|
||||||
`_LOOP_( _LevelsAbove_)` where _LevelsAbove_ is the size of
|
`_LOOP_( _LevelsAbove_)` where _LevelsAbove_ is the size of
|
||||||
the loop.
|
the loop.
|
||||||
|
@ -95,7 +95,10 @@ typedef enum {
|
|||||||
matrix_set/2,
|
matrix_set/2,
|
||||||
foreach/2,
|
foreach/2,
|
||||||
foreach/4,
|
foreach/4,
|
||||||
op(100, fy, '[]')
|
op(50, yf, []),
|
||||||
|
op(50, yf, '()'),
|
||||||
|
op(100, xfy, '.'),
|
||||||
|
op(100, fy, '.')
|
||||||
]).
|
]).
|
||||||
|
|
||||||
:- load_foreign_files([matrix], [], init_matrix).
|
:- load_foreign_files([matrix], [], init_matrix).
|
||||||
|
11
library/mpi/mpe.yap
Normal file
11
library/mpi/mpe.yap
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
:- module(mpe,[
|
||||||
|
mpi_open/0,
|
||||||
|
mpi_start/0,
|
||||||
|
mpi_close/1,
|
||||||
|
mpi_create_event/1,
|
||||||
|
mpi_create_state/4]).
|
||||||
|
|
||||||
|
:- load_foreign_files([mpe], [], init_mpe).
|
||||||
|
|
||||||
|
|
13
library/mpi/mpi.yap
Normal file
13
library/mpi/mpi.yap
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
:- module(mpi,[
|
||||||
|
mpi_open/3,
|
||||||
|
mpi_close/0,
|
||||||
|
mpi_send/3,
|
||||||
|
mpi_receive/3,
|
||||||
|
mpi_bcast/3,
|
||||||
|
mpi_bcast/2,
|
||||||
|
mpi_barrier/0]).
|
||||||
|
|
||||||
|
:- load_foreign_files([mpi], [], init_mpi).
|
||||||
|
|
||||||
|
|
360
misc/sysgraph
360
misc/sysgraph
@ -74,43 +74,35 @@ main :-
|
|||||||
undefs,
|
undefs,
|
||||||
doubles,
|
doubles,
|
||||||
% pl_exported(pl).
|
% pl_exported(pl).
|
||||||
c_links.
|
c_links,
|
||||||
|
mkdocs.
|
||||||
|
|
||||||
|
|
||||||
dirs( Roots ) :-
|
dirs( Roots ) :-
|
||||||
member( Root-_, Roots ),
|
member( Root-_, Roots ),
|
||||||
directory_files( Root , Files),
|
absolute_file_name( Root, FRoot ),
|
||||||
|
rdir( FRoot ),
|
||||||
|
fail.
|
||||||
|
dirs( _Roots ).
|
||||||
|
|
||||||
|
rdir( FRoot ) :-
|
||||||
|
directory_files( FRoot , Files),
|
||||||
member( File, Files ),
|
member( File, Files ),
|
||||||
atom_concat( [Root,'/',File], New ),
|
atom_concat( [FRoot,'/',File], New0 ),
|
||||||
|
absolute_file_name( New0, New ),
|
||||||
|
\+ doskip( New ),
|
||||||
(
|
(
|
||||||
file_property( New, type(directory) ),
|
file_property( New, type(directory) )
|
||||||
|
->
|
||||||
File \= '.',
|
File \= '.',
|
||||||
File \= '..',
|
File \= '..',
|
||||||
File \= '.git',
|
File \= '.git',
|
||||||
subdir( New )
|
rdir( New )
|
||||||
;
|
;
|
||||||
absolute_file_name( Root, FRoot ),
|
|
||||||
assert_new( dir( FRoot, File ))
|
assert_new( dir( FRoot, File ))
|
||||||
),
|
),
|
||||||
fail.
|
fail.
|
||||||
dirs(_).
|
rdir(_).
|
||||||
|
|
||||||
subdir( Root ) :-
|
|
||||||
directory_files( Root , Files),
|
|
||||||
member( File, Files ),
|
|
||||||
atom_concat( [Root,'/',File], New ),
|
|
||||||
(
|
|
||||||
file_property( New, type(directory) ),
|
|
||||||
File \= '.',
|
|
||||||
File \= '..',
|
|
||||||
File \= '.git',
|
|
||||||
subdir( New )
|
|
||||||
;
|
|
||||||
absolute_file_name( Root, ARoot),
|
|
||||||
assert_new( dir( ARoot, File ))
|
|
||||||
),
|
|
||||||
fail.
|
|
||||||
|
|
||||||
|
|
||||||
init :-
|
init :-
|
||||||
retractall(dir(_)),
|
retractall(dir(_)),
|
||||||
@ -126,6 +118,14 @@ init :-
|
|||||||
user_c_dep(A,B),
|
user_c_dep(A,B),
|
||||||
do_user_c_dep(A,B),
|
do_user_c_dep(A,B),
|
||||||
fail.
|
fail.
|
||||||
|
init :-
|
||||||
|
user_skip(A),
|
||||||
|
do_user_skip(A),
|
||||||
|
fail.
|
||||||
|
init :-
|
||||||
|
user_expand(N,A),
|
||||||
|
do_user_expand(N,A),
|
||||||
|
fail.
|
||||||
init.
|
init.
|
||||||
|
|
||||||
init_loop( _Dirs ).
|
init_loop( _Dirs ).
|
||||||
@ -134,7 +134,8 @@ c_preds(Dir - Mod) :-
|
|||||||
atom( Dir ),
|
atom( Dir ),
|
||||||
atom_concat([Dir,'/*'], Pattern),
|
atom_concat([Dir,'/*'], Pattern),
|
||||||
expand_file_name( Pattern, Files ),
|
expand_file_name( Pattern, Files ),
|
||||||
member( File, Files ),
|
member( File0, Files ),
|
||||||
|
absolute_file_name( File0, File ),
|
||||||
( ( sub_atom(File,_,_,0,'.c')
|
( ( sub_atom(File,_,_,0,'.c')
|
||||||
;
|
;
|
||||||
sub_atom(File,_,_,0,'.i')
|
sub_atom(File,_,_,0,'.i')
|
||||||
@ -147,15 +148,13 @@ c_preds(Dir - Mod) :-
|
|||||||
;
|
;
|
||||||
sub_atom(File,_,_,0,'.h')
|
sub_atom(File,_,_,0,'.h')
|
||||||
) ->
|
) ->
|
||||||
|
\+ doskip( File ),
|
||||||
c_file( File , Mod )
|
c_file( File , Mod )
|
||||||
;
|
;
|
||||||
exists_directory( File ),
|
exists_directory( File ),
|
||||||
\+ atom_concat(_, '/.', File),
|
\+ atom_concat(_, '/.', File),
|
||||||
\+ atom_concat(_, '/..', File),
|
\+ atom_concat(_, '/..', File),
|
||||||
'packages/prism' \= File,
|
\+ doskip( File ),
|
||||||
'packages/gecode' \= File,
|
|
||||||
'packages/RDF' \= File,
|
|
||||||
'packages/semweb' \= File,
|
|
||||||
c_preds( File - Mod )
|
c_preds( File - Mod )
|
||||||
),
|
),
|
||||||
fail.
|
fail.
|
||||||
@ -193,7 +192,7 @@ c_line(["}"], Mod, _) :- !,
|
|||||||
nb_setval( current_module, Mod ).
|
nb_setval( current_module, Mod ).
|
||||||
c_line(Line, _Mod, _) :-
|
c_line(Line, _Mod, _) :-
|
||||||
append( _, [ "CurrentModule", "=", M|_], Line),
|
append( _, [ "CurrentModule", "=", M|_], Line),
|
||||||
system_mod(M, _Mod, Mod),
|
system_mod(M, _Mod, Mod, _),
|
||||||
nb_setval( current_module, Mod ).
|
nb_setval( current_module, Mod ).
|
||||||
c_line(Line, Mod, F: LineP) :-
|
c_line(Line, Mod, F: LineP) :-
|
||||||
break_line( Line, N/A, Fu),
|
break_line( Line, N/A, Fu),
|
||||||
@ -283,21 +282,21 @@ take_line( Line, AS, FS ) :-
|
|||||||
take_line( Line, NS, AS, FSE, FSB ) :-
|
take_line( Line, NS, AS, FSE, FSB ) :-
|
||||||
append( _, [ "Yap_InitCPredBack", NS, AS, _, FSE, FSB|_], Line), !.
|
append( _, [ "Yap_InitCPredBack", NS, AS, _, FSE, FSB|_], Line), !.
|
||||||
|
|
||||||
system_mod("ATTRIBUTES_MODULE", _, attributes ).
|
system_mod("ATTRIBUTES_MODULE", _, attributes, user ).
|
||||||
system_mod("HACKS_MODULE", _, '$hacks' ).
|
system_mod("HACKS_MODULE", _, '$hacks' , sys ).
|
||||||
system_mod("USER_MODULE", _, user ).
|
system_mod("USER_MODULE", _, user, user ).
|
||||||
system_mod("DBLOAD_MODULE", _, '$db_load' ).
|
system_mod("DBLOAD_MODULE", _, '$db_load', sys ).
|
||||||
system_mod("GLOBALS_MODULE", _, globals ).
|
system_mod("GLOBALS_MODULE", _, globals, sys ).
|
||||||
system_mod("ARG_MODULE", _, arg ).
|
system_mod("ARG_MODULE", _, arg, sys ).
|
||||||
system_mod("PROLOG_MODULE", _ , prolog ).
|
system_mod("PROLOG_MODULE", _ , prolog, sys ).
|
||||||
system_mod("RANGE_MODULE", _, range ).
|
system_mod("RANGE_MODULE", _, range, user ).
|
||||||
system_mod("SWI_MODULE", _, swi ).
|
system_mod("SWI_MODULE", _, swi, sys ).
|
||||||
system_mod("OPERATING_SYSTEM_MODULE", _, operating_system_support ).
|
system_mod("OPERATING_SYSTEM_MODULE", _, operating_system_support , sys ).
|
||||||
system_mod("TERMS_MODULE", _, terms ).
|
system_mod("TERMS_MODULE", _, terms , sys).
|
||||||
system_mod("SYSTEM_MODULE", _, system ).
|
system_mod("SYSTEM_MODULE", _, system, sys ).
|
||||||
system_mod("IDB_MODULE", _, idb ).
|
system_mod("IDB_MODULE", _, idb, user ).
|
||||||
system_mod("CHARSIO_MODULE", _, charsio ).
|
system_mod("CHARSIO_MODULE", _, charsio, sys ).
|
||||||
system_mod("cm", M, M ).
|
system_mod("cm", M, M, user ).
|
||||||
|
|
||||||
call_c_files( File, Mod, _Fun, [CFile] ) :-
|
call_c_files( File, Mod, _Fun, [CFile] ) :-
|
||||||
search_file( CFile, File, c, F ),
|
search_file( CFile, File, c, F ),
|
||||||
@ -309,13 +308,14 @@ call_c_files( File, Mod, _Fun, CFile ) :-
|
|||||||
|
|
||||||
|
|
||||||
pl_interfs(Dir - Mod) :-
|
pl_interfs(Dir - Mod) :-
|
||||||
|
\+ doskip( Dir ),
|
||||||
format('% ************* ~a\n', [Dir]),
|
format('% ************* ~a\n', [Dir]),
|
||||||
nb_setval( current_module, Mod ),
|
nb_setval( current_module, Mod ),
|
||||||
atom( Dir ),
|
atom( Dir ),
|
||||||
directory_files( Dir , Files),
|
directory_files( Dir , Files),
|
||||||
member( File, Files ),
|
member( File, Files ),
|
||||||
atom_concat([Dir,'/',File], Path),
|
atom_concat([Dir,'/',File], Path),
|
||||||
( ( sub_atom(File,_,_,0,'.yap') ; sub_atom(File,_,_,0,'.pl') ) ->
|
( ( sub_atom(File,_,_,0,'.yap') ; sub_atom(File,_,_,0,'.pl') ; sub_atom(File,_,_,0,'.ypp') ) ->
|
||||||
ops_restore,
|
ops_restore,
|
||||||
absolute_file_name( Path, APath ),
|
absolute_file_name( Path, APath ),
|
||||||
pl_interf( APath , Mod )
|
pl_interf( APath , Mod )
|
||||||
@ -324,13 +324,8 @@ pl_interfs(Dir - Mod) :-
|
|||||||
\+ atom_concat(_, '/.', Path),
|
\+ atom_concat(_, '/.', Path),
|
||||||
\+ atom_concat(_, '/..', Path),
|
\+ atom_concat(_, '/..', Path),
|
||||||
\+ atom_concat(_, '/.git', Path),
|
\+ atom_concat(_, '/.git', Path),
|
||||||
'packages/prism' \= Path,
|
|
||||||
'packages/gecode' \= Path,
|
|
||||||
'packages/R' \= Path,
|
|
||||||
'packages/RDF' \= Path,
|
|
||||||
'packages/semweb' \= Path,
|
|
||||||
'packages/sgml' \= Path,
|
|
||||||
absolute_file_name( Path, APath ),
|
absolute_file_name( Path, APath ),
|
||||||
|
\+ doskip( APath ),
|
||||||
pl_interfs( APath - Mod )
|
pl_interfs( APath - Mod )
|
||||||
),
|
),
|
||||||
fail.
|
fail.
|
||||||
@ -351,30 +346,43 @@ pl_interf(F, Mod) :-
|
|||||||
consulted(F, Mod ),
|
consulted(F, Mod ),
|
||||||
!.
|
!.
|
||||||
pl_interf(F, Mod) :-
|
pl_interf(F, Mod) :-
|
||||||
F\='/Users/vsc/git/yap-6.3/packages/RDF/rdf_diagram.pl',
|
|
||||||
% ( sub_atom(F,_,_,_,'matrix.yap') -> spy get_interf ; true ),
|
% ( sub_atom(F,_,_,_,'matrix.yap') -> spy get_interf ; true ),
|
||||||
% ( sub_atom( F, _, _, 0, 'chr.yap' ) -> spy get_interf; true ),
|
( sub_atom( F, _, _, 0, 'gecode.yap' ) -> spy user_deps; true ),
|
||||||
|
writeln( +F:Mod ),
|
||||||
assert_new(consulted(F, Mod ) ),
|
assert_new(consulted(F, Mod ) ),
|
||||||
nb_getval( private, Default ),
|
nb_getval( private, Default ),
|
||||||
nb_setval( private, false ),
|
nb_setval( private, false ),
|
||||||
nb_getval( file_entry, OF:OMod ),
|
nb_getval( file_entry, OF:OMod ),
|
||||||
nb_setval( file_entry, F:Mod ),
|
nb_setval( file_entry, F:Mod ),
|
||||||
catch( open(F, read, S, [scripting(true)]) , _, fail ),
|
preprocess_file( F, PF ),
|
||||||
|
catch( open(PF, read, S, [scripting(true)]) , _, fail ),
|
||||||
repeat,
|
repeat,
|
||||||
nb_getval( current_module, MR ),
|
nb_getval( current_module, MR ),
|
||||||
%( sub_atom(F,_,_,_,'examples/matrix.yap') -> spy get_interf ; nospyall ),
|
%( sub_atom(F,_,_,_,'e.yap') -> spy get_interf ; nospyall ),
|
||||||
catch( read_term( S, T, [module( MR ),term_position(Pos)] ), Throw, (writeln(F:MR:Throw), break, fail)),
|
catch( read_term( S, T, [module( MR ),term_position(Pos)] ), Throw, (ypp(F,Throw), fail)),
|
||||||
(
|
(
|
||||||
T == end_of_file
|
T == end_of_file
|
||||||
->
|
->
|
||||||
!,
|
!,
|
||||||
close(S),
|
close(S),
|
||||||
build_graph( F, Mod ),
|
(
|
||||||
% also, close ops defined in the module M, if M \= Mod
|
c_dep( F, Fc),
|
||||||
generate_interface( F, Mod ),
|
c_file( Fc, MR ),
|
||||||
nb_setval( current_module, Mod ),
|
fail
|
||||||
nb_setval( private, Default ),
|
;
|
||||||
nb_setval( file_entry, OF:OMod )
|
build_graph( F, MR ),
|
||||||
|
fail
|
||||||
|
% cleanup
|
||||||
|
;
|
||||||
|
module_on( F , _M, _Is)
|
||||||
|
->
|
||||||
|
% also, close ops defined in the module M, if M \= Mod
|
||||||
|
nb_setval( current_module, Mod ),
|
||||||
|
nb_setval( private, Default ),
|
||||||
|
nb_setval( file_entry, OF:OMod )
|
||||||
|
;
|
||||||
|
true
|
||||||
|
)
|
||||||
;
|
;
|
||||||
nb_getval( current_module, MC0 ),
|
nb_getval( current_module, MC0 ),
|
||||||
stream_position_data( line_count, Pos, Line ),
|
stream_position_data( line_count, Pos, Line ),
|
||||||
@ -382,14 +390,7 @@ F\='/Users/vsc/git/yap-6.3/packages/RDF/rdf_diagram.pl',
|
|||||||
( Mod == prolog -> MC = prolog ; MC = MC0 ),
|
( Mod == prolog -> MC = prolog ; MC = MC0 ),
|
||||||
get_interf( T, F, MC ),
|
get_interf( T, F, MC ),
|
||||||
fail
|
fail
|
||||||
;
|
).
|
||||||
nb_getval( current_module, MC0 ),
|
|
||||||
stream_position_data( line_count, Pos, Line ),
|
|
||||||
nb_setval( line, Line ),
|
|
||||||
( Mod == prolog -> MC = prolog ; MC = MC0 ),
|
|
||||||
user_deps( F, MC ),
|
|
||||||
fail
|
|
||||||
).
|
|
||||||
|
|
||||||
get_interf( T, _F, _M0 ) :-
|
get_interf( T, _F, _M0 ) :-
|
||||||
var(T),
|
var(T),
|
||||||
@ -401,11 +402,13 @@ get_interf( T, _F, _M0 ) :-
|
|||||||
get_interf( M:T, F, _M0 ) :- !,
|
get_interf( M:T, F, _M0 ) :- !,
|
||||||
get_interf( T, F, M ).
|
get_interf( T, F, M ).
|
||||||
get_interf( goal_expansion(G, M, _) , F, _M0 ) :-
|
get_interf( goal_expansion(G, M, _) , F, _M0 ) :-
|
||||||
|
nonvar( G ),
|
||||||
!,
|
!,
|
||||||
( var( M ) -> M1 = prolog ; M = M1 ),
|
( var( M ) -> M1 = prolog ; M = M1 ),
|
||||||
functor( G, N, A ),
|
functor( G, N, A ),
|
||||||
handle_pred( M1, N, A, F ).
|
handle_pred( M1, N, A, F ).
|
||||||
get_interf( goal_expansion(G, _) , F, _M0 ) :-
|
get_interf( goal_expansion(G, _) , F, _M0 ) :-
|
||||||
|
nonvar( G ),
|
||||||
!,
|
!,
|
||||||
functor( G, N, A ),
|
functor( G, N, A ),
|
||||||
handle_pred( prolog, N, A, F ).
|
handle_pred( prolog, N, A, F ).
|
||||||
@ -413,11 +416,13 @@ get_interf( ( M:H :- _B), F, _M ) :-
|
|||||||
!,
|
!,
|
||||||
get_interf( H, F, M ).
|
get_interf( H, F, M ).
|
||||||
get_interf( ( goal_expansion(G, M, _) :- _) , F, _M0 ) :-
|
get_interf( ( goal_expansion(G, M, _) :- _) , F, _M0 ) :-
|
||||||
|
nonvar( G ),
|
||||||
!,
|
!,
|
||||||
( var( M ) -> M1 = prolog ; M = M1 ),
|
( var( M ) -> M1 = prolog ; M = M1 ),
|
||||||
functor( G, N, A ),
|
functor( G, N, A ),
|
||||||
handle_pred( M1, N, A, F ).
|
handle_pred( M1, N, A, F ).
|
||||||
get_interf( ( goal_expansion(G, _) :- _) , F, _M0 ) :-
|
get_interf( ( goal_expansion(G, _) :- _) , F, _M0 ) :-
|
||||||
|
nonvar( G ),
|
||||||
!,
|
!,
|
||||||
functor( G, N, A ),
|
functor( G, N, A ),
|
||||||
handle_pred( prolog, N, A, F ).
|
handle_pred( prolog, N, A, F ).
|
||||||
@ -476,7 +481,7 @@ get_interf( (:- ensure_loaded( Files ) ), F, M ) :-
|
|||||||
include_files( F, M, Files ).
|
include_files( F, M, Files ).
|
||||||
get_interf( (:- include( Files ) ), F, M ) :-
|
get_interf( (:- include( Files ) ), F, M ) :-
|
||||||
!,
|
!,
|
||||||
include_files( F, M, Files ).
|
source_files( F, M, Files ).
|
||||||
get_interf( (:- load_files( Files , [_|_] ) ), F, M ) :-
|
get_interf( (:- load_files( Files , [_|_] ) ), F, M ) :-
|
||||||
!,
|
!,
|
||||||
include_files( F, M, Files ).
|
include_files( F, M, Files ).
|
||||||
@ -537,6 +542,9 @@ get_interf( (:- op( X, Y, Z) ), F, M ) :-
|
|||||||
get_interf( (:- record( Records ) ), F, M ) :-
|
get_interf( (:- record( Records ) ), F, M ) :-
|
||||||
!,
|
!,
|
||||||
handle_record( Records, F, M).
|
handle_record( Records, F, M).
|
||||||
|
get_interf( (:- set_prolog_flag(dollar_as_lower_case,On) ), _F, _M ) :-
|
||||||
|
!,
|
||||||
|
set_prolog_flag(dollar_as_lower_case,On).
|
||||||
get_interf( (:- _ ), _F, _M ) :- !.
|
get_interf( (:- _ ), _F, _M ) :- !.
|
||||||
get_interf( (?- _ ), _F, _M ) :- !.
|
get_interf( (?- _ ), _F, _M ) :- !.
|
||||||
get_interf( V , _F, _M ) :-
|
get_interf( V , _F, _M ) :-
|
||||||
@ -595,7 +603,7 @@ handle_record_field_name( Constructor, F, M, Name) :-
|
|||||||
|
|
||||||
handle_pred( M, N, A, F ) :-
|
handle_pred( M, N, A, F ) :-
|
||||||
(
|
(
|
||||||
system_mod( _, _, M )
|
system_mod( _, _, M, sys )
|
||||||
->
|
->
|
||||||
(
|
(
|
||||||
atom_concat('$',_,N)
|
atom_concat('$',_,N)
|
||||||
@ -695,6 +703,40 @@ include_file( F, M, Is0, Loc ) :-
|
|||||||
),
|
),
|
||||||
nb_setval( private, Private ).
|
nb_setval( private, Private ).
|
||||||
|
|
||||||
|
|
||||||
|
source_files( F, M, Files ) :-
|
||||||
|
maplist( source_files( F, M ), Files ),
|
||||||
|
!.
|
||||||
|
source_files( F, M, Loc ) :-
|
||||||
|
source_file( F, M, Loc ).
|
||||||
|
|
||||||
|
source_file( F, M, Loc ) :-
|
||||||
|
once( search_file( Loc, F, pl, NF ) ),
|
||||||
|
% depth visit
|
||||||
|
pl_source(NF, F, M). % should verify Is in _Is
|
||||||
|
|
||||||
|
pl_source(F, F0, Mod) :-
|
||||||
|
% writeln( -F ),
|
||||||
|
preprocess_file( F, PF ),
|
||||||
|
catch( open(PF, read, S, []) , _, fail ),
|
||||||
|
repeat,
|
||||||
|
nb_getval( current_module, MR ),
|
||||||
|
%( sub_atom(F,_,_,_,'examples/matrix.yap') -> spy get_interf ; nospyall ),
|
||||||
|
catch( read_term( S, T, [module( MR ),term_position(Pos)] ), Throw, (writeln(F:MR:Throw), break, fail)),
|
||||||
|
(
|
||||||
|
T == end_of_file
|
||||||
|
->
|
||||||
|
!,
|
||||||
|
close(S)
|
||||||
|
;
|
||||||
|
nb_getval( current_module, MC0 ),
|
||||||
|
stream_position_data( line_count, Pos, Line ),
|
||||||
|
nb_setval( line, Line ),
|
||||||
|
( Mod == prolog -> MC = prolog ; MC = MC0 ),
|
||||||
|
get_interf( T, F0, MC ),
|
||||||
|
fail
|
||||||
|
).
|
||||||
|
|
||||||
declare_functors( T, _F, _M1) :- var(T), !,
|
declare_functors( T, _F, _M1) :- var(T), !,
|
||||||
error( unbound_variable ).
|
error( unbound_variable ).
|
||||||
declare_functors( M:T, F, _M1) :- !,
|
declare_functors( M:T, F, _M1) :- !,
|
||||||
@ -731,22 +773,6 @@ declare_term(F, M, S) :-
|
|||||||
functor(S, N, A),
|
functor(S, N, A),
|
||||||
handle_pred( M, N, A, F ).
|
handle_pred( M, N, A, F ).
|
||||||
|
|
||||||
% clean operators
|
|
||||||
generate_interface( _F, _M ) :-
|
|
||||||
fail,
|
|
||||||
public( _, prolog:op(_X,Y,Z) ),
|
|
||||||
op(0,Y,Z),
|
|
||||||
fail.
|
|
||||||
generate_interface( _F, _M ) :-
|
|
||||||
fail,
|
|
||||||
private( _, prolog:op(_X,Y,Z) ),
|
|
||||||
op(0,Y,Z),
|
|
||||||
fail.
|
|
||||||
generate_interface( _F, Mod ) :-
|
|
||||||
nb_setval( current_module, Mod ).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
pl_graphs(Dir - Mod) :-
|
pl_graphs(Dir - Mod) :-
|
||||||
format(' ************* GRAPH: ~a ***********************~n', [Dir]),
|
format(' ************* GRAPH: ~a ***********************~n', [Dir]),
|
||||||
atom( Dir ),
|
atom( Dir ),
|
||||||
@ -754,7 +780,7 @@ pl_graphs(Dir - Mod) :-
|
|||||||
expand_file_name( Pattern, Files ),
|
expand_file_name( Pattern, Files ),
|
||||||
member( File, Files ),
|
member( File, Files ),
|
||||||
( ( sub_atom(File,_,_,0,'.yap') ; sub_atom(File,_,_,0,'.pl') ) ->
|
( ( sub_atom(File,_,_,0,'.yap') ; sub_atom(File,_,_,0,'.pl') ) ->
|
||||||
pl_graph( File , Mod )
|
build_graph( File , Mod )
|
||||||
;
|
;
|
||||||
exists_directory( File ),
|
exists_directory( File ),
|
||||||
\+ atom_concat(_, '/.', File),
|
\+ atom_concat(_, '/.', File),
|
||||||
@ -776,10 +802,11 @@ pl_graphs(_).
|
|||||||
%
|
%
|
||||||
build_graph(F, Mod) :-
|
build_graph(F, Mod) :-
|
||||||
% writeln(F),
|
% writeln(F),
|
||||||
catch( open(F, read, S, [scripting(true)]), _, fail ),
|
preprocess_file( F, PF ),
|
||||||
|
catch( open(PF, read, S, [scripting(true)]), _, fail ),
|
||||||
repeat,
|
repeat,
|
||||||
nb_getval( current_module, MR ),
|
nb_getval( current_module, MR ),
|
||||||
catch( read_term( S, T, [term_position(Pos),module(MR),comments(Cs)] ), Throw, (writeln(Throw))),
|
catch(read_term( S, T, [term_position(Pos),module(MR),comments(Cs)] ), Throw, (writeln(Throw))),
|
||||||
(
|
(
|
||||||
T == end_of_file
|
T == end_of_file
|
||||||
->
|
->
|
||||||
@ -825,9 +852,17 @@ get_graph( (H :- B), F, _Pos, M ) :-
|
|||||||
functor( H, N, Ar),
|
functor( H, N, Ar),
|
||||||
add_deps( B, M, M:N/Ar, F, _Pos, 0 ).
|
add_deps( B, M, M:N/Ar, F, _Pos, 0 ).
|
||||||
%% switches to new file n
|
%% switches to new file n
|
||||||
get_graph( (:- _ ), _F, _Pos, _M ) :-
|
get_graph( (:-include( Fs ) ), F, _Pos, M ) :-
|
||||||
!.
|
!,
|
||||||
|
source_graphs( M, F, Fs ).
|
||||||
get_graph( (?- _ ), _F, _Pos, _M ) :- !.
|
get_graph( (?- _ ), _F, _Pos, _M ) :- !.
|
||||||
|
get_graph( (:- _ ), _F, _Pos, _M ) :- !.
|
||||||
|
|
||||||
|
source_graphs( M, F, Fs ) :-
|
||||||
|
maplist( source_graph( M, F ), Fs ), !.
|
||||||
|
source_graphs( M, F, Fs ) :-
|
||||||
|
search_file( Fs, F, pl, NF ),
|
||||||
|
build_graph( NF , M ), !.
|
||||||
|
|
||||||
add_deps(V, _M, _P, _F, _Pos, _) :-
|
add_deps(V, _M, _P, _F, _Pos, _) :-
|
||||||
var(V), !.
|
var(V), !.
|
||||||
@ -994,10 +1029,14 @@ always_strip_module(M0:A, M0, call(A)) :- var(A),!.
|
|||||||
always_strip_module(M0:A, M0, A).
|
always_strip_module(M0:A, M0, A).
|
||||||
|
|
||||||
c_links :-
|
c_links :-
|
||||||
|
open('foreigns.yap', write, S),
|
||||||
|
clinks(S).
|
||||||
|
clinks(S) :-
|
||||||
node( M, P, _, c(F)),
|
node( M, P, _, c(F)),
|
||||||
format( ':- implements( ~q , ~q ).~n', [M:P, F] ),
|
format( S, ':- foreign_predicate( ~q , ~q ).~n', [M:P, F] ),
|
||||||
fail.
|
fail.
|
||||||
c_links.
|
c_links(S) :-
|
||||||
|
close(S).
|
||||||
|
|
||||||
warn_singletons(_Vars, _Pos).
|
warn_singletons(_Vars, _Pos).
|
||||||
|
|
||||||
@ -1050,8 +1089,8 @@ search_file( Loc , F, _FN ) :-
|
|||||||
%
|
%
|
||||||
% handle some special cases.
|
% handle some special cases.
|
||||||
%
|
%
|
||||||
search_file0( library(gecode), _, _Type, FN) :-
|
search_file0( F, _, _Type, FN ) :-
|
||||||
absolute_file_name( 'packages/gecode/gecode4_yap_hand_written.yap', FN ).
|
doexpand(F, FN), !.
|
||||||
search_file0( A/B, F, Type, FN ) :- !,
|
search_file0( A/B, F, Type, FN ) :- !,
|
||||||
term_to_atom(A/B, AB),
|
term_to_atom(A/B, AB),
|
||||||
search_file0( AB, F, Type, FN ).
|
search_file0( AB, F, Type, FN ).
|
||||||
@ -1114,7 +1153,7 @@ check_suffix( Loc , pl, Loc ) :-
|
|||||||
%, otherwise, .P
|
%, otherwise, .P
|
||||||
% try adding suffix
|
% try adding suffix
|
||||||
check_suffix( Loc0 , pl, Loc ) :-
|
check_suffix( Loc0 , pl, Loc ) :-
|
||||||
member( Suf , ['.yap', '.pl' , '.prolog']),
|
member( Suf , ['.yap', '.ypp', '.pl' , '.prolog']),
|
||||||
atom_concat( Loc0, Suf, Loc ).
|
atom_concat( Loc0, Suf, Loc ).
|
||||||
check_suffix( Loc , c, Loc ) :-
|
check_suffix( Loc , c, Loc ) :-
|
||||||
atom_concat( _, '.c', Loc ), !.
|
atom_concat( _, '.c', Loc ), !.
|
||||||
@ -1153,6 +1192,17 @@ new_op( F, M, op( X, Y, Z) ) :-
|
|||||||
public( F, M, op( X, Y, Z) ).
|
public( F, M, op( X, Y, Z) ).
|
||||||
|
|
||||||
|
|
||||||
|
ypp(F, error(syntax_error(syntax_error),[syntax_error(read(_228515),between(K,L,M),_,_L,_)-_]) ) :-
|
||||||
|
format('SYNTAX ERROR at file ~a, line ~d (~d - ~d).~n', [F,L,K,M] ),
|
||||||
|
break.
|
||||||
|
|
||||||
|
preprocess_file(F,NF) :-
|
||||||
|
atom_concat(_, '.ypp', F ), !,
|
||||||
|
atom_concat( [ 'cpp -CC -w -DMYDDAS_MYSQL -DMYDDAS_ODBC -DMYDDAS_STATS -DMYDDAS_TOP_LEVEL -P ',F], OF ),
|
||||||
|
NF = pipe( OF ).
|
||||||
|
preprocess_file(F,F).
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%
|
%%%%%%%
|
||||||
%% declare a concept exportable
|
%% declare a concept exportable
|
||||||
public( F, M, op(X,Y,Z) ) :-
|
public( F, M, op(X,Y,Z) ) :-
|
||||||
@ -1171,11 +1221,12 @@ public( F, M, op(X,Y,Z) ) :- !,
|
|||||||
public( F, M, M:N/Ar ) :-
|
public( F, M, M:N/Ar ) :-
|
||||||
retract( private( F, M:N/Ar ) ),
|
retract( private( F, M:N/Ar ) ),
|
||||||
fail.
|
fail.
|
||||||
public( F, M, N/Ar ) :- !,
|
public( F, M, N/Ar ) :-
|
||||||
assert_new( public( F, M:N/Ar ) ),
|
assert_new( public( F, M:N/Ar ) ),
|
||||||
\+ node( M, N/Ar, F-_, _ ),
|
\+ node( M, N/Ar, F-_, _ ),
|
||||||
nb_getval( line, L ),
|
nb_getval( line, L ),
|
||||||
assert( node( M, N/Ar, F-L, prolog ) ).
|
assert( node( M, N/Ar, F-L, prolog ) ), !.
|
||||||
|
public( _F, _M, _/_Ar ).
|
||||||
public( F, M, M:N//Ar ) :-
|
public( F, M, M:N//Ar ) :-
|
||||||
Ar2 is Ar+2,
|
Ar2 is Ar+2,
|
||||||
retract( private( F, M:N/Ar2 ) ),
|
retract( private( F, M:N/Ar2 ) ),
|
||||||
@ -1185,7 +1236,8 @@ public( F, M, N//Ar ) :-
|
|||||||
assert_new( public( F, M:N/Ar2 ) ),
|
assert_new( public( F, M:N/Ar2 ) ),
|
||||||
\+ node( M, N/Ar2, F-_, _ ),
|
\+ node( M, N/Ar2, F-_, _ ),
|
||||||
nb_getval( line, L ),
|
nb_getval( line, L ),
|
||||||
assert( node( M, N/Ar2, F-L, prolog ) ).
|
assert( node( M, N/Ar2, F-L, prolog ) ), !.
|
||||||
|
public( _F, _M, _//_Ar ).
|
||||||
|
|
||||||
private( F, M, op(X,Y,Z) ) :-
|
private( F, M, op(X,Y,Z) ) :-
|
||||||
assert_new( private( F, M:op(X,Y,Z) ) ),
|
assert_new( private( F, M:op(X,Y,Z) ) ),
|
||||||
@ -1195,18 +1247,21 @@ private( F, M, op(X,Y,Z) ) :-
|
|||||||
op( X, Y, prolog:Z )
|
op( X, Y, prolog:Z )
|
||||||
;
|
;
|
||||||
op( X, Y, M:Z )
|
op( X, Y, M:Z )
|
||||||
).
|
), !.
|
||||||
|
private( _F, _M, op(_X,_Y,_Z) ).
|
||||||
private( F, M, N/Ar ) :-
|
private( F, M, N/Ar ) :-
|
||||||
assert_new( private( F, M:N/Ar ) ),
|
assert_new( private( F, M:N/Ar ) ),
|
||||||
\+ node( M, N/Ar, F-_, _ ),
|
\+ node( M, N/Ar, F-_, _ ),
|
||||||
nb_getval( line, L ),
|
nb_getval( line, L ),
|
||||||
assert( node( M, N/Ar, F-L, prolog ) ).
|
assert( node( M, N/Ar, F-L, prolog ) ), !.
|
||||||
|
private( _F, _M, _N/_Ar ).
|
||||||
private( F, M, N//Ar ) :-
|
private( F, M, N//Ar ) :-
|
||||||
Ar2 is Ar+2,
|
Ar2 is Ar+2,
|
||||||
assert_new( private( F, M:N/Ar2 ) ),
|
assert_new( private( F, M:N/Ar2 ) ),
|
||||||
\+ node( M, N/Ar2, F-_, _ ),
|
\+ node( M, N/Ar2, F-_, _ ),
|
||||||
nb_getval( line, L ),
|
nb_getval( line, L ),
|
||||||
assert_new( node( M, N/Ar2, F-L, prolog ) ).
|
assert_new( node( M, N/Ar2, F-L, prolog ) ), !.
|
||||||
|
private( _F, _M, _N//_Ar ).
|
||||||
|
|
||||||
is_public( F, M, OP ) :-
|
is_public( F, M, OP ) :-
|
||||||
public( F, M:OP ).
|
public( F, M:OP ).
|
||||||
@ -1219,6 +1274,24 @@ assert_new( G ) :- assert( G ).
|
|||||||
|
|
||||||
error( Error ) :- throw(Error ).
|
error( Error ) :- throw(Error ).
|
||||||
|
|
||||||
|
%% mkdocs inserts a file with a sequence of comments into a sequence of Prolog/C files.
|
||||||
|
%
|
||||||
|
%
|
||||||
|
mkdocs :-
|
||||||
|
open( 'docs/yapdocs.yap', read, S),
|
||||||
|
repeat,
|
||||||
|
(
|
||||||
|
skip_blanks(S)
|
||||||
|
->
|
||||||
|
get_comment(S, Comment, Owner),
|
||||||
|
store_comment( Comment, Owner ),
|
||||||
|
fail
|
||||||
|
;
|
||||||
|
close(S),
|
||||||
|
add_comments
|
||||||
|
).
|
||||||
|
|
||||||
|
|
||||||
ops_default :-
|
ops_default :-
|
||||||
abolish( default_ops/1 ),
|
abolish( default_ops/1 ),
|
||||||
A = (_,_), functor(A,Comma,2),
|
A = (_,_), functor(A,Comma,2),
|
||||||
@ -1241,6 +1314,12 @@ do_user_c_dep(F1, F2) :-
|
|||||||
absolute_file_name(F1, A1),
|
absolute_file_name(F1, A1),
|
||||||
absolute_file_name(F2, A2),
|
absolute_file_name(F2, A2),
|
||||||
assert(c_dep(A1, A2)).
|
assert(c_dep(A1, A2)).
|
||||||
|
do_user_skip(F1) :-
|
||||||
|
absolute_file_name(F1, A1),
|
||||||
|
assert(doskip(A1)).
|
||||||
|
do_user_expand(F, F1) :-
|
||||||
|
absolute_file_name(F1, A1),
|
||||||
|
assert(doexpand(F, A1)).
|
||||||
|
|
||||||
user_deps( F, M ) :-
|
user_deps( F, M ) :-
|
||||||
c_dep(F, A2),
|
c_dep(F, A2),
|
||||||
@ -1251,11 +1330,72 @@ user_deps( _F, _M ).
|
|||||||
user_c_dep( 'packages/jpl/jpl.pl', 'packages/jpl/src/c/jpl.c' ).
|
user_c_dep( 'packages/jpl/jpl.pl', 'packages/jpl/src/c/jpl.c' ).
|
||||||
user_c_dep( 'packages/real/real.pl', 'packages/real/real.c' ).
|
user_c_dep( 'packages/real/real.pl', 'packages/real/real.c' ).
|
||||||
user_c_dep( 'packages/odbc/odbc.pl', 'packages/odbc/odbc.c' ).
|
user_c_dep( 'packages/odbc/odbc.pl', 'packages/odbc/odbc.c' ).
|
||||||
|
user_c_dep( 'packages/clib/unix.pl', 'packages/clib/unix.c' ).
|
||||||
|
user_c_dep( 'packages/clib/cgi.pl', 'packages/clib/cgi.c' ).
|
||||||
|
user_c_dep( 'packages/clib/crypt.pl', 'packages/clib/crypt.c' ).
|
||||||
|
user_c_dep( 'packages/clib/filesex.pl', 'packages/clib/files.c' ).
|
||||||
|
user_c_dep( 'packages/clib/mime.pl', 'packages/clib/mime.c' ).
|
||||||
|
user_c_dep( 'packages/clib/socket.pl', 'packages/clib/socket.c' ).
|
||||||
|
user_c_dep( 'packages/clib/socket.pl', 'packages/clib/winpipe.c' ).
|
||||||
|
user_c_dep( 'packages/http/http_stream.pl', 'packages/http/cgi_stream.c' ).
|
||||||
|
user_c_dep( 'packages/http/http_stream.pl', 'packages/http/stream_range.c' ).
|
||||||
|
user_c_dep( 'packages/http/http_stream.pl', 'packages/http/http_chunked.c' ).
|
||||||
|
user_c_dep( 'packages/http/http_stream.pl', 'packages/http/http_error.c' ).
|
||||||
user_c_dep( 'packages/swi-minisat2/minisat.pl', 'packages/swi-minisat2/C/pl-minisat.C' ).
|
user_c_dep( 'packages/swi-minisat2/minisat.pl', 'packages/swi-minisat2/C/pl-minisat.C' ).
|
||||||
user_c_dep( 'packages/gecode/gecode4.yap', 'packages/gecode/gecode4_yap.cc' ).
|
user_c_dep( 'packages/gecode/gecode.yap', 'packages/gecode/gecode4_yap.cc' ).
|
||||||
user_c_dep( 'packages/gecode/gecode4.yap', 'packages/gecode/4.2.1/gecode_yap_cc_forward_auto_generated.icc' ).
|
user_c_dep( 'packages/gecode/gecode.yap', 'packages/gecode/4.2.1/gecode_yap_cc_forward_auto_generated.icc' ).
|
||||||
user_c_dep( 'packages/gecode/gecode4.yap', 'packages/gecode/4.2.1/gecode_yap_cc_impl_auto_generated.icc' ).
|
user_c_dep( 'packages/gecode/gecode.yap', 'packages/gecode/4.2.1/gecode_yap_cc_init_auto_generated.icc' ).
|
||||||
user_c_dep( 'packages/gecode/gecode4.yap', 'packages/gecode/4.2.1/gecode_yap_cc_init_auto_generated.icc' ).
|
user_c_dep( 'packages/gecode/gecode.yap', 'packages/gecode/4.2.1/gecode_yap_cc_impl_auto_generated.icc' ).
|
||||||
|
user_c_dep( 'packages/semweb/rdf_db.pl', 'packages/semweb/atom_map.c' ).
|
||||||
|
user_c_dep( 'packages/semweb/rdf_db.pl', 'packages/semweb/resource.c' ).
|
||||||
|
user_c_dep( 'packages/sgml/sgml.pl', 'packages/sgml/quote.c' ).
|
||||||
|
user_c_dep( 'swi/library/readutil.pl', 'packages/clib/readutil.c' ).
|
||||||
|
user_c_dep( 'packages/myddas/pl/myddas.ypp', 'packages/myddas/myddas_shared.c' ).
|
||||||
|
user_c_dep( 'packages/myddas/pl/myddas.ypp', 'packages/myddas/myddas_odbc.c' ).
|
||||||
|
user_c_dep( 'packages/myddas/pl/myddas.ypp', 'packages/myddas/myddas_mysql.c' ).
|
||||||
|
user_c_dep( 'packages/myddas/pl/myddas.ypp', 'packages/myddas/myddas_top_level.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/bpx.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/error.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/fputil.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/gamma.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/glue.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/idtable.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/idtable_preds.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/random.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/termpool.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/vector.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/core/xmalloc.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/em_aux.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/em_aux_ml.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/em_aux_vb.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/em_ml.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/em_preds.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/flags.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/graph.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/graph_aux.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/hindsight.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/util.c' ).
|
||||||
|
user_c_dep( 'packages/prism/src/prolog/prism.yap', 'packages/prism/src/c/up/viterbi.c' ).
|
||||||
|
|
||||||
|
user_skip( 'packages/gecode/3.6.0').
|
||||||
|
user_skip( 'packages/gecode/3.7.0').
|
||||||
|
user_skip( 'packages/gecode/3.7.1').
|
||||||
|
user_skip( 'packages/gecode/3.7.2').
|
||||||
|
user_skip( 'packages/gecode/3.7.3').
|
||||||
|
user_skip( 'packages/gecode/4.0.0').
|
||||||
|
user_skip( 'packages/gecode/4.2.0').
|
||||||
|
user_skip( 'packages/gecode/4.2.1').
|
||||||
|
user_skip( 'packages/gecode/gecode3.yap' ).
|
||||||
|
user_skip( 'packages/gecode/gecode3_yap.cc' ).
|
||||||
|
user_skip( 'packages/gecode/gecode3_yap_hand_written.yap').
|
||||||
|
user_skip( 'packages/gecode/gecode3.yap-common.icc').
|
||||||
|
user_skip( 'packages/prism/src/prolog/core').
|
||||||
|
user_skip( 'packages/prism/src/prolog/up').
|
||||||
|
user_skip( 'packages/prism/src/prolog/mp').
|
||||||
|
user_skip( 'packages/prism/src/prolog/trans').
|
||||||
|
user_skip( 'packages/prism/src/prolog/bp').
|
||||||
|
user_skip( 'packages/prism/src/c').
|
||||||
|
|
||||||
|
user_expand( library(clpfd), 'library/clp/clpfd.pl' ).
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,6 +89,7 @@
|
|||||||
|
|
||||||
:- use_module(library(gecode)).
|
:- use_module(library(gecode)).
|
||||||
:- use_module(library(maplist)).
|
:- use_module(library(maplist)).
|
||||||
|
|
||||||
:- reexport(library(matrix), [(<==)/2, op(600, xfx, '<=='),
|
:- reexport(library(matrix), [(<==)/2, op(600, xfx, '<=='),
|
||||||
op(700, xfx, in),
|
op(700, xfx, in),
|
||||||
op(700, xfx, ins),
|
op(700, xfx, ins),
|
||||||
@ -223,7 +224,7 @@ sum( L, Op, V) :-
|
|||||||
check(L, NL),
|
check(L, NL),
|
||||||
check(V, NV),
|
check(V, NV),
|
||||||
post( rel(sum(NL), Op, NV), Env, _).
|
post( rel(sum(NL), Op, NV), Env, _).
|
||||||
( A #<==> VBool) :-
|
( ( A #<==> VBool )) :-
|
||||||
get_home(Space-Map),
|
get_home(Space-Map),
|
||||||
check(A, NA),
|
check(A, NA),
|
||||||
check(VBool, NVBool),
|
check(VBool, NVBool),
|
||||||
|
@ -2,5 +2,5 @@
|
|||||||
/* just for program analysis */
|
/* just for program analysis */
|
||||||
|
|
||||||
:- include(gecode4_yap_hand_written).
|
:- include(gecode4_yap_hand_written).
|
||||||
:- include('4.2.1/gecode_yap_auto_generated').
|
:- include('4.2.1/gecode_yap_auto_generated.yap').
|
||||||
|
|
@ -72,7 +72,6 @@ translate_(ProjectionTerm,DatabaseGoal,SQLQueryTermOpt):-
|
|||||||
#else
|
#else
|
||||||
translate(ProjectionTerm,DatabaseGoal,SQLQueryTermOpt):-
|
translate(ProjectionTerm,DatabaseGoal,SQLQueryTermOpt):-
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
% --- initialize variable identifiers and range variables for relations -----
|
% --- initialize variable identifiers and range variables for relations -----
|
||||||
init_gensym(var),
|
init_gensym(var),
|
||||||
init_gensym(rel),
|
init_gensym(rel),
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
% interface to prism from YAP
|
% interface to prism from YAP
|
||||||
|
|
||||||
:- ensure_loaded(library(dialect/bprolog)).
|
:- ensure_loaded(library(dialect/bprolog)).
|
||||||
|
|
||||||
|
:- set_prolog_flag(dollar_as_lower_case,on).
|
||||||
|
|
||||||
% :- set_prolog_flag(tabling_mode, local).
|
% :- set_prolog_flag(tabling_mode, local).
|
||||||
:- load_foreign_files([prism], [], bp4p_register_preds). /* load prism stuff */
|
:- load_foreign_files([prism], [], bp4p_register_preds). /* load prism stuff */
|
||||||
:- style_check(-discontiguous). /* load prism stuff */
|
:- style_check(-discontiguous). /* load prism stuff */
|
||||||
|
@ -42,12 +42,9 @@
|
|||||||
]).
|
]).
|
||||||
|
|
||||||
|
|
||||||
:- if(current_prolog_flag(dialect, yap)).
|
:- use_module(library(lists)).
|
||||||
:- load_foreign_files(['pl-minisat'],[],install).
|
|
||||||
:- else.
|
:- load_foreign_library('pl-minisat',install).
|
||||||
:- use_module(library(shlib)).
|
|
||||||
:- load_foreign_library('pl-minisat.so',install).
|
|
||||||
:- endif.
|
|
||||||
|
|
||||||
:- dynamic tmp/1.
|
:- dynamic tmp/1.
|
||||||
|
|
||||||
|
@ -386,24 +386,24 @@ load_files(Files,Opts) :-
|
|||||||
'$lf_opt'(if, TOpts, If),
|
'$lf_opt'(if, TOpts, If),
|
||||||
( var(If) -> If = true ; true ),
|
( var(If) -> If = true ; true ),
|
||||||
'$lf_opt'(imports, TOpts, Imports),
|
'$lf_opt'(imports, TOpts, Imports),
|
||||||
'$start_lf'(If, Mod, Stream, TOpts, File, Imports),
|
'$start_lf'(If, Mod, Stream, TOpts, File, Reexport, Imports),
|
||||||
close(Stream).
|
close(Stream).
|
||||||
'$lf'(X, _, Call, _) :-
|
'$lf'(X, _, Call, _) :-
|
||||||
'$do_error'(permission_error(input,stream,X),Call).
|
'$do_error'(permission_error(input,stream,X),Call).
|
||||||
|
|
||||||
'$start_lf'(not_loaded, Mod, Stream, TOpts, UserFile, Imports) :-
|
'$start_lf'(not_loaded, Mod, Stream, TOpts, UserFile, Reexport,Imports) :-
|
||||||
'$file_loaded'(Stream, Mod, Imports, TOpts), !,
|
'$file_loaded'(Stream, Mod, Imports, TOpts), !,
|
||||||
'$lf_opt'('$options', TOpts, Opts),
|
'$lf_opt'('$options', TOpts, Opts),
|
||||||
'$lf_opt'('$location', TOpts, ParentF:Line),
|
'$lf_opt'('$location', TOpts, ParentF:Line),
|
||||||
'$loaded'(Stream, UserFile, Mod, ParentF, Line, not_loaded, _File, _Dir, Opts),
|
'$loaded'(Stream, UserFile, Mod, ParentF, Line, not_loaded, _File, _Dir, Opts),
|
||||||
'$reexport'( TOpts, ParentF, Imports, _File ).
|
'$reexport'( TOpts, ParentF, Reexport, Imports, _File ).
|
||||||
'$start_lf'(changed, Mod, Stream, TOpts, UserFile, Imports) :-
|
'$start_lf'(changed, Mod, Stream, TOpts, UserFile, Reexport, Imports) :-
|
||||||
'$file_unchanged'(Stream, Mod, Imports, TOpts), !,
|
'$file_unchanged'(Stream, Mod, Imports, TOpts), !,
|
||||||
'$lf_opt'('$options', TOpts, Opts),
|
'$lf_opt'('$options', TOpts, Opts),
|
||||||
'$lf_opt'('$location', TOpts, ParentF:Line),
|
'$lf_opt'('$location', TOpts, ParentF:Line),
|
||||||
'$loaded'(Stream, UserFile, Mod, ParentF, Line, changed, _File, _Dir, Opts),
|
'$loaded'(Stream, UserFile, Mod, ParentF, Line, changed, _File, _Dir, Opts),
|
||||||
'$reexport'( TOpts, ParentF, Imports, _File ).
|
'$reexport'( TOpts, ParentF, Reexport, Imports, _File ).
|
||||||
'$start_lf'(_, Mod, Stream, TOpts, File, _) :-
|
'$start_lf'(_, Mod, Stream, TOpts, File, Reexport, Imports) :-
|
||||||
'$do_lf'(Mod, Stream, File, TOpts).
|
'$do_lf'(Mod, Stream, File, TOpts).
|
||||||
|
|
||||||
|
|
||||||
@ -562,6 +562,7 @@ db_files(Fs) :-
|
|||||||
|
|
||||||
'$do_lf'(ContextModule, Stream, UserFile, TOpts) :-
|
'$do_lf'(ContextModule, Stream, UserFile, TOpts) :-
|
||||||
'$lf_opt'('$context_module', TOpts, ContextModule),
|
'$lf_opt'('$context_module', TOpts, ContextModule),
|
||||||
|
'$lf_opt'(reexport, TOpts, Reexport),
|
||||||
'$msg_level'( TOpts, Verbosity),
|
'$msg_level'( TOpts, Verbosity),
|
||||||
% format( 'I=~w~n', [Verbosity=UserFile] ),
|
% format( 'I=~w~n', [Verbosity=UserFile] ),
|
||||||
'$lf_opt'(encoding, TOpts, Encoding),
|
'$lf_opt'(encoding, TOpts, Encoding),
|
||||||
@ -624,7 +625,7 @@ db_files(Fs) :-
|
|||||||
'$bind_module'(Mod, UseModule),
|
'$bind_module'(Mod, UseModule),
|
||||||
'$lf_opt'(imports, TOpts, Imports),
|
'$lf_opt'(imports, TOpts, Imports),
|
||||||
'$import_to_current_module'(File, ContextModule, Imports, _, TOpts),
|
'$import_to_current_module'(File, ContextModule, Imports, _, TOpts),
|
||||||
'$reexport'( TOpts, ParentF, Imports, File ),
|
'$reexport'( TOpts, ParentF, Reexport, Imports, File ),
|
||||||
( LC == 0 -> prompt(_,' |: ') ; true),
|
( LC == 0 -> prompt(_,' |: ') ; true),
|
||||||
'$exec_initialisation_goals',
|
'$exec_initialisation_goals',
|
||||||
% format( 'O=~w~n', [Mod=UserFile] ),
|
% format( 'O=~w~n', [Mod=UserFile] ),
|
||||||
@ -1087,9 +1088,8 @@ may result in incorrect execution.
|
|||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
**/
|
**/
|
||||||
'$reexport'( TOpts, File, Imports, OldF ) :-
|
'$reexport'( TOpts, File, Reexport, Imports, OldF ) :-
|
||||||
'$lf_opt'(reexport, TOpts, Reexport),
|
( Reexport == false -> true ;
|
||||||
( Reexport == false -> true ;
|
|
||||||
'$lf_opt'('$parent_topts', TOpts, OldTOpts),
|
'$lf_opt'('$parent_topts', TOpts, OldTOpts),
|
||||||
'$lf_opt'('$context_module', OldTOpts, OldContextModule),
|
'$lf_opt'('$context_module', OldTOpts, OldContextModule),
|
||||||
'$import_to_current_module'(File, OldContextModule, Imports, _, TOpts),
|
'$import_to_current_module'(File, OldContextModule, Imports, _, TOpts),
|
||||||
|
@ -498,7 +498,7 @@ of predicates.
|
|||||||
'$convert_for_export'(all, Exports, DonorM, HostM, TranslationTab, AllExports0, load_files),
|
'$convert_for_export'(all, Exports, DonorM, HostM, TranslationTab, AllExports0, load_files),
|
||||||
sort( AllExports0, AllExports ),
|
sort( AllExports0, AllExports ),
|
||||||
( source_location(_, Line) -> true ; Line = 0 ),
|
( source_location(_, Line) -> true ; Line = 0 ),
|
||||||
'$add_to_imports'(TranslationTab, DonorM, HostM), % insert ops, at least for now
|
'$add_to_imports'(TranslationTab, DonorM, DonorM), % insert ops, at least for now
|
||||||
% last, export everything to the host: if the loading crashed you didn't actually do
|
% last, export everything to the host: if the loading crashed you didn't actually do
|
||||||
% no evil.
|
% no evil.
|
||||||
recorda('$module','$module'(DonorF,DonorM,AllExports, Line),_).
|
recorda('$module','$module'(DonorF,DonorM,AllExports, Line),_).
|
||||||
@ -507,7 +507,7 @@ of predicates.
|
|||||||
( recorded('$module','$module'( DonorF, DonorM, _, DonorExports),_) -> true ; DonorF = user_input ),
|
( recorded('$module','$module'( DonorF, DonorM, _, DonorExports),_) -> true ; DonorF = user_input ),
|
||||||
( recorded('$module','$module'( HostF, HostM, _, _),_) -> true ; HostF = user_input ),
|
( recorded('$module','$module'( HostF, HostM, _, _),_) -> true ; HostF = user_input ),
|
||||||
recorded('$module','$module'(HostF,HostM,AllExports, _Line), R), erase(R),
|
recorded('$module','$module'(HostF,HostM,AllExports, _Line), R), erase(R),
|
||||||
'$convert_for_export'(Exports, DonorExports, DonorM, HostM, _TranslationTab, AllReExports, reexport(DonorF, Exports)),
|
'$convert_for_export'(Exports, DonorExports, DonorM, HostM, TranslationTab, AllReExports, reexport(DonorF, Exports)),
|
||||||
lists:append( AllReExports, AllExports, Everything0 ),
|
lists:append( AllReExports, AllExports, Everything0 ),
|
||||||
sort( Everything0, Everything ),
|
sort( Everything0, Everything ),
|
||||||
( source_location(_, Line) -> true ; Line = 0 ),
|
( source_location(_, Line) -> true ; Line = 0 ),
|
||||||
|
@ -5,8 +5,9 @@
|
|||||||
[
|
[
|
||||||
op(100, xf, *),
|
op(100, xf, *),
|
||||||
op(1200, xfx, :->),
|
op(1200, xfx, :->),
|
||||||
|
op(1200, xfx, :<-),
|
||||||
op(910, xfy, ::),
|
op(910, xfy, ::),
|
||||||
op(200, fy, @),
|
op(200, fy, @),
|
||||||
op(250, yfx, ?),
|
op(250, yfx, ?),
|
||||||
op(990, xfx, :=)
|
op(990, xfx, :=)
|
||||||
]).
|
]).
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
]).
|
]).
|
||||||
:- use_module(library(error)).
|
:- use_module(library(error)).
|
||||||
:- use_module(library(pure_input)).
|
:- use_module(library(pure_input)).
|
||||||
|
:- use_module( library(lists) ).
|
||||||
|
|
||||||
/** <module> Define Quasi Quotation syntax
|
/** <module> Define Quasi Quotation syntax
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
op(1150, fx, record)
|
op(1150, fx, record)
|
||||||
]).
|
]).
|
||||||
:- use_module(library(error)).
|
:- use_module(library(error)).
|
||||||
|
:- use_module(library(lists)).
|
||||||
|
|
||||||
/** <module> Access compound arguments by name
|
/** <module> Access compound arguments by name
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user