The operators that have special syntax are classified and listed in order of decreasing binding power in the following table:
x.a
infix dot f(x) a[i] T{x}
applicative (
,[
,{
p^
postfix ^
+ -
prefix arithmetics * / DIV MOD
infix arithmetics + - &
infix arithmetics = # < <= >= > IN
infix relations NOT
prefix NOT
AND
infix AND
OR
infix OR
All infix operators are left associative. Parentheses can be used to override the precedence rules. Here are some examples of expressions together with their fully parenthesized forms:
M.F(x)
(M.F)(x)
dot before application Q(x)^
(Q(x))^
application before ^
- p^
- (p^)
^
before prefix-
- a * b
(- a) * b
prefix -
before*
a * b - c
(a * b) - c
*
before infix-
x IN s - t
x IN (s - t)
infix -
beforeIN
NOT x IN s
NOT (x IN s)
IN
beforeNOT
NOT p AND q
(NOT p) AND q
NOT
beforeAND
A OR B AND C
A OR (B AND C)
AND
beforeOR
Operators without special syntax are procedural. An application of a
procedural operator has the form op(args)
, where op
is the
operation and args
is the list of argument expressions. For example,
MAX
and MIN
are procedural operators.
m3-support@elego.de