mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-18 21:40:32 +00:00
Minor fixes for arrow like change patch
Don't use ^ operator yet for compatibility with older compilers. Moved arrow like explanation, and fix precedence description on the text in the manual. Fixed typo in news.
This commit is contained in:
@@ -212,8 +212,8 @@ proc getPrecedence(tok: TToken, strongSpaces: bool): int =
|
||||
let relevantChar = tok.ident.s[0]
|
||||
|
||||
# arrow like?
|
||||
if L > 1 and tok.ident.s[^1] == '>' and tok.ident.s[^2] in {'-', '~', '='}:
|
||||
return considerStrongSpaces(1)
|
||||
if L > 1 and tok.ident.s[L-1] == '>' and
|
||||
tok.ident.s[L-2] in {'-', '~', '='}: return considerStrongSpaces(1)
|
||||
|
||||
template considerAsgn(value: expr) =
|
||||
result = if tok.ident.s[L-1] == '=': 1 else: value
|
||||
|
||||
@@ -15,8 +15,6 @@ Associativity
|
||||
Binary operators whose first character is ``^`` are right-associative, all
|
||||
other binary operators are left-associative.
|
||||
|
||||
Operators ending in either ``->``, ``~>`` or ``=>`` are called
|
||||
`arrow like`:idx:.
|
||||
|
||||
|
||||
Precedence
|
||||
@@ -33,9 +31,12 @@ as ``(@x).abc`` whereas ``$x.abc`` is parsed as ``$(x.abc)``.
|
||||
For binary operators that are not keywords the precedence is determined by the
|
||||
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
|
||||
``<``, ``>``, ``!``, ``=``, ``~``, ``?``, it is an *assignment operator* which
|
||||
has the lowest precedence.
|
||||
has the second lowest precedence.
|
||||
|
||||
Otherwise precedence is determined by the first character.
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ News
|
||||
should be used instead.
|
||||
- ``nim idetools`` has been replaced by a separate tool `nimsuggest`_.
|
||||
- *arrow like* operators are not right associative anymore.
|
||||
- *arrow like* operators are now required end with either ``->``, ``~>`` or
|
||||
- *arrow like* operators are now required to end with either ``->``, ``~>`` or
|
||||
``=>``, not just ``>``. Examples of operators still considered arrow like:
|
||||
``->``, ``==>``, ``+=>``. On the other hand, the following operators are now
|
||||
considered regular operators again: ``|>``, ``-+>``, etc.
|
||||
|
||||
Reference in New Issue
Block a user