# op/3

### Module: sio

`op/3` — define operator associativity and precedence

ISO Standard Predicate

## FORMS

``````op(Precedence, Associativity, Atom)

op(Precedence, Associativity, [Atom | Atoms ])
``````

## DESCRIPTION

If `Precedence` is instantiated to an integer between 0 and 1200 then `Associativity` must be one of the indicators found in the Prolog Operator Types table below. `Atom`, which will henceforth be parsed as an operator according to the assigned `Precedence` and `Associativity`, can be any atom, but it should not require the use of single quotes(‘) in order to be parsed.

Prolog Operator Types

Indicator Interpretation
xfy infix – right associative
yfx infix – left associative
xfx infix – non-multiple
fy prefix – multiple
fx prefix – non-multiple
yf postfix – multiple
xf postfix – non-multiple

If `Precedence` is uninstantiated, but `Associativity` and `Atom` correspond to an existing operator, `Precedence` will be unified with the previously declared precedence of the operator. The default operator precedences and associativities can be found in the Default Operator Associativity and Precedence table below.

A number of convenience predicates are declared as prefix operators(fx) of precedence 1125 These include:

• `trace, module, use, export, dynamic`

• `cd dir ls edit vi`

Default Operator Associativity and Precedence

Operator(s) Associativity Precedence
:- fx and xfx 1200
?- fx 1200
–> xfx 1200
; xfy 1100
-> yfx 1050
, xfy 1000
: yfx 950
+ not fy 900
. xfy 800
spy nospy fx 800
=\= xfx 700
== \== xfx 700
@< @> @=< @>= xfx 700
is xfx 700
=:= =\= xfx 700
< >  =<  >= xfx 700
=.. xfx 700
+ yfx 500
- yfx 500
\/ \/\ yfx 500
/ // div > >< < yfx 400
mod yfx 300
+ - \ fy 200
^ yfx 200

## EXAMPLES

``````?- read(X).
get to work on time.

get to work on time.
^Syntax error
'standard input', line 1: Fullstop (period) expected
?- op(200,yfx,to),op(200,yfx,on).

yes.