This commit is contained in:
Vitor Santos Costa 2017-05-02 04:07:23 +01:00
parent 3cb343479e
commit 83b137f117
11 changed files with 71 additions and 106 deletions

View File

@ -35,7 +35,6 @@ modules.yap
newmod.yap newmod.yap
os.yap os.yap
pathconf.yap pathconf.yap
pl
preddecls.yap preddecls.yap
preddyns.yap preddyns.yap
preds.yap preds.yap
@ -59,6 +58,8 @@ yapor.yap
yio.yap yio.yap
) )
add_to_group( pl_boot_library PL_SOURCES )
add_custom_target (${YAP_STARTUP} ALL SOURCES ${PL_SOURCES} ${YAPOS_PL_SOURCES} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) add_custom_target (${YAP_STARTUP} ALL SOURCES ${PL_SOURCES} ${YAPOS_PL_SOURCES} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} )
if ( NOT CMAKE_CROSSCOMPILING ) if ( NOT CMAKE_CROSSCOMPILING )

View File

@ -1,4 +1,4 @@
/************************************************************************* pattr/*************************************************************************
* * * *
* YAP Prolog * * YAP Prolog *
* * * *
@ -18,16 +18,13 @@
/** /**
@file attributes.yap @file attributes.yap
@defgroup New_Style_Attribute_Declarations SWI Compatible attributes @defgroup New_Style_Attribute_Declarations SWI Compatible attributes
@{ @{
@ingroup attributes @ingroup attributes
*/ */
:- module('$attributes', [ :- module('attributes', [delayed_goals/4]).
delayed_goals/4
], []).
:- use_system_module( '$_boot', ['$undefp'/1]). :- use_system_module( '$_boot', ['$undefp'/1]).
@ -348,37 +345,29 @@ printing and other special purpose operations.
User-defined procedure, called to convert the attributes in _Var_ to User-defined procedure, called to convert the attributes in _Var_ to
a _Goal_. Should fail when no interpretation is available. a _Goal_. Should fail when no interpretation is available.
*/ */
attvar_residuals([], _) --> [].
attvar_residuals(att(Module,Value,As), V) --> attvar_residuals(att(Module,Value,As), V) -->
( { nonvar(V) } ( { nonvar(V) }
-> % a previous projection predicate could have instantiated -> % a previous projection predicate could have instantiated
% this variable, for example, to avoid redundant goals % this variable, for example, to avoid redundant goals
[] []
; { attributes:module_has_attributes(Module) } -> ; generate_goals( V, As, Value, Module)
% SICStus like run, put attributes back first ).
{ Value =.. [Name,_|Vs],
NValue =.. [Name,_|Vs], generate_goals( V, _, Value, Module) -->
attributes:put_module_atts(V,NValue) { attributes:module_has_attributes(Module) },
}, % like run, put attributes back first
attvar_residuals(As, V), { Value =.. [Name,_|Vs],
( { '$undefined'(attribute_goal(V, Goal), Module) } NValue =.. [Name,_|Vs],
-> attributes:put_module_atts(V,NValue)
[] },
; { current_predicate(Module:attribute_goal/2) },
{ call(Module:attribute_goal(V, Goal)) }, { call(Module:attribute_goal(V, Goal)) },
dot_list(Goal) dot_list(Goal),
) [put_attr(V, Module, Value)].
; ( { current_predicate(Module:attribute_goals/3) } generate_goals( V, _, _Value , Module) -->
-> { call(Module:attribute_goals(V, Goals, [])) }, { '$pred_exists'(attribute_goals(_,_,_), Module) },
list(Goals) call(Module:attribute_goals(V) ).
; { current_predicate(Module:attribute_goal/2) }
-> { call(Module:attribute_goal(V, Goal)) },
dot_list(Goal)
; [put_attr(V, Module, Value)]
),
attvar_residuals(As, V)
).
attributes:module_has_attributes(Mod) :- attributes:module_has_attributes(Mod) :-
attributes:attributed_module(Mod, _, _), !. attributes:attributed_module(Mod, _, _), !.
@ -451,7 +440,7 @@ call_residue(Goal,Module,Residue) :-
), ),
copy_term(Goal, Goal, Residue). copy_term(Goal, Goal, Residue).
delayed_goals(G, Vs, NVs, Gs) :- attributes:delayed_goals(G, Vs, NVs, Gs) :-
project_delayed_goals(G), project_delayed_goals(G),
% term_factorized([G|Vs], [_|NVs], Gs). % term_factorized([G|Vs], [_|NVs], Gs).
copy_term([G|Vs], [_|NVs], Gs). copy_term([G|Vs], [_|NVs], Gs).
@ -481,10 +470,11 @@ att_vars([_|LGs], AttVars) :-
% make sure we set the suspended goal list to its previous state! % make sure we set the suspended goal list to its previous state!
% make sure we have installed a SICStus like constraint solver. % make sure we have installed a SICStus like constraint solver.
/** @pred _Module_:project_attributes( _+QueryVars_, _+AttrVars_) /** @pred _Module_:project_attributes(+AttrVars, +Goal)
Given a list of variables _QueryVars_ and list of attributed
Given a goal _Goa]l_ with variables _QueryVars_ and list of attributed
variables _AttrVars_, project all attributes in _AttrVars_ to variables _AttrVars_, project all attributes in _AttrVars_ to
_QueryVars_. Although projection is constraint system dependent, _QueryVars_. Although projection is constraint system dependent,
typically this will involve expressing all constraints in terms of typically this will involve expressing all constraints in terms of
@ -495,7 +485,7 @@ Projection interacts with attribute_goal/2 at the Prolog top
level. When the query succeeds, the system first calls level. When the query succeeds, the system first calls
project_attributes/2. The system then calls project_attributes/2. The system then calls
attribute_goal/2 to get a user-level representation of the attribute_goal/2 to get a user-level representation of the
constraints. Typically, attribute_goal/2 will convert from the constraints. Typically, project_attributes/2 will convert from the
original constraints into a set of new constraints on the projection, original constraints into a set of new constraints on the projection,
and these constraints are the ones that will have an and these constraints are the ones that will have an
attribute_goal/2 handler. attribute_goal/2 handler.
@ -523,5 +513,3 @@ project_module([_|LMods], LIV, LAV) :-
project_module(LMods,LIV,LAV). project_module(LMods,LIV,LAV).
%% @} %% @}

View File

@ -1,4 +1,3 @@
/************************************************************************* /*************************************************************************
* * * *
* YAP Prolog * * YAP Prolog *
@ -18,11 +17,10 @@
/** /**
@file boot.yap @file boot.yap
@brief YAP bootstrap
@addtogroup builtins Core YAP Builtins
@defgroup YAPControl Control Predicates @defgroup YAPControl Control Predicates
@ingroup builtins
@{ @{
@ -291,7 +289,7 @@ private(_).
source_location(F0, L), source_location(F0, L),
format('~a:~d:0: error in bootstrap:~n ~w~n', [F0,L,Error]), format('~a:~d:0: error in bootstrap:~n ~w~n', [F0,L,Error]),
fail. fail.
'$bootstrap_predicate'(delayed_goals(_, _, _ ), _M, _) :- !, '$bootstrap_predicate'(delayed_goals(_, _, _ , _), _M, _) :- !,
fail. fail.
'$bootstrap_predicate'(sort(L, S), _M, _) :- !, '$bootstrap_predicate'(sort(L, S), _M, _) :- !,
'$sort'(L, S). '$sort'(L, S).
@ -807,7 +805,7 @@ number of steps.
( (
CP is '$last_choice_pt', CP is '$last_choice_pt',
'$current_choice_point'(NCP1), '$current_choice_point'(NCP1),
'$attributes':delayed_goals(G, V, NV, LGs), attributes:delayed_goals(G, V, NV, LGs),
'$current_choice_point'(NCP2), '$current_choice_point'(NCP2),
'$clean_ifcp'(CP), '$clean_ifcp'(CP),
NCP is NCP2-NCP1 NCP is NCP2-NCP1

View File

@ -941,18 +941,6 @@ source_file(Mod:Pred, FileName) :-
SWI-compatible predicate. True if the predicate specified by _ModuleAndPred_ was loaded from file _File_, where _File_ is an absolute path name (see `absolute_file_name/2`). SWI-compatible predicate. True if the predicate specified by _ModuleAndPred_ was loaded from file _File_, where _File_ is an absolute path name (see `absolute_file_name/2`).
*/
%% @}
%% @{
/** @addtogroup YAPLibraries Library Predicates
Library files reside in the library_directory path (set by the
`LIBDIR` variable in the Makefile for YAP). Currently,
most files in the library are from the Edinburgh Prolog library.
*/ */
prolog_load_context(directory, DirName) :- prolog_load_context(directory, DirName) :-
( source_location(F, _) ( source_location(F, _)
@ -1183,9 +1171,11 @@ unload_file( F0 ) :-
/** /**
@{ @defgroup ModPreds Module Interface Predicates
@ingroup YAPModules
@addtogroup YAPModules
@{
**/ **/
@ -1294,11 +1284,12 @@ account the following observations:
@} @}
**/ **/
%% @{
/** @defgroup YAPCompilerSettings Directing and Configuring the Compiler /** @defgroup YAPCompilerSettings Directing and Configuring the Compiler
@ingroup YAPProgramming @ingroup YAPProgramming
@{
The YAP system also includes a number of primitives designed to set The YAP system also includes a number of primitives designed to set
compiler parameters and to track the state of the compiler. One compiler parameters and to track the state of the compiler. One
important example is the number of directivees that allow setting up important example is the number of directivees that allow setting up

View File

@ -20,16 +20,8 @@
* @file corout.yap * @file corout.yap
* @author VITOR SANTOS COSTA <vsc@VITORs-MBP.lan> * @author VITOR SANTOS COSTA <vsc@VITORs-MBP.lan>
* @date Mon Nov 16 22:47:27 2015 * @date Mon Nov 16 22:47:27 2015
* * *
* @addtogroup extensions Extensions to Core Prolog */
*
* @{
* @ addtogroup attributes Attributed Variables and Co-Routining
* @{
* @brief Support for co-routining
*
*
*/
:- module('$coroutining',[ :- module('$coroutining',[
@ -43,15 +35,21 @@
:- use_system_module( '$_boot', ['$$compile'/4]). :- use_system_module( '$_boot', ['$$compile'/4]).
:- use_system_module( attributes, [get_module_atts/2, :- use_system_module( attributes, [get_module_atts/2,
put_module_atts/2]). put_module_atts/2]).
%%@{ /**
* @defgroup corout Implementing Attributed Variables and Co-Routining
*
* @ingroup attributes
* @{
* @brief Support for co-routining
*
*
”” */
%% @aaddtogroup CohYroutining
%% @ingroup attributes
/** @pred attr_unify_hook(+ _AttValue_,+ _VarValue_) /** @pred attr_unify_hook(+ _AttValue_,+ _VarValue_)
@ -580,5 +578,4 @@ check_first_attvar([_|Vs], V0) :-
/** /**
@} @}
@}
*/ */

View File

@ -1,6 +1,3 @@
%%% @{
%%% @addtogroup YAPModules
/************************************************************************* /*************************************************************************
* * * *
* YAP Prolog * * YAP Prolog *
@ -28,6 +25,15 @@
:- use_system_module( attributes, [get_module_atts/2, :- use_system_module( attributes, [get_module_atts/2,
put_module_atts/2]). put_module_atts/2]).
%%% @file dbload.yap
%%% @defgroup YAPBigLoad
%%% @brief Fast and Exo Loading
/*!
* @pred load_mega_clause( +Stream ) is detail
* Load a single predicare composed of facts with the same size.
*/
load_mega_clause( Stream ) :- load_mega_clause( Stream ) :-
% line_spec( Stream, Line), % line_spec( Stream, Line),
repeat, repeat,
@ -38,6 +44,10 @@ load_mega_clause( Stream ) :-
'$process_lines'(R, Lines, _Type ), '$process_lines'(R, Lines, _Type ),
close(R). close(R).
/*!
* @pred load_db( +Files ) is det
* Load files each one containing as single predicare composed of facts with the same size.
*/
prolog:load_db(Fs) :- prolog:load_db(Fs) :-
'$current_module'(M0), '$current_module'(M0),
prolog_flag(agc_margin,Old,0), prolog_flag(agc_margin,Old,0),

View File

@ -15,18 +15,6 @@
* * * *
*************************************************************************/ *************************************************************************/
/**
@defgroup YAPProgramming Programming in YAP
+ @ref Syntax
+ @ref YAPCompilerSettings
+ @ref Indexing
+ @ref Deb_Interaction
*/
:- system_module( '$_directives', [user_defined_directive/2], ['$all_directives'/1, :- system_module( '$_directives', [user_defined_directive/2], ['$all_directives'/1,
'$exec_directives'/5]). '$exec_directives'/5]).

View File

@ -25,12 +25,12 @@
@} @}
@addtogroup YAPControl @addtogroup YAPControl
@ingroup builtins
@{ @{
*/ */
:- system_module( '$_init', [!/0, :- system_module( '$_init', [!/0,
(:-)/1, ':-'/1,
(?-)/1, '?-'/1,
[]/0, []/0,
extensions_to_present_answer/1, extensions_to_present_answer/1,
fail/0, fail/0,
@ -40,7 +40,7 @@
otherwise/0, otherwise/0,
term_expansion/2, term_expansion/2,
version/2, version/2,
'$do_log_upd_clause'/6, '$do_log_upd_clause'/6,
'$do_log_upd_clause0'/6, '$do_log_upd_clause0'/6,
'$do_log_upd_clause_erase'/6, '$do_log_upd_clause_erase'/6,
'$do_static_clause'/5], [ '$do_static_clause'/5], [
@ -381,13 +381,4 @@ clause_to_indicator(T, M:Name/Arity) :- ,
strip_module(T, M, T1), strip_module(T, M, T1),
pred_arity( T1, Name, Arity ). pred_arity( T1, Name, Arity ).
:- endif. :- endif.
*/
/**
@}
@defgroup packages YAP Packages
*/ */

View File

@ -1,9 +1,9 @@
/** /**
@{
@defgroup YAPMetaPredicates Using Meta-Calls with Modules @defgroup YAPMetaPredicates Using Meta-Calls with Modules
@ingroup YAPModules @ingroup YAPModules
@{
@pred meta_predicate(_G1_,...., _Gn) is directive @pred meta_predicate(_G1_,...., _Gn) is directive
@ -405,7 +405,7 @@ o:p(B) :- n:g, X is 2+3, call(B).
'$build_up'(HM, NH, SM, B1, (NH :- B1), BO, ( NH :- BO)) :- HM == SM, !. '$build_up'(HM, NH, SM, B1, (NH :- B1), BO, ( NH :- BO)) :- HM == SM, !.
'$build_up'(HM, NH, _SM, B1, (NH :- B1), BO, ( HM:NH :- BO)) :- !. '$build_up'(HM, NH, _SM, B1, (NH :- B1), BO, ( HM:NH :- BO)) :- !.
'$expand_clause_body'(V, _NH1, _HM1, _SM, M, call(M:V), call(M:V) ) :- '$expand_clause_body'(V, _NH1, _HM1, _SM, M, call(M:V), call(M:V) ) :-
var(V), !. var(V), !.
'$expand_clause_body'(true, _NH1, _HM1, _SM, _M, true, true ) :- !. '$expand_clause_body'(true, _NH1, _HM1, _SM, _M, true, true ) :- !.
'$expand_clause_body'(B, H, HM, SM, M, B1, BO ) :- '$expand_clause_body'(B, H, HM, SM, M, B1, BO ) :-

View File

@ -20,6 +20,7 @@
/** /**
@defgroup QLY Creating and Using a saved state @defgroup QLY Creating and Using a saved state
@ingroup YAPConsulting @ingroup YAPConsulting
@{
*/ */
:- system_module( '$_qly', [qload_module/1, :- system_module( '$_qly', [qload_module/1,
@ -49,7 +50,7 @@
:- use_system_module( '$_yio', ['$extend_file_search_path'/1]). :- use_system_module( '$_yio', ['$extend_file_search_path'/1]).
/**
YAP can save and read images of its current state to files, known as YAP can save and read images of its current state to files, known as
saved states. It is possible to save the entire state or just a module saved states. It is possible to save the entire state or just a module
or a file. Notice that saved states in YAP depend on the architecture or a file. Notice that saved states in YAP depend on the architecture

View File

@ -1,4 +1,4 @@
/************************************************************************* /*************************************************************************
* * * *
* YAP Prolog * * YAP Prolog *
* * * *