Term input

Author(s): Daniel Cabeza (modifications and documentation, adapted from SICStus 0.6 code), Manuel Carro (modifications and documentation), Jose F. Morales (modifications for curly blocks,postfix blocks, infix dot, string constants, and doccomments), Manuel Hermenegildo (minor in documentation).

This module provides facilities for reading terms in Prolog syntax. This is very convenient in many cases (and not only if you are writing a Prolog compiler) because Prolog terms are easy to write and can encode a large amount of information in a human-readable fashion. Note that, in addition, the use of operator definitions makes it possible to enhance the readibility of such terms, or, for example, data files composed of Prolog terms.

The behavior of these reading predicates can be modified in two ways:

  • The operators that are active at run time when the reading predicate is called (see Defining operators).

  • A number of flags (see below) which control how some special terms are read in or activate some syntax extensions.


Usage and interface

Documentation on exports

PREDICATEread/1
read(Term)

Like read(Stream,Term) with Stream associated to the current input stream.

Usage:ISO

PREDICATEread/2

Usage:ISOread(Stream,Term)

The next term, delimited by a full-stop (i.e., a . followed by either a space or a control character), is read from Stream and is unified with Term. The syntax of the term must agree with current operator declarations. If the end of Stream has been reached, Term is unified with the term end_of_file. Further calls to read/2 for the same stream will then cause an error, unless the stream is connected to the terminal (in which case a prompt is opened on the terminal).

PREDICATEread_term/2

Usage:ISOread_term(Term,Options)

Like read_term/3, but reading from the current input

PREDICATEread_term/3

Usage:ISOread_term(Stream,Term,Options)

Reads a Term from Stream with the ISO-Prolog Options. These options can control the behavior of read term (see read_option/1).

read_top_level(Stream,Data,Variables)

Predicate used to read in the Top Level.

Usage:second_prompt(Old,New)

Changes the prompt (the second prompt, as opposed to the first one, used by the toplevel) used by read/2 and friends to New, and returns the current one in Old.

Usage:read_option(Option)

Option is an allowed read_term/[2,3] option. These options are:

read_option(variables(_V)).
read_option(variable_names(_N)).
read_option(singletons(_S)).
read_option(lines(_StartLine,_EndLine)).
read_option(dictionary(_Dict)).
They can be used to return the singleton variables in the term, a list of variables, etc.

    Documentation on multifiles

    PREDICATEdefine_flag/3
    The folowing flags are defined:
    define_flag(read_hiord,[on,off],off).
    define_flag(read_curly_blocks,[on,off],off).
    define_flag(read_postfix_blocks,[on,off],off).
    define_flag(read_string_data_type,[on,off],off).
    define_flag(read_infix_dot,[on,off],off).
    
    (See Runtime system control and flags).

    read_hiord

    If flag is on (it is off by default), a variable followed by a parenthesized list of arguments is read as a call/N term, except if the variable is anonymous, in which case it is read as an anonymous predicate abstraction head. For example, P(X) is read as call(P,X) and _(X,Y) as ''(X,Y).

    read_curly_blocks
    When enabled, read terms of the form '{ <list of sentences> }'.

    read_postfix_blocks
    When enabled, allow '<term> <term>' as valid terms.

    read_string_data_type
    When enabled, strings are read as '\6\string' terms (not as lists).

    read_infix_dot
    When enabled, infix dot '.' is read as '\6\dot' terms (not as a list).

    Usage:define_flag(Flag,FlagValues,Default)

    The predicate is multifile.

    Documentation on imports

    This module has the following direct dependencies: