Next: , Previous: Terms, Up: Syntax [Contents]


2.6 Builtin operators

The following table lists all of Mercury’s builtin operators. Operators with a low “Priority” bind more tightly than those with a high “Priority”. For example, given that + has priority 500 and * has priority 400, the term 2 * X + Y would parse as (2 * X) + Y.

The “Specifier” field indicates what structure terms constructed with an operator are allowed to take. “f” represents the operator and “x” and “y” represent arguments. “x” represents an argument whose priority must be strictly lower than that of the operator. “y” represents an argument whose priority is lower or equal to that of the operator. For example, “yfx” indicates a left-associative infix operator, while “xfy” indicates a right-associative infix operator.

Operator Specifier Priority
. yfx 10
! fx 40
!. fx 40
!: fx 40
@ xfx 90
^ xfy 99
^ fx 100
event fx 100
: yfx 120
`op` yfx 120 (1)
** xfy 200
- fx 200
\ fx 200
* yfx 400
/ yfx 400
// yfx 400
<< yfx 400
>> yfx 400
div yfx 400
mod xfx 400
rem xfx 400
for xfx 500
+ fx 500
+ yfx 500
++ xfy 500
- yfx 500
-- yfx 500
/\ yfx 500
\/ yfx 500
.. xfx 550
:= xfx 650
=^ xfx 650
< xfx 700
= xfx 700
=.. xfx 700
=:= xfx 700
=< xfx 700
== xfx 700
=\= xfx 700
> xfx 700
>= xfx 700
@< xfx 700
@=< xfx 700
@> xfx 700
@>= xfx 700
\= xfx 700
\== xfx 700
~= xfx 700
is xfx 701
and xfy 720
or xfy 740
func fx 800
impure fy 800
pred fx 800
semipure fy 800
\+ fy 900
not fy 900
when xfx 900
~ fy 900
<= xfy 920
<=> xfy 920
=> xfy 920
all fxy 950
arbitrary fxy 950
atomic fxy 950
disable_warning fxy 950
disable_warnings fxy 950
promise_equivalent_solutions fxy 950
promise_equivalent_solution_sets fxy 950
promise_exclusive fy 950
promise_exclusive_exhaustive fy 950
promise_exhaustive fy 950
promise_impure fx 950
promise_pure fx 950
promise_semipure fx 950
require_complete_switch fxy 950
require_switch_arms_det fxy 950
require_switch_arms_semidet fxy 950
require_switch_arms_multi fxy 950
require_switch_arms_nondet fxy 950
require_switch_arms_cc_multi fxy 950
require_switch_arms_cc_nondet fxy 950
require_switch_arms_erroneous fxy 950
require_switch_arms_failure fxy 950
require_det fx 950
require_semidet fx 950
require_multi fx 950
require_nondet fx 950
require_cc_multi fx 950
require_cc_nondet fx 950
require_erroneous fx 950
require_failure fx 950
trace fxy 950
try fxy 950
some fxy 950
, xfy 1000
& xfy 1025
-> xfy 1050
; xfy 1100
or_else xfy 1100
then xfx 1150
if fx 1160
else xfy 1170
:: xfx 1175
==> xfx 1175
where xfx 1175
---> xfy 1179
catch xfy 1180
type fx 1180
solver fy 1181
catch_any xfy 1190
end_module fx 1199
import_module fx 1199
include_module fx 1199
initialise fx 1199
initialize fx 1199
finalise fx 1199
finalize fx 1199
inst fx 1199
instance fx 1199
mode fx 1199
module fx 1199
pragma fx 1199
promise fx 1199
rule fx 1199
typeclass fx 1199
use_module fx 1199
--> xfx 1200
:- fx 1200
:- xfx 1200
?- fx 1200

Footnotes

(1)

Operator term (see Terms).


Next: , Previous: Terms, Up: Syntax [Contents]

AltStyle によって変換されたページ (->オリジナル) /