6.4 Compiler Input
The compiler normally reads a file up to its end.
The file end can also be simulated with a clause
The file is normally read consecutively, however
the compiler uses the normal ECLiPSe I/O streams,
and so if during the compilation the stream pointer is modified
(e.g. by seek/2 or read/2), the compiler continues
at the specified place1.
There are several built-in predicates which invoke the compiler:
This is the standard compiler predicate.
The contents of the file is compiled according to the current
state of the global flags.
- compile(File, Module)
This predicate is used to compile the contents of a file into
a specified module, without having to use the module declaration
in the file itself.
This predicate is similar to the compile predicate, except that it is
treated as an in place inclusion of File by fcompile/1 (see
section 6.10). Like compile, File can be a single
file, or a list of files.
This predicate compiles a given stream up to its end
or to the end_of_file clause.
It can be used when the input file is already open,
e.g. when the beginning of the file does not contain
compiler input, or when the input has to be processed
in a non-consecutive way.
This predicate is used to compile a given term,
usually a list of clauses and directives.
Unlike assert/1 it compiles a static procedure,
and so it can be used to compile a procedure which is dynamically
created and then used as a static one.
For more information please refer to .
This predicate compiles the specified file if it has not been compiled
yet or if it has been modified since the last compilation.
This predicate recompiles all files that have been modified since their
This predicate is used to ensure that a specified library
file is loaded.
If this library is not yet compiled, the system will look
in all directories in the library_path flag for
a file with this name.
When the file is found, it is compiled and the system remembers it.
- current_compiled_file(File, Time, Module)
This predicate returns on backtracking all files that have been compiled
in this session, together with the module from where the compilation was
done and the modification time stamp of the file at the time it was compiled.
- compiled_file(File, Line)
This predicate allows to access the compiled file during the compilation.
If it is called during the compilation, it returns the name
of the file being compiled and the current line in it2.
If some I/O operations are performed on the compiler stream,
it influences the compiler, e.g. some procedures can be omitted
and some compiled several times.
An example of its use is the library ifdef
which implements a C-like conditional compilation.
This predicate compiles the given clause of a dynamic predicate.