From 87851a68f49d9207808f6b40c9145cde99185cd9 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Fri, 19 May 2017 09:54:35 +0100 Subject: [PATCH] documentation support --- .gitignore | 11 +- CMakeLists.txt | 1 + cmake/libfind.py | 4 + docs/Doxyfile.in | 16 +- docs/md/builtins.md | 15 ++ docs/md/extensions.md | 21 ++ docs/md/load_files.md | 17 +- docs/md/packages.md | 4 +- docs/md/programming.md | 10 + docs/md/yap.md | 40 ++-- packages/myddas/myddas.md | 25 ++- .../python/yap_kernel/yap_kernel/yapkernel.py | 6 +- packages/real/real.md | 20 +- packages/yap-lbfgs/Makefile.in | 68 ------ pl/attributes.yap | 21 +- pl/dbload.yap | 12 +- run.md | 193 ------------------ utils/sysgraph | 5 +- 18 files changed, 149 insertions(+), 340 deletions(-) create mode 100644 docs/md/builtins.md create mode 100644 docs/md/extensions.md create mode 100644 docs/md/programming.md delete mode 100644 packages/yap-lbfgs/Makefile.in delete mode 100644 run.md diff --git a/.gitignore b/.gitignore index 0b74c14d2..418298781 100644 --- a/.gitignore +++ b/.gitignore @@ -203,4 +203,13 @@ mxe build library/system/#CMakeLists.txt# -*.txt# \ No newline at end of file +*.txt# +cmake/CMakeCache.txt + +C/compiling_error.txt + +cmake/compile_commands.json + +cmake/cudd_config.h + +cmake/docs/Doxyfile diff --git a/CMakeLists.txt b/CMakeLists.txt index ecd4ef4f1..fd5d142b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,7 @@ option(BUILD_SHARED_LIBS "Build shared library" ON) set (CMAKE_POSITION_INDEPENDENT_CODE TRUE) set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) + include(Prelims NO_POLICY_SCOPE) include(Sources NO_POLICY_SCOPE) diff --git a/cmake/libfind.py b/cmake/libfind.py index af6cb70c6..d17bc04d8 100644 --- a/cmake/libfind.py +++ b/cmake/libfind.py @@ -6,3 +6,7 @@ v = sysconfig.get_python_version() p = sysconfig.get_config_var('LIBPL') l = sysconfig.get_config_var('LDLIBRARY') print(os.path.join(p,l)) +p = sysconfig.get_config_var('DESTDIR') +n = '../libpython3.6m.dylib' +l = os.path.join(p,n) +print(l) \ No newline at end of file diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index 57b65459c..3ba4f021b 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -1153,8 +1153,10 @@ HTML_STYLESHEET = # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_STYLESHEET = @CMAKE_SOURCE_DIR@/docs/custom/customdoxygen.css \ - @CMAKE_SOURCE_DIR@/docs/solarized-light.css +HTML_EXTRA_STYLESHEET = @CMAKE_SOURCE_DIR@/docs/custom/customdoxygen.css + + +# @CMAKE_SOURCE_DIR@/docs/solarized-light.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note @@ -1582,7 +1584,7 @@ SERVER_BASED_SEARCH = YES # The default value is: NO. # This tag requires that the tag SEARCHENGINE is set to YES. -EXTERNAL_SEARCH = YAP +EXTERNAL_SEARCH = NO # The SEARCHENGINE_URL should point to a search engine hosted by a web server # which will return the search results when EXTERNAL_SEARCH is enabled. @@ -2223,7 +2225,7 @@ DOT_FONTPATH = # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. -CLASS_GRAPH = YES +CLASS_GRAPH = NO # If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a # graph for each documented class showing the direct and indirect implementation @@ -2277,16 +2279,16 @@ TEMPLATE_RELATIONS = NO # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. -INCLUDE_GRAPH = YES +INCLUDE_GRAPH = NO - # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are +# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are # set to YES then doxygen will generate a graph for each documented file showing # the direct and indirect include dependencies of the file with other documented # files. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. -INCLUDED_BY_GRAPH = YES +INCLUDED_BY_GRAPH = NO # If the CALL_GRAPH tag is set to YES then doxygen will generate a call # dependency graph for every global function or class method. diff --git a/docs/md/builtins.md b/docs/md/builtins.md new file mode 100644 index 000000000..bdc9c0efb --- /dev/null +++ b/docs/md/builtins.md @@ -0,0 +1,15 @@ +@defgroup builtins YAP Core Built-ins + +@brief This chapter describes the core built-in predicates that control the execution of +Prolog programs, provide fundamental functionality such as termm manipulation or arithmetic, and support interaction with external +resources, + +Many of the predicates described here have been standardised by the International Standard Organization. + The corresponding standartised subset of Prolog also known as ISO-Prolog. +In the description of the arguments of predicates the following +notation will be used: + ++ a preceding plus sign will denote an argument as an "input +argument" - the argument is read, not written, and it cannot be a free variable at the time of the call; ++ a preceding minus sign will denote an "output argument"; ++ an argument with no preceding symbol can be used in both ways. diff --git a/docs/md/extensions.md b/docs/md/extensions.md new file mode 100644 index 000000000..844c2e302 --- /dev/null +++ b/docs/md/extensions.md @@ -0,0 +1,21 @@ +Extensions to core Prolog. {#extensions} +========================= + +YAP includes a number of extensions over the original Prolog +language. Next, we discuss how to use the most important ones. + + + @ref Rational_Trees + + + @ref AttributedVariables + + + @ref DepthLimited + + + @ref Tabling + + + @ref Threads + + + @ref Profiling + + + @ref YAPArrays + + + @ref Parallelism diff --git a/docs/md/load_files.md b/docs/md/load_files.md index c59e60799..19b425177 100644 --- a/docs/md/load_files.md +++ b/docs/md/load_files.md @@ -1,15 +1,12 @@ -Loading and Organising YAP Programs {#load_files} -=================================== +@defgroup load_files Loading and Organising YAP Programs - Next, we present the main predicates and directives available to load - files and to control the Prolog environment. + @brief Next, we present the main predicates and directives available to load + files and to control the Prolog environment. They include + + + @subpage YAPConsulting + @subpage YAPModules - + @ref YAPConsulting + + @subpage YAPBigLoad - + @ref QLY - - + @ref YAPBigLoad - - + \ No newline at end of file diff --git a/docs/md/packages.md b/docs/md/packages.md index 39784ee4c..bd059de8e 100644 --- a/docs/md/packages.md +++ b/docs/md/packages.md @@ -1,13 +1,13 @@ YAP packages {#packages} ============ - + @subpage real + + @subpage realxplxc + @subpage BDDs + @subpage gecode - + @subpage myddas + + @subpage myddas_dbms + @ref PFL diff --git a/docs/md/programming.md b/docs/md/programming.md new file mode 100644 index 000000000..68a633a83 --- /dev/null +++ b/docs/md/programming.md @@ -0,0 +1,10 @@ +Programming in YAP {#YAPProgramming} +==================== + + + @ref Syntax + + + @ref YAPCompilerSettings + + + @ref Indexing + + + @ref Deb_Interaction diff --git a/docs/md/yap.md b/docs/md/yap.md index 855d67060..10b2061c6 100644 --- a/docs/md/yap.md +++ b/docs/md/yap.md @@ -5,7 +5,7 @@ ![The YAP Logo](docs/icons/yap_128x128x32.png) -NOTE: this version of YAP is still experimental, documentation may be out of date. +NOTE: this version of YAP is still experimental, documentation may be missing or brout of date. ## Introduction @@ -25,7 +25,7 @@ The manual is organised as follows: + @subpage builtins -+ @subpage Extensions ++ @subpage extensions + @subpage library @@ -59,21 +59,6 @@ from Jan Wielemaker. We would also like to gratefully acknowledge the contributions from Ashwin Srinivasian. -@page builtins YAP Core Built-ins - - -This chapter describes the core predicates that control the execution of -Prolog programs, provide fundamental functionality such as termm manipulation or arithmetic, and support interaction with external -resources, Many of the predicates described here have been standardised by the ISO. The standartised subset of Prolog also known as ISO-Prolog. - -In the description of the arguments of predicates the following -notation will be used: - -+ a preceding plus sign will denote an argument as an "input -argument" - it cannot be a free variable at the time of the call; -+ a preceding minus sign will denote an "output argument"; -+ an argument with no preceding symbol can be used in both ways. - @page Library YAP Library @@ -89,7 +74,26 @@ argument" - it cannot be a free variable at the time of the call; YAP includes a number of extensions over the original Prolog language. - @subpage atts + + @subpage atts + + + @ref Rational_Trees + + + @ref CohYroutining + + + @ref Attributed_Variables + + + @ref DepthLimited + + + @ref Tabling + + + @ref Threads + + + @ref Profiling + + + @ref YAPArrays + + + @ref Parallelism + @page YAPProgramming Programming in YAP diff --git a/packages/myddas/myddas.md b/packages/myddas/myddas.md index f79758bcb..f2e2e839b 100644 --- a/packages/myddas/myddas.md +++ b/packages/myddas/myddas.md @@ -1,11 +1,12 @@ -The MYDDAS Data-base interface {#myddas} +The MYDDAS Data-base interface {#myddas} =============================== The MYDDAS database project was developed within a FCT project aiming at the development of a highly efficient deductive database system, based on the coupling of the MySQL relational database system with the YAP Prolog system. MYDDAS was later expanded to support the ODBC interface. -### Requirements and Installation Guide {#Requirements_and_Installation_Guide} + +### Requirements and Installation Guide {#Requirements_and_Installation_Guide} Next, we describe how to usen of the YAP with the MYDDAS System. The use of this system is entirely depend of the MySQL development libraries @@ -21,21 +22,22 @@ The MYDDAS Data-base interface {#myddas} tested yet. MYDDAS must be enabled at configure time. This can be done with the following options: - + --enable-myddas + + `--enable-myddas` This option will detect which development libraries are installed on the computer system, MySQL, ODBC or both, and will compile the Yap system with the support for which libraries it detects; - + --enable-myddas-stats + + `--enable-myddas-stats` This option is only available in MySQL. It includes code to get statistics from the MYDDAS system; - + --enable-top-level + + `--enable-top-level` This option is only available in MySQL. It enables the option to interact with the MySQL server in two different ways. As if we were on the MySQL Client Shell, and as if we were using Datalog. + ### MYDDAS Architecture {#MYDDAS_Architecture} The system includes four main blocks that are put together through the @@ -85,6 +87,7 @@ The MYDDAS Data-base interface {#myddas} FROM 'phonebook' A WHERE A.Name = 'John Doe'; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ### View Level Interface {#View_Level_Interface} @@ -178,6 +181,7 @@ The MYDDAS Data-base interface {#myddas} To know how to use db `view/3`, please refer to Draxler's Prolog to SQL Compiler Manual. + ### Accessing Tables in Data Sources Using SQL {#Accessing_Tables_in_Data_Sources_Using_SQL} @@ -205,6 +209,7 @@ The MYDDAS Data-base interface {#myddas} ?- db_sql('SELECT * FROM phonebook',LA). LA = ['D','John Doe',123456789] ? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ### Insertion of Rows {#Insertion_of_Rows} @pred db_assert(+,+). @@ -274,7 +279,8 @@ The MYDDAS Data-base interface {#myddas} ?- helloWorldInsert('A',NULL,31). yes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -### Types of AttributesL {#Types_of_Attributes} + +### Types of Attributes {#Types_of_Attributes} @pred db_get_attributes_types(+,+,?). @@ -305,6 +311,7 @@ The MYDDAS Data-base interface {#myddas} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ where Hello World is the name of the relation and myddas is the connection identifier. + ### Number of Fields {#Number_of_Fields} @@ -331,6 +338,7 @@ The MYDDAS Data-base interface {#myddas} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ where `Hello World` is the name of the relation and `myddas` is the connection identifier. + ### Describing a Relation {#Describing_a_Relation} @pred db_datalog_describe(+,+). @@ -411,6 +419,7 @@ The MYDDAS Data-base interface {#myddas} Table = table('Hello World') ? ; no ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ### The MYDDAS MySQL Top Level {#The_MYDDAS_MySQL_Top_Level} @pred db_top_level(+,+,+,+,+). @@ -461,6 +470,7 @@ The MYDDAS Data-base interface {#myddas} yes ?- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ### Other MYDDAS Properties {#Other_MYDDAS_Properties} @pred db_verbose(+). @@ -560,5 +570,4 @@ The MYDDAS Data-base interface {#myddas} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You can see the available SQL Modes at the MySQL homepage at . - -@} + b diff --git a/packages/python/yap_kernel/yap_kernel/yapkernel.py b/packages/python/yap_kernel/yap_kernel/yapkernel.py index e1d677c03..e03ed3220 100644 --- a/packages/python/yap_kernel/yap_kernel/yapkernel.py +++ b/packages/python/yap_kernel/yap_kernel/yapkernel.py @@ -12,7 +12,6 @@ from traitlets import Instance, Type, Any, List from .comm import CommManager from .kernelbase import Kernel as KernelBase from .zmqshell import ZMQInteractiveShell -from .interactiveshell import YAPInteraction class YAPKernel(KernelBase): shell = Instance('IPython.core.interactiveshell.InteractiveShellABC', @@ -56,8 +55,7 @@ class YAPKernel(KernelBase): for msg_type in comm_msg_types: self.shell_handlers[msg_type] = getattr(self.comm_manager, msg_type) - self.engine = YAPInteraction(self) - self.shell.run_cell = self.engine.run_cell + self.engine = YAPInteraction(self.shell, **kwargs) help_links = List([ { @@ -194,7 +192,7 @@ class YAPKernel(KernelBase): reply_content = {} try: - res = self.shell.run_cell(code, store_history=store_history, silent=silent) + res = self.engine.run_cell(code, store_history=store_history, silent=silent) finally: self._restore_input() diff --git a/packages/real/real.md b/packages/real/real.md index 7d1107c52..7d9ddcb19 100644 --- a/packages/real/real.md +++ b/packages/real/real.md @@ -1,4 +1,4 @@ -The R Prolog Progrmming Interface {#real} +The R Prolog Programming Interface {#realxplxc} =================================== @file real.md @@ -7,8 +7,6 @@ The R Prolog Progrmming Interface {#real} @version 1:0:4, 2013/12/25, sinter_class @license Perl Artistic License -@ingroup packages - + @ref realpl This library enables the communication with an R process started as a shared library. @@ -46,7 +44,7 @@ Pass Prolog data to R, pass R data to Prolog or assign an R expression to an assignable R expression. ### Testing Real {#TestingR} -There is a raft of examples packed in a singl```e file that test the library. +There is a raft of examples packed in a single file that tests the library. ~~~~ ?- [pack(real/examples/for_real)]. @@ -122,7 +120,7 @@ However, not all possible "corrections" are currently supported. For instance, ~~~~ ?- c <- [a,b,c,1]. -ERROR: real:set_R_variable/2: Type error: `boolean' expected, found `a' +ERROR: real:set_R_variable/2: Type error: `boolean` expected, found `a` ~~~~ In the data passing mode we map Prolog atoms to R strings- @@ -241,7 +239,7 @@ in~\cite{}. Their major differences: prefer reading double-quote strings as Prolog string. - Free variables can be used to represent missing - arguments,ie. `a[_,"G23"] would represent the column "G23". + arguments,ie. `a[_,"G23"]` would represent the column "G23". - All recent versions of real support the common syntax extensions for [], (), thus realC allows writing `a[[2]] <- f(). @@ -262,12 +260,8 @@ in~\cite{}. Their major differences: --- -Nicos Angelopoulos and Vitor Santos Costa -December, 2012. + - Nicos Angelopoulos and Vitor Santos Costa, December, 2012. -Updates: Nicos Angelopoulos -Dec. 2013, -March, 2014 + - Updates: Nicos Angelopoulos, Dec. 2013, March, 2014 -Updates: Vitor Santos Costa -Dec. 2015 + - Updates: Vitor Santos Costa Dec. 2015 diff --git a/packages/yap-lbfgs/Makefile.in b/packages/yap-lbfgs/Makefile.in deleted file mode 100644 index 54943e079..000000000 --- a/packages/yap-lbfgs/Makefile.in +++ /dev/null @@ -1,68 +0,0 @@ -# -# default base directory for YAP installation -# (EROOT for architecture-dependent files) -# -prefix = @prefix@ -exec_prefix = @exec_prefix@ -ROOTDIR = $(prefix) -EROOTDIR = @exec_prefix@ -abs_top_builddir = @abs_top_builddir@ -# -# where the binary should be -# -BINDIR = $(EROOTDIR)/bin -# -# where YAP should look for libraries -# -LIBDIR=@libdir@ -SHAREDIR=$(ROOTDIR)/share/Yap -YAPLIBDIR=@libdir@/Yap -# -# -CC=@CC@ -CFLAGS= @SHLIB_CFLAGS@ $(YAP_EXTRAS) $(DEFS) -I$(srcdir) -I../.. -I$(srcdir)/../../include -I$(srcdir)/liblbfgs-1.10/include -LDFLAGS=@LDFLAGS@ -# -# -# You shouldn't need to change what follows. -# -INSTALL=@INSTALL@ -INSTALL_DATA=@INSTALL_DATA@ -INSTALL_PROGRAM=@INSTALL_PROGRAM@ -SHELL=/bin/sh -RANLIB=@RANLIB@ -srcdir=@srcdir@ -SO=@SO@ -#4.1VPATH=@srcdir@:@srcdir@/OPTYap -CWD=$(PWD) -# - -OBJS=yap_lbfgs.o lbfgs.o -SOBJS=yap_lbfgs.@SO@ -PLLIB=$(srcdir)/lbfgs.pl - -#in some systems we just create a single object, in others we need to -# create a libray - -all: $(SOBJS) - -yap_lbfgs.o: $(srcdir)/yap_lbfgs.c - $(CC) -c $(CFLAGS) $(srcdir)/yap_lbfgs.c -o yap_lbfgs.o - -lbfgs.o: $(srcdir)/liblbfgs-1.10/lib/lbfgs.c - $(CC) -c $(CFLAGS) -I $(srcdir)/liblbfgs-1.10/lib $(srcdir)/liblbfgs-1.10/lib/lbfgs.c -o lbfgs.o - -@DO_SECOND_LD@yap_lbfgs.@SO@: yap_lbfgs.o lbfgs.o -@DO_SECOND_LD@ @SHLIB_LD@ $(LDFLAGS) -o yap_lbfgs.@SO@ yap_lbfgs.o lbfgs.o @EXTRA_LIBS_FOR_DLLS@ - -install: all - $(INSTALL_PROGRAM) $(SOBJS) $(DESTDIR)$(YAPLIBDIR) - for h in $(PLLIB); do $(INSTALL_DATA) $$h $(DESTDIR)$(SHAREDIR); done - -install-examples: - -clean: - rm -f *.o *~ $(OBJS) $(SOBJS) *.BAK - -distclean: clean - rm -f Makefile diff --git a/pl/attributes.yap b/pl/attributes.yap index 8251010d9..fdc6e50f1 100644 --- a/pl/attributes.yap +++ b/pl/attributes.yap @@ -1,4 +1,4 @@ -pattr/************************************************************************* +p/************************************************************************* * * * YAP Prolog * * * @@ -24,15 +24,8 @@ pattr/************************************************************************* */ -:- module('attributes', [delayed_goals/4]). - -:- use_system_module( '$_boot', ['$undefp'/1]). - -:- use_system_module( '$_errors', ['$do_error'/2]). - -:- use_system_module( '$coroutining', [attr_unify_hook/2]). - -:- use_system_module( attributes, [all_attvars/1, +:- system_module( attributes, [delayed_goals/4, +all_attvars/1, bind_attvar/1, del_all_atts/1, del_all_module_atts/2, @@ -42,7 +35,13 @@ pattr/************************************************************************* put_att_term/2, put_module_atts/2, unbind_attvar/1, - woken_att_do/4]). + woken_att_do/4], []). + +:- use_system_module( '$_boot', ['$undefp'/1]). + +:- use_system_module( '$_errors', ['$do_error'/2]). + +:- use_system_module( '$coroutining', [attr_unify_hook/2]). :- dynamic attributes:existing_attribute/4. :- dynamic attributes:modules_with_attributes/1. diff --git a/pl/dbload.yap b/pl/dbload.yap index ca7837117..bd09d8673 100644 --- a/pl/dbload.yap +++ b/pl/dbload.yap @@ -15,6 +15,8 @@ * * *************************************************************************/ +%% @file dbload.yap + :- module('$db_load', []). @@ -25,10 +27,12 @@ :- use_system_module( attributes, [get_module_atts/2, put_module_atts/2]). -%%% @file dbload.yap - -%%% @defgroup YAPBigLoad -%%% @brief Fast and Exo Loading +%% +% @defgroup YAPBigLoad Loading Large Tables +% +% @brief Fast and Exo Loading +% +% @{ /*! * @pred load_mega_clause( +Stream ) is detail diff --git a/run.md b/run.md deleted file mode 100644 index 262859f4e..000000000 --- a/run.md +++ /dev/null @@ -1,193 +0,0 @@ -Running YAP (#run) -============== - - -We next describe how to invoke YAP in Unix systems. - -Running YAP Interactively (#interactive_run) -------------------------- - -Most often you will want to use YAP in interactive mode. Assuming that -YAP is in the user's search path, the top-level can be invoked under -Unix with the following command: - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -yap [-s n] [-h n] [-a n] [-c IP_HOST port ] [filename] -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -All the arguments and flags are optional and have the following meaning: - -+ -? -print a short error message. -+ -s _Size_ -allocate _Size_ KBytes for local and global stacks. The user may -specify M bytes. -+ -h _Size_ -allocate _Size_ KBytes for heap and auxiliary stacks -+ -t _Size_ -allocate _Size_ KBytes for the trail stack -+ -L _Size_ -SWI-compatible option to allocate _Size_ K bytes for local and global stacks, the local stack -cannot be expanded. To avoid confusion with the load option, _Size_ -must immediately follow the letter `L`. -+ -G _Size_ -SWI-compatible option to allocate _Size_ K bytes for local and global stacks; the global -stack cannot be expanded -+ -T _Size_ -SWI-compatible option to allocate _Size_ K bytes for the trail stack; the trail cannot be expanded. -+ -l _YAP_FILE_ -compile the Prolog file _YAP_FILE_ before entering the top-level. -+ -L _YAP_FILE_ -compile the Prolog file _YAP_FILE_ and then halt. This option is -useful for implementing scripts. -+ -g _Goal_ -run the goal _Goal_ before top-level. The goal is converted from -an atom to a Prolog term. -+ -z _Goal_ -run the goal _Goal_ as top-level. The goal is converted from -an atom to a Prolog term. -+ -b _BOOT_FILE_ -boot code is in Prolog file _BOOT_FILE_. The filename must define -the predicate `'$live'/0`. -+ -c IP_HOST port -connect standard streams to host IP_HOST at port port -+ filename -restore state saved in the given file -+ -f -do not consult initial files -+ -q -do not print informational messages -+ -- -separator for arguments to Prolog code. These arguments are visible -through the unix/1 built-in predicate. - - -Note that YAP will output an error message on the following conditions: - -+ -a file name was given but the file does not exist or is not a saved -YAP state; - -+ -the necessary amount of memory could not be allocated; - -+ -the allocated memory is not enough to restore the state. - - - When restoring a saved state, YAP will allocate the -same amount of memory as that in use when the state was saved, unless a -different amount is specified by flags in the command line. By default, -YAP restores the file startup.yss from the current directory or from -the YAP library. - -+ -YAP usually boots from a saved state. The saved state will use the default -installation directory to search for the YAP binary unless you define -the environment variable YAPBINDIR. - -+ -YAP always tries to find saved states from the current directory - first. If it cannot it will use the environment variable YAPLIBDIR, if - defined, or search the default library directory. - -+ -YAP will try to find library files from the YAPSHAREDIR/library -directory. - -Prolog Scripts --------------- - -YAP can also be used to run Prolog files as scripts, at least in -Unix-like environments. A simple example is shown next (do not forget -that the shell comments are very important): - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#!/usr/local/bin/yap -L -- -# -# Hello World script file using YAP -# -# put a dot because of syntax errors . - -:- write('Hello World'), nl. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The `#!` characters specify that the script should call the binary -file YAP. Notice that many systems will require the complete path to the -YAP binary. The `-L` flag indicates that YAP should consult the -current file when booting and then halt. The remaining arguments are -then passed to YAP. Note that YAP will skip the first lines if they -start with `#` (the comment sign for Unix's shell). YAP will -consult the file and execute any commands. - -A slightly more sophisticated example is: - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#!/usr/bin/yap -L -- -# -# Hello World script file using YAP -# . - -:- initialization(main). - -main :- write('Hello World'), nl. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The `initialization` directive tells YAP to execute the goal main -after consulting the file. Source code is thus compiled and `main` -executed at the end. The `.` is useful while debugging the script -as a Prolog program: it guarantees that the syntax error will not -propagate to the Prolog code. - -Notice that the `--` is required so that the shell passes the extra -arguments to YAP. As an example, consider the following script -`dump_args`: - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#!/usr/bin/yap -L -- -#. - -main( [] ). -main( [H|T] ) :- - write( H ), nl, - main( T ). - -:- unix( argv(AllArgs) ), main( AllArgs ). - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -If you this run this script with the arguments: - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -./dump_args -s 10000 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -the script will start an YAP process with stack size `10MB`, and -the list of arguments to the process will be empty. - -Often one wants to run the script as any other program, and for this it -is convenient to ignore arguments to YAP. This is possible by using -`L --` as in the next version of `dump_args`: - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#!/usr/bin/yap -L -- - -main( [] ). -main( [H|T] ) :- - write( H ), nl, - main( T ). - -:- unix( argv(AllArgs) ), main( AllArgs ). - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The `--` indicates the next arguments are not for YAP. Instead, -they must be sent directly to the argv built-in. Hence, running - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -./dump_args test -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -will write `test` on the standard output. -@} diff --git a/utils/sysgraph b/utils/sysgraph index 984e580c0..d0b3b870f 100755 --- a/utils/sysgraph +++ b/utils/sysgraph @@ -298,7 +298,10 @@ library('..'). prolog_file_type(c, c). prolog_file_type(h, c). prolog_file_type('h.cmake', c). -prolog_file_type('i', c). +prolog_file_type('h.in', c). +prolog_file_type('py.cmake', python). +prolog_file_type('hxx', c). +prolog_file_type('py', python). % % handle some special cases.