Node:Restrictions, Next:, Previous:Operators, Up:Prolog Intro



Syntax Restrictions

Note carefully the following syntax restrictions, which serve to remove potential ambiguity associated with prefix operators.

  1. In a term written in standard syntax, the principal functor and its following ( must not be separated by any intervening layout-text. Thus
              point (X,Y,Z)
              

    is invalid syntax.

  2. If the argument of a prefix operator starts with a (, this ( must be separated from the operator by at least one layout-char. Thus
              :-(p;q),r.
              

    (where :- is the prefix operator) is invalid syntax. The system would try to interpret it as the compound term:

                  ,
                 / \
               :-    r
                |
                ;
               / \
              p   q
              

    That is, it would take :- to be a functor of arity 1. However, since the arguments of a compound term are required to be expressions of precedence below 1000, this interpretation would fail as soon as the ; (precedence 1100) was encountered.

    In contrast, the term:

              :- (p;q),r.
              

    is valid syntax and represents the following compound term:

                 :-
                  |
                  ,
                 / \
                ;   r
               / \
              p   q