mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 13:33:22 +00:00
Merge pull request #2988 from apense/patch-10
Added example for associativity
This commit is contained in:
@@ -15,15 +15,22 @@ Associativity
|
||||
Binary operators whose first character is ``^`` are right-associative, all
|
||||
other binary operators are left-associative.
|
||||
|
||||
|
||||
.. code-block:: nim
|
||||
proc `^/`(x, y: float): float =
|
||||
# a right-associative division operator
|
||||
result = x / y
|
||||
echo 12 ^/ 4 ^/ 8 # 24.0 (4 / 8 = 0.5, then
|
||||
12 / 0.5 = 24.0)
|
||||
echo 12 / 4 / 8 # 0.375 (12 / 4 = 3.0, then
|
||||
3 / 8 = 0.375)
|
||||
|
||||
Precedence
|
||||
----------
|
||||
|
||||
Unary operators always bind stronger than any binary
|
||||
Unary operators always bind stronger than any binary
|
||||
operator: ``$a + b`` is ``($a) + b`` and not ``$(a + b)``.
|
||||
|
||||
If an unary operator's first character is ``@`` it is a `sigil-like`:idx:
|
||||
If an unary operator's first character is ``@`` it is a `sigil-like`:idx:
|
||||
operator which binds stronger than a ``primarySuffix``: ``@x.abc`` is parsed
|
||||
as ``(@x).abc`` whereas ``$x.abc`` is parsed as ``$(x.abc)``.
|
||||
|
||||
@@ -34,7 +41,7 @@ following rules:
|
||||
Operators ending in either ``->``, ``~>`` or ``=>`` are called
|
||||
`arrow like`:idx:, and have the lowest precedence of all operators.
|
||||
|
||||
If the operator ends with ``=`` and its first character is none of
|
||||
If the operator ends with ``=`` and its first character is none of
|
||||
``<``, ``>``, ``!``, ``=``, ``~``, ``?``, it is an *assignment operator* which
|
||||
has the second lowest precedence.
|
||||
|
||||
@@ -76,7 +83,7 @@ is still parsed as ``1 + (3 * 4)``, but ``1+3 * 4`` is parsed as ``(1+3) * 4``:
|
||||
|
||||
|
||||
Furthermore whether an operator is used a prefix operator is affected by the
|
||||
number of spaces:
|
||||
number of spaces:
|
||||
|
||||
.. code-block:: nim
|
||||
#! strongSpaces
|
||||
|
||||
Reference in New Issue
Block a user