Macaulay2 » Documentation
Packages » Macaulay2Doc » The Macaulay2 language » operators » precedence of operators
next | previous | forward | backward | up | index | toc

precedence of operators

One aspect of parsing precedence is associativity. A left-associative operator is one, such as *, with the property that x * y * z is parsed as (x * y) * z. A right-associative operator is one, such as =, with the property that x = y = z is parsed as x = (y = z). These operators are left associative: # #? % & * ** + ++ , - . .. ..< .? / // << @@ @@? ^ ^** ^< ^<= ^> ^>= ^^ _ _< _<= _> _>= | |_ || · , and these operators are right associative: != %= &= **= *= ++= += -= -> ..<= ..= //= /= : := ; < <- <<= <= <== <=== <==> <==>= = =!= == === ===> ===>= ==> ==>= => > >= >> >>= ? ?? ??= @ @= @@= @@?= \ \= \\ \\= ^**= ^= ^^= _= |- |-= |= |_= ||= ~ ~= ·= ⊠= ⧢= and or SPACE xor .

Here are the operators arranged in order of increasing parsing precedence. For example, * has higher parsing precedence than +, and hence 2+3*5 is parsed as though it had been written as 2+(3*5). The symbol SPACE represents the operator that is used when two things are adjacent in program code.

 8                                                                                              ;                                                                                           

10 ,

14 %= &= **= *= ++= += -= -> ..<= ..= //= /= := <- <<= <==>= = ===>= ==>= => >> >>= ??= @= @@= @@?= \= \\= ^**= ^= ^^= _= |-= |= |_= ||= ~= ·= ⊠= ⧢=

18 <<

20 |-

22 <=== ===>

24 <==>

26 <== ==>

28 ?? or

30 xor

32 and

34 not

36 != < <= =!= == === > >= ? ~

38 ||

40 :

42 |

44 ^^

46 &

48 .. ..<

50 + ++ -

52 ·

54 ** ⊠ ⧢

58 % * / // \ \\

60 @

62 SPACE

64 (*)

66 @@ @@?

68 ^* ^~ _* _~

70 # #? . .? ^ ^** ^< ^<= ^> ^>= _ _< _<= _> _>= |_

72 ! ^! _!

See also


The source of this document is in /build/reproducible-path/macaulay2-1.26.05+ds/M2/Macaulay2/packages/Macaulay2Doc/ov_language.m2:1193:0.