[ Syntax Settings | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

current_op(?Precedence, ?Associativity, ?Name)

Succeeds if Name is a visible operator with precedence Precedence and associativity Associativity.
?Precedence
Integer or variable.
?Associativity
Atom or variable.
?Name
Atom or variable.

Description

Used to check for the existence of a visible operator of precedence Precedence with name Name and associativity Associativity. Alternative solutions are returned on backtracking.

Precedence is an integer in the range 1 to 1200.

Associativity must be one of the atoms

   xfx, xfy, yfx, fx, fy, xf, yf.

Fail Conditions

Fails if Name does not unify with an existing operator whose precedence unifies with Precedence and associativity with Associativity.

Resatisfiable

Yes.

Exceptions

(5) type error
Precedence is not an integer.
(5) type error
Associativity is not one of the above atoms.
(5) type error
Name is instantiated but not to an atom.
(6) out of range
Precedence is not in the range 0 to 1200.

Examples

Success:
   current_op(300, fx, *).

   [eclipse]: current_op(P, A, +).
   P = 500
   A = fx     More? (;)
   P = 500
   A = yfx     More? (;)   % RETURN pressed
   yes.

Fail:
   current_op(10, fx, noop).

Error:
   current_op(prec, fx, +).             (Error 5).
   current_op(100, fff, +).             (Error 5).
   current_op(100, fx, bad(op)).        (Error 5).
   current_op(-1, fx, +).               (Error 6).



See Also

op / 3