diff --git a/C/c_interface.c b/C/c_interface.c index ee86569f9..60de2cef6 100755 --- a/C/c_interface.c +++ b/C/c_interface.c @@ -1740,10 +1740,10 @@ X_API bool YAP_EnterGoal(YAP_PredEntryPtr ape, CELL *ptr, YAP_dogoalinfo *dgi) { dgi->b = dgi->b0 = LCL0 - (CELL *)B; dgi->h = HR-H0; dgi->tr = (CELL*)TR-LCL0; - fprintf(stderr,"PrepGoal: H=%d ENV=%p B=%d TR=%d P=%p CP=%p Slots=%d\n", - HR-H0,LCL0-ENV,LCL0-(CELL*)B,(CELL*)TR-LCL0, P, CP, LOCAL_CurSlot); + //fprintf(stderr,"PrepGoal: H=%d ENV=%p B=%d TR=%d P=%p CP=%p Slots=%d\n", + // HR-H0,LCL0-ENV,LCL0-(CELL*)B,(CELL*)TR-LCL0, P, CP, LOCAL_CurSlot); out = Yap_exec_absmi(true, false); - fprintf(stderr,"LeaveGoal success=%d: H=%d ENV=%p B=%d TR=%d P=%p CP=%p Slots=%d\n", out,HR-H0,LCL0-ENV,LCL0-(CELL*)B,(CELL*)TR-LCL0, P, CP, LOCAL_CurSlot); + // fprintf(stderr,"LeaveGoal success=%d: H=%d ENV=%p B=%d TR=%d P=%p CP=%p Slots=%d\n", out,HR-H0,LCL0-ENV,LCL0-(CELL*)B,(CELL*)TR-LCL0, P, CP, LOCAL_CurSlot); if (out) { dgi->EndSlot = LOCAL_CurSlot; Yap_StartSlots(); @@ -1772,8 +1772,8 @@ X_API bool YAP_RetryGoal(YAP_dogoalinfo *dgi) { // get rid of garbage choice-points B = myB; } - fprintf(stderr,"RetryGoal: H=%d ENV=%p B=%d TR=%d P=%p CP=%p Slots=%d\n", - HR-H0,LCL0-ENV,LCL0-(CELL*)B,(CELL*)TR-LCL0, P, CP, LOCAL_CurSlot); + //fprintf(stderr,"RetryGoal: H=%d ENV=%p B=%d TR=%d P=%p CP=%p Slots=%d\n", + // HR-H0,LCL0-ENV,LCL0-(CELL*)B,(CELL*)TR-LCL0, P, CP, LOCAL_CurSlot); P = FAILCODE; /* make sure we didn't leave live slots when we backtrack */ ASP = (CELL *)B; @@ -1794,8 +1794,8 @@ X_API bool YAP_LeaveGoal(bool successful, YAP_dogoalinfo *dgi) { CACHE_REGS choiceptr myB; - fprintf(stderr,"LeaveGoal success=%d: H=%d ENV=%p B=%d TR=%d P=%p CP=%p Slots=%d\n", - successful,HR-H0,LCL0-ENV,LCL0-(CELL*)B,(CELL*)TR-LCL0, P, CP, LOCAL_CurSlot); + // fprintf(stderr,"LeaveGoal success=%d: H=%d ENV=%p B=%d TR=%d P=%p CP=%p Slots=%d\n", + // successful,HR-H0,LCL0-ENV,LCL0-(CELL*)B,(CELL*)TR-LCL0, P, CP, LOCAL_CurSlot); BACKUP_MACHINE_REGS(); myB = (choiceptr)(LCL0 - dgi->b0); if (B < myB) { diff --git a/C/write.c b/C/write.c index 0c7c87795..45666357f 100644 --- a/C/write.c +++ b/C/write.c @@ -1,4 +1,3 @@ - /************************************************************************* * * * YAP Prolog * @@ -706,7 +705,6 @@ static void write_list(Term t, int direction, int depth, while (1) { writeTerm(HeadOfTerm(t), 999, depth + 1, FALSE, wglb); - Yap_DebugPlWriteln(TermNil); t = Yap_GetFromHandle(h); t = TailOfTerm(t); if (IsVarTerm(t)) @@ -1072,7 +1070,7 @@ void Yap_plwrite(Term t, StreamDesc *mywrite, int max_depth, int flags, struct write_globs wglb; yhandle_t sls = Yap_CurrentSlot(); int lvl = push_text_stack(); - + t = Deref(t); if (t == 0) return; if (!mywrite) { diff --git a/H/YapGFlagInfo.h b/H/YapGFlagInfo.h index ea7d8a732..552ecfdde 100644 --- a/H/YapGFlagInfo.h +++ b/H/YapGFlagInfo.h @@ -45,43 +45,32 @@ opportunity. Initial value is 10,000. May be changed. A value of 0 YAP_FLAG(ALLOW_VARIABLE_NAME_AS_FUNCTOR_FLAG, "allow_variable_name_as_functor", false, booleanFlag, "false", - NULL),/**< - boolean flag to enable syntax such + NULL), /**< + + boolean flag allows syntax such as ~~~ Tree(Node(L,node,R)) :- Tree(L), - Tree(R). + Tree(R). ~~~ */ + + /**< `answer_format` how to present answers, default is `~p`. */ YAP_FLAG(ANSWER_FORMAT_FLAG, "answer_format", true, isatom, "~p", NULL), - /**< how to present answers, default is `~p`. */ #if __APPLE__ YAP_FLAG(APPLE_FLAG, "apple", false, booleanFlag, "true", NULL), /**< - `read-only boolean, true if in a machine running an Apple Operating System * - */ + read-only boolean, a machine running an Apple Operating System */ #endif + YAP_FLAG(ARCH_FLAG, "arch", false, isatom, YAP_ARCH, NULL), /**< + `apple`: read-only atom, it describes the ISA used in this version of YAP. + Available from YAP_AEH. + */ - YAP_FLAG(ARCH_FLAG, "arch", false, isatom, YAP_ARCH, NULL),/**< - read-only atom, it describes the ISA used in this version of YAP. - Extracted from YAP_ARCH. - */ - - YAP_FLAG(ARGV_FLAG, "argv", false, argv, "@boot", NULL), /**< - * read-only flag that stores the arguments passed from the calling program to the Prolog system, - * - * As an example, if YAP was called as follows: - * ~~~~~ - * yap -l script -z main -- /home 33 - * ~~~~ - * the finall two arguments would be available as: - * ['home'. '33'] - */ - - YAP_FLAG(ARITHMETIC_EXCEPTIONS_FLAG, "arithmetic_exceptions", true, - booleanFlag, "true", NULL), /**< ` + YAP_FLAG(ARGV_FLAG, "argv", false, argv, "@boot", NULL), + /**< `arithmetic_exceptions` Read-write flag telling whether arithmetic exceptions generate Prolog exceptions. If enabled: @@ -101,81 +90,79 @@ opportunity. Initial value is 10,000. May be changed. A value of 0 It is `true` by default, but it is disabled by packages like CLP(BN) and ProbLog. */ - YAP_FLAG(BACK_QUOTES_FLAG, "back_quotes", true, isatom, "true", NULL), + YAP_FLAG(ARITHMETIC_EXCEPTIONS_FLAG, "arithmetic_exceptions", true, + booleanFlag, "true", NULL), /**> If _Value_ is unbound, tell whether a back quoted list of characters token is converted to a list of atoms, `chars`, to a list of integers, `codes`, or to a single atom, `atom`. If _Value_ is bound, set to the corresponding behavior. The default value is `string` */ - - YAP_FLAG(BOUNDED_FLAG, "bounded", false, booleanFlag, "false", NULL), + YAP_FLAG(BACK_QUOTES_FLAG, "back_quotes", true, isatom, "true", NULL), /**< `bounded` is iso - Read-only flag telling whether integers are bounded. The value depends - on whether YAP uses the GMP library or not. -*/ + Read-only flag telling whether integers are bounded. The value depends + on whether YAP uses the GMP library or not. + */ + YAP_FLAG(BOUNDED_FLAG, "bounded", false, booleanFlag, "false", NULL), YAP_FLAG(C_CC_FLAG, "c_cc", false, isatom, C_CC, NULL), -/**< C compiler used to compile YAP. */ YAP_FLAG(C_CFLAGS_FLAG, "c_cflags", false, isatom, C_CFLAGS, NULL), - /**< preprocessor flags that were used to compile YAP */ YAP_FLAG(C_LDFLAGS_FLAG, "c_ldflags", false, isatom, C_LDFLAGS, NULL), - /**< flags used to link YAP */ YAP_FLAG(C_LIBPLSO_FLAG, "c_libplso", false, isatom, C_LIBPLSO, NULL), - /**< name of YAP as a dynamic librar */ YAP_FLAG(C_LIBS_FLAG, "c_libs", false, isatom, C_LIBS, NULL), - /**< libraries use to link YAP' */ - YAP_FLAG(CHAR_CONVERSION_FLAG, "char_conversion", true, booleanFlag, - "false", NULL), /**< + /**< `char_conversion is iso` + Writable flag telling whether a character conversion table is used when reading terms. The default value for this flag is `off` except in `sicstus` and `iso` language modes, where it is `on`. */ + YAP_FLAG(CHAR_CONVERSION_FLAG, "char_conversion", true, booleanFlag, + "false", NULL), + /**< `character_escapes is iso ` - - YAP_FLAG(CHARACTER_ESCAPES_FLAG, "character_escapes", true, booleanFlag, - "true", NULL),/**< Writable flag telling whether a character escapes are enables, `true`, or disabled, `false`. The default value for this flag is `true`. */ + YAP_FLAG(CHARACTER_ESCAPES_FLAG, "character_escapes", true, booleanFlag, + "true", NULL), YAP_FLAG(COLON_SETS_CALLING_CONTEXT_FLAG, "colon_sets_calling_context", true, booleanFlag, "true", NULL), - /**< use colom to set the caller module, and override the current default module. */ - YAP_FLAG(COMPILED_AT_FLAG, "compiled_at", false, isatom, YAP_COMPILED_AT, - NULL), /**< `compiled_at ` + /**< `compiled_at ` Read-only flag that gives the time when the main YAP binary was compiled. It is obtained staight from the __TIME__ macro, as defined in the C99. */ - - - YAP_FLAG(DEBUG_FLAG, "debug", true, booleanFlag, "false", NULL),/**< `debug is iso ` + YAP_FLAG(COMPILED_AT_FLAG, "compiled_at", false, isatom, YAP_COMPILED_AT, + NULL), + /**< `debug is iso ` If _Value_ is unbound, tell whether debugging is `true` or `false`. If _Value_ is bound to `true` enable debugging, and if it is bound to `false` disable debugging. */ - YAP_FLAG(DEBUG_INFO_FLAG, "debug_info", true, booleanFlag, "true", NULL),/**< generate debugging data */ + YAP_FLAG(DEBUG_FLAG, "debug", true, booleanFlag, "false", NULL), + YAP_FLAG(DEBUG_INFO_FLAG, "debug_info", true, booleanFlag, "true", NULL), YAP_FLAG(DEBUG_ON_ERROR_FLAG, "debug_on_error", true, booleanFlag, "true", - NULL), /**< call debugger on generating an error */ + NULL), + /**< `debugger_print_options ` - YAP_FLAG(DEBUGGER_PRINT_OPTIONS_FLAG, "debugger_print_options", true, - list_option, - "[quoted(true),numbervars(true),portrayed(true),max_depth(10)]", - NULL), /**< If bound, set the argument to the `write_term/3` options the debugger uses to write terms. If unbound, show the current options. */ + YAP_FLAG(DEBUGGER_PRINT_OPTIONS_FLAG, "debugger_print_options", true, + list_option, + "[quoted(true),numbervars(true),portrayed(true),max_depth(10)]", + NULL), YAP_FLAG(DEBUGGER_SHOW_CONTEXT_FLAG, "debugger_show_context", true, - booleanFlag, "false", NULL), /**< - * always show the current source module while debugging. YAP will only show the calling module if not `prolog`oy `user`*/ + booleanFlag, "false", NULL), + /**< `dialect ` - YAP_FLAG(DIALECT_FLAG, "dialect", false, ro, "yap", NULL), /**< Read-only flag that always returns `yap`. */ - YAP_FLAG(DISCONTIGUOUS_WARNINGS_FLAG, "discontiguous_warnings", true, - booleanFlag, "true", NULL), /**< + YAP_FLAG(DIALECT_FLAG, "dialect", false, ro, "yap", NULL), + /**< `discontiguous_warnings ` + If `true` (default `true`) YAP checks for definitions of the same predicate that are separated by clauses for other predicates. This may indicate that different procedures have the same name. @@ -184,41 +171,39 @@ opportunity. Initial value is 10,000. May be changed. A value of 0 predicates. */ - - YAP_FLAG(DOLLAR_AS_LOWER_CASE_FLAG, "dollar_as_lower_case", true, - booleanFlag, "false", NULL), /**< `dollar_as_lower_case ` + YAP_FLAG(DISCONTIGUOUS_WARNINGS_FLAG, "discontiguous_warnings", true, + booleanFlag, "true", NULL), + /**< `dollar_as_lower_case ` If `off` (default) consider the character `$` a control character, if `on` consider `$` a lower case character. */ - - - YAP_FLAG(DOUBLE_QUOTES_FLAG, "double_quotes", true, isatom, "codes", dqs),/**< `double_quotes is iso ` + YAP_FLAG(DOLLAR_AS_LOWER_CASE_FLAG, "dollar_as_lower_case", true, + booleanFlag, "false", NULL), + /**< `double_quotes is iso ` If _Value_ is unbound, tell whether a double quoted list of characters token is converted to a list of atoms, `chars`, to a list of integers, `codes`, or to a single atom, `atom`. If _Value_ is bound, set to the corresponding behavior. The default value is `codes`. */ - - YAP_FLAG(EDITOR_FLAG, "editor", true, isatom, "$EDITOR", NULL), /**< - * Report the current default editor, as defined by the environment variable EDITOR. - */ - - YAP_FLAG(EXECUTABLE_FLAG, "executable", false, executable, "@boot", NULL),/**< + YAP_FLAG(DOUBLE_QUOTES_FLAG, "double_quotes", true, isatom, "codes", dqs), + YAP_FLAG(EDITOR_FLAG, "editor", true, isatom, "$EDITOR", NULL), + /**< `executable ` Read-only flag. It unifies with an atom that gives the original program path. */ - - YAP_FLAG(FAST_FLAG, "fast", true, booleanFlag, "false", NULL),/**< `fast ` + YAP_FLAG(EXECUTABLE_FLAG, "executable", false, executable, "@boot", NULL), + /**< `fast ` If `on` allow fast machine code, if `off` (default) disable it. Only available in experimental implementations. */ + YAP_FLAG(FAST_FLAG, "fast", true, booleanFlag, "false", NULL), YAP_FLAG(FILE_NAME_VARIABLES_FLAG, "file_name_variables", true, booleanFlag, - "true", NULL),/**< non-implemented */ + "true", NULL), + /**< + `float_format ` - YAP_FLAG(FLOAT_FORMAT_FLAG, "float_format", true, isatom, "%.16f", NULL),/**< C-library `printf()` format specification used by write/1 and friends to determine how floating point numbers are printed. The default is `%.15g`. The specified value is passed to `printf()` @@ -226,18 +211,21 @@ opportunity. Initial value is 10,000. May be changed. A value of 0 printed, `%g` will print all floats using 6 digits instead of the default 15. */ + YAP_FLAG(FLOAT_FORMAT_FLAG, "float_format", true, isatom, "%.16f", NULL), + /**< `gc` - YAP_FLAG(GC_FLAG, "gc", true, booleanFlag, "on", NULL),/**< If `on` allow garbage collection (default), if `off` disable it. */ + YAP_FLAG(GC_FLAG, "gc", true, booleanFlag, "on", NULL), + /**< `gc_margin ` - YAP_FLAG(GC_MARGIN_FLAG, "gc_margin", true, nat, "0", gc_margin),/**< Set or show the minimum free stack before starting garbage collection. The default depends on total stack size. */ - YAP_FLAG(GC_TRACE_FLAG, "gc_trace", true, isatom, "off", NULL), - /**< ` + YAP_FLAG(GC_MARGIN_FLAG, "gc_margin", true, nat, "0", gc_margin), + /**< `gc_trace ` + If `off` (default) do not show information on garbage collection and stack shifts, if `on` inform when a garbage collection or stack shift happened, if verbose give detailed information on garbage @@ -245,15 +233,17 @@ opportunity. Initial value is 10,000. May be changed. A value of 0 information on data-structures found during the garbage collection process, namely, on choice-points. */ + YAP_FLAG(GC_TRACE_FLAG, "gc_trace", true, isatom, "off", NULL), + /**< `generate_debug_info ` - YAP_FLAG(GENERATE_DEBUGGING_INFO_FLAG, "generate_debug_info", true, - booleanFlag, "true", NULL),/**< If `true` (default) generate debugging information for procedures, including source mode. If `false` predicates no information is generated, although debugging is still possible, and source mode is disabled. */ + YAP_FLAG(GENERATE_DEBUGGING_INFO_FLAG, "generate_debug_info", true, + booleanFlag, "true", NULL), YAP_FLAG(GMP_VERSION_FLAG, "gmp_version", false, isatom, "4.8.12", NULL), YAP_FLAG(HALT_AFTER_CONSULT_FLAG, "halt_after_consult", false, booleanFlag, "false", NULL), @@ -394,48 +384,55 @@ opportunity. Initial value is 10,000. May be changed. A value of 0 Yap_InitReadline), YAP_FLAG(REPORT_ERROR_FLAG, "report_error", true, booleanFlag, "true", NULL), - - YAP_FLAG(RESOURCE_DATABASE_FLAG, "resource_database", false, isatom, - YAP_BOOTSTRAP, NULL),/**< + /**<`resource_database` Name of the resource file (saved-state or Prolog file) used to construct the YAP run-time environment. */ + YAP_FLAG(RESOURCE_DATABASE_FLAG, "resource_database", false, isatom, + YAP_BOOTSTRAP, NULL), - YAP_FLAG(SAVED_PROGRAM_FLAG, "saved_program", false, booleanFlag, "false", - NULL), /**< + /**<`saved_program` if `true` YAP booted from a `yss` file, usually `startup.yss'. If `false`, YAP booted from a Prolog file, by default `boot.yap`. */ + YAP_FLAG(SAVED_PROGRAM_FLAG, "saved_program", false, booleanFlag, "false", + NULL), + /**< `shared_object_extension ` + + Suffix associated with loadable code. + */ YAP_FLAG(SHARED_OBJECT_EXTENSION_FLAG, "shared_object_extension", false, isatom, SO_EXT, NULL), - - YAP_FLAG(SHARED_OBJECT_SEARCH_PATH_FLAG, "shared_object_search_path", true, - isatom, SO_PATH, NULL),/**< + /**< `shared_object_search_path ` Name of the environment variable used by the system to search for shared objects. */ - YAP_FLAG(SINGLE_QUOTES_FLAG, "single_quotes", true, isatom, "atom", sqf), -/**< single_quoted text is usuallly interpreted as atoms. This flagTerm + YAP_FLAG(SHARED_OBJECT_SEARCH_PATH_FLAG, "shared_object_search_path", true, + isatom, SO_PATH, NULL), + /**< `single_quoted text is usuallly interpreted as atoms. This flagTerm allows other inerpretations such as strings_contains_strings */ + YAP_FLAG(SINGLE_QUOTES_FLAG, "single_quotes", true, isatom, "atom", sqf), + /**< `signals` - YAP_FLAG(SIGNALS_FLAG, "signals", true, booleanFlag, "true", NULL),/**< If `true` (default) YAP handles Signals such as `^C` (`SIGINT`). */ + YAP_FLAG(SIGNALS_FLAG, "signals", true, booleanFlag, "true", NULL), + /**< `source` - YAP_FLAG(SOURCE_FLAG, "source", true, booleanFlag, "true", NULL),/**< If `true` maintain the source for all clauses. Notice that this is trivially supported for facts, and always supported for dynamic code. */ + YAP_FLAG(SOURCE_FLAG, "source", true, booleanFlag, "true", NULL), + /**< `strict_iso ` - YAP_FLAG(STRICT_ISO_FLAG, "strict_iso", true, booleanFlag, "false", NULL),/**< If _Value_ is unbound, tell whether strict ISO compatibility mode is `on` or `off`. If _Value_ is bound to `on` set language mode to `iso` and enable strict mode. If _Value_ is @@ -456,51 +453,52 @@ opportunity. Initial value is 10,000. May be changed. A value of 0 depends on a Prolog's platform specific features. */ + YAP_FLAG(STRICT_ISO_FLAG, "strict_iso", true, booleanFlag, "false", NULL), + /**< `system_options ` - YAP_FLAG(SYSTEM_OPTIONS_FLAG, "system_options", false, options, - SYSTEM_OPTIONS, NULL), /**< This read only flag tells which options were used to compile YAP. Currently it informs whether the system supports `big_numbers`, `coroutining`, `depth_limit`, `low_level_tracer`, `or-parallelism`, `rational_trees`, `readline`, `tabling`, `threads`, or the `wam_profiler`. */ + YAP_FLAG(SYSTEM_OPTIONS_FLAG, "system_options", false, options, + SYSTEM_OPTIONS, NULL), YAP_FLAG(SYSTEM_THREAD_ID_FLAG, "system_thread_id", false, sys_thread_id, "@boot", NULL), - - YAP_FLAG(TABLING_MODE_FLAG, "tabling_mode", true, isatom, "[]", NULL),/**< `tabling_mode` + /**< `tabling_mode` Sets or reads the tabling mode for all tabled predicates. Please (see Tabling) for the list of options. */ + YAP_FLAG(TABLING_MODE_FLAG, "tabling_mode", true, isatom, "[]", NULL), YAP_FLAG(THREADS_FLAG, "threads", false, ro, "MAX_THREADS", NULL), YAP_FLAG(TIMEZONE_FLAG, "timezone", false, ro, "18000", NULL), YAP_FLAG(TOPLEVEL_PRINT_ANON_FLAG, "toplevel_print_anon", true, booleanFlag, "true", NULL), + /**< `toplevel_hook ` - YAP_FLAG(TOPLEVEL_PRINT_OPTIONS_FLAG, "toplevel_print_options", true, - list_option, "[quoted(true),numbervars(true),portrayed(true)]", - NULL), /**< If bound, set the argument to a goal to be executed before entering the top-level. If unbound show the current goal or `true` if none is presented. Only the first solution is considered and the goal is not backtracked into. */ + YAP_FLAG(TOPLEVEL_PRINT_OPTIONS_FLAG, "toplevel_print_options", true, + list_option, "[quoted(true),numbervars(true),portrayed(true)]", + NULL), YAP_FLAG(TOPLEVEL_PROMPT_FLAG, "toplevel_prompt", true, isatom, "?- ", mkprompt), YAP_FLAG(TTY_CONTROL_FLAG, "tty_control", true, booleanFlag, "true", NULL), - - YAP_FLAG(UNIX_FLAG, "unix", false, ro, "true", NULL),/**< + /**< `unix` Read-only BooleanFlag flag that unifies with `true` if YAP is running on an Unix system. Defined if the C-compiler used to compile this version of YAP either defines `__unix__` or `unix`. */ - - YAP_FLAG(UPDATE_SEMANTICS_FLAG, "update_semantics", true, isatom, "logical", - NULL), /**< `update_semantics ` + YAP_FLAG(UNIX_FLAG, "unix", false, ro, "true", NULL), + /**< `update_semantics ` Define whether YAP should follow `immediate` update semantics, as in C-Prolog (default), `logical` update semantics, @@ -509,8 +507,10 @@ opportunity. Initial value is 10,000. May be changed. A value of 0 procedures follow logical semantics but the internal data base still follows immediate semantics. */ - - YAP_FLAG(USER_FLAGS_FLAG, "user_flags", true, isatom, "error", NULL),/**< + YAP_FLAG(UPDATE_SEMANTICS_FLAG, "update_semantics", true, isatom, "logical", + NULL), + /**< + `user_flags ` Define the behaviour of set_prolog_flag/2 if the flag is not known. Values are `silent`, `warning` and `error`. The first two create the flag @@ -520,82 +520,87 @@ opportunity. Initial value is 10,000. May be changed. A value of 0 are encouraged to use `create_prolog_flag/3` to create flags for their library. */ - - YAP_FLAG(UNKNOWN_FLAG, "unknown", true, isatom, "error", Yap_unknown), /**< `unknown is iso` + YAP_FLAG(USER_FLAGS_FLAG, "user_flags", true, isatom, "error", NULL), + /**< `unknown is iso` Corresponds to calling the unknown/2 built-in. Possible ISO values are `error`, `fail`, and `warning`. Yap includes the following extensions: `fast_fail` does not invoke any handler. */ + YAP_FLAG(UNKNOWN_FLAG, "unknown", true, isatom, "error", Yap_unknown), YAP_FLAG(VARIABLE_NAMES_MAY_END_WITH_QUOTES_FLAG, "variable_names_may_end_with_quotes", true, booleanFlag, "false", NULL), + /**< `verbose ` - YAP_FLAG(VERBOSE_FLAG, "verbose", true, isatom, "normal", NULL),/**< If `normal` allow printing of informational and banner messages, such as the ones that are printed when consulting. If `silent` disable printing these messages. It is `normal` by default except if YAP is booted with the `-q` or `-L` flag. */ + YAP_FLAG(VERBOSE_FLAG, "verbose", true, isatom, "normal", NULL), YAP_FLAG(VERBOSE_AUTOLOAD_FLAG, "verbose_autoload", true, booleanFlag, "false", NULL), - - YAP_FLAG(VERBOSE_FILE_SEARCH_FLAG, "verbose_file_search", true, booleanFlag, - "false", NULL),/**< + /**< `verbose_file_search ` If `true` allow printing of informational messages when searching for file names. If `false` disable printing these messages. It is `false` by default except if YAP is booted with the `-L` flag. */ - - YAP_FLAG(VERBOSE_LOAD_FLAG, "verbose_load", true, isatom, "normal", NULL),/**< + YAP_FLAG(VERBOSE_FILE_SEARCH_FLAG, "verbose_file_search", true, booleanFlag, + "false", NULL), + /**< `verbose_load ` If `true` allow printing of informational messages when consulting files. If `false` disable printing these messages. It is `normal` by default except if YAP is booted with the `-L` flag. */ + YAP_FLAG(VERBOSE_LOAD_FLAG, "verbose_load", true, isatom, "normal", NULL), + /**< `version_data ` - YAP_FLAG(VERSION_FLAG, "version", false, nat, YAP_NUMERIC_VERSION, NULL),/**< Read-only flag that unifies with a number of the form `_Major_ * 100000 + _Minor_ *100 + _Patch_`, where _Major_ is the major version, _Minor_ is the minor version, and _Patch_ is the patch number. */ - - YAP_FLAG(VERSION_DATA_FLAG, "version_data", false, ro, YAP_TVERSION, NULL), /**< - Read-only flag that returns a compound term with the + YAP_FLAG(VERSION_FLAG, "version", false, nat, YAP_NUMERIC_VERSION, NULL), + /**< + `version ` Read-only flag that returns a compound term with the current version of YAP. The term will have the name `yap` and arity 4, the first argument will be the major version, the second the minor version, the third the patch number, and the last one is reserved. */ - - YAP_FLAG(VERSION_GIT_FLAG, "version_git", false, isatom, YAP_GIT_HEAD, - NULL), /**< + YAP_FLAG(VERSION_DATA_FLAG, "version_data", false, ro, YAP_TVERSION, NULL), + /**< `version_git ` + ` this is the unique identifier for the last commit of the current GIT HEAD, it xan be used to identify versions that differ on small (or large) updates. */ + YAP_FLAG(VERSION_GIT_FLAG, "version_git", false, isatom, YAP_GIT_HEAD, + NULL), YAP_FLAG(WRITE_ATTRIBUTES_FLAG, "write_attributes", true, isatom, "ignore", NULL), #if __WINDOWS__ - - YAP_FLAG(WINDOWS_FLAG, "windows", false, ro, "true", NULL), /**< `windows` + /**< `windows` Read-only booleanFlag flag that unifies with `true` if YAP is running on an Windows machine. */ - #endif + YAP_FLAG(WINDOWS_FLAG, "windows", false, ro, "true", NULL), +#endif + /**< `write_strings ` - YAP_FLAG(WRITE_STRINGS_FLAG, "write_strings", true, booleanFlag, "false", - NULL) , /**< Writable flag telling whether the system should write lists of integers that are writable character codes using the list notation. It is `on` if enables or `off` if disabled. The default value for this flag is `off`. */ + YAP_FLAG(WRITE_STRINGS_FLAG, "write_strings", true, booleanFlag, "false", + NULL), END_GLOBAL_FLAGS diff --git a/library/lammpi/CMakeLists.txt b/library/lammpi/CMakeLists.txt index 266c4626f..5a4451b33 100644 --- a/library/lammpi/CMakeLists.txt +++ b/library/lammpi/CMakeLists.txt @@ -69,10 +69,9 @@ set (MPI_YAP_SOURCES # add_lib(yap_mpi ${MPI_YAP_SOURCES}) - target_link_libraries(yap_mpi libYap) + target_link_libraries(yap_mpi libYap ${MPI_C_LIBRARIES}) - - include_directories( ${MPI_C_INCLUDE_PATH}) + include_directories( ${MPI_C_INCLUDE_PATH} ${CMAKE_BINARY_DIR}) set_property( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS HAVE_MPI_H=1) target_compile_options(yap_mpi diff --git a/pl/meta.yap b/pl/meta.yap index 637ae28df..46aac3fc2 100644 --- a/pl/meta.yap +++ b/pl/meta.yap @@ -362,27 +362,13 @@ meta_predicate(P) :- '$meta_expansion'(GMG, _BM, _HVars, GM:G) :- '$yap_strip_module'(GMG, GM, G ). - /** - * @brief Perform meta-variable and user expansion on a goal _G_ - * - * given the example -~~~~~ -:- module(m, []). - -o:p(B) :- n:g, X is 2+3, call(B). -~~~~~ - * - * @param G input goal, without module quantification. - * @param G1F output, non-optimised for debugging - * @param GOF output, optimised, ie, `n:g`, `prolog:(X is 2+3)`, `call(m:B)`, where `prolog` does not need to be explicit - * @param GOF output, optimised, `n:g`, `prolog:(X=5)`, `call(m:B)` - * @param HM head module, input, o - * @param HM source module, input, m - * @param M current module, input, `n`, `m`, `m` - * @param HVars-H, list of meta-variables and initial head, `[]` and `p(B)` - * - * - */ +%% none -- metacalls + '$expand_goal'(G0, GF, GF, _HM, _SM, BM, none-_) :- + !, + '$yap_strip_module'( BM:G0, M0N, G0N), + '$user_expansion'(M0N:G0N, M1:G1), + '$import_expansion'(M1:G1, M2:G2), + '$meta_expansion'(M2:G2, M1, [], GF). '$expand_goal'(G0, G1F, GOF, HM, SM, BM, HVars-H) :- '$yap_strip_module'( BM:G0, M0N, G0N), '$user_expansion'(M0N:G0N, M1:G1), @@ -391,11 +377,11 @@ o:p(B) :- n:g, X is 2+3, call(B). '$yap_strip_module'(M2B1F, M3, B1F), '$end_goal_expansion'(B1F, G1F, GOF, HM, SM, M3, H). -'$end_goal_expansion'(G, G1F, GOF, HM, SM, BM, H) :- - '$match_mod'(G, HM, SM, BM, G1F), - '$c_built_in'(G1F, BM, H, GO), +'$end_goal_expansion'(G, G1, GOF, HM, SM, BM, H) :- + '$match_mod'(G, HM, SM, BM, G1), + '$c_built_in'(G1, BM, H, GO), '$yap_strip_module'(BM:GO, MO, IGO), - '$match_mod'(IGO, HM, SM, MO, GOF). + '$match_mod'(IGO, HM, SM, MO, GOF). '$user_expansion'(M0N:G0N, M1:G1) :- '_user_expand_goal'(M0N:G0N, M:G), @@ -409,7 +395,7 @@ o:p(B) :- n:g, X is 2+3, call(B). '$user_expansion'(MG, MG). - '$match_mod'(G, HMod, SMod, M, O) :- + '$match_mod'(G, _HMod, _SMod, M, O) :- '$is_system_predicate'(G,M), !, O = G. @@ -507,7 +493,7 @@ o:p(B) :- n:g, X is 2+3, call(B). expand_goal(Input, Output) :- - '$expand_meta_call'(Input, [], Output ). + '$expand_meta_call'(Input, none, Output ). '$expand_meta_call'(G, HVars, MF:GF ) :- source_module(SM),