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:
parent
34997292f4
commit
06617bbb76
3 changed files with 7 additions and 6 deletions
|
|
@ -212,8 +212,8 @@ proc getPrecedence(tok: TToken, strongSpaces: bool): int =
|
||||||
let relevantChar = tok.ident.s[0]
|
let relevantChar = tok.ident.s[0]
|
||||||
|
|
||||||
# arrow like?
|
# arrow like?
|
||||||
if L > 1 and tok.ident.s[^1] == '>' and tok.ident.s[^2] in {'-', '~', '='}:
|
if L > 1 and tok.ident.s[L-1] == '>' and
|
||||||
return considerStrongSpaces(1)
|
tok.ident.s[L-2] in {'-', '~', '='}: return considerStrongSpaces(1)
|
||||||
|
|
||||||
template considerAsgn(value: expr) =
|
template considerAsgn(value: expr) =
|
||||||
result = if tok.ident.s[L-1] == '=': 1 else: value
|
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
|
Binary operators whose first character is ``^`` are right-associative, all
|
||||||
other binary operators are left-associative.
|
other binary operators are left-associative.
|
||||||
|
|
||||||
Operators ending in either ``->``, ``~>`` or ``=>`` are called
|
|
||||||
`arrow like`:idx:.
|
|
||||||
|
|
||||||
|
|
||||||
Precedence
|
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
|
For binary operators that are not keywords the precedence is determined by the
|
||||||
following rules:
|
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
|
``<``, ``>``, ``!``, ``=``, ``~``, ``?``, it is an *assignment operator* which
|
||||||
has the lowest precedence.
|
has the second lowest precedence.
|
||||||
|
|
||||||
Otherwise precedence is determined by the first character.
|
Otherwise precedence is determined by the first character.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ News
|
||||||
should be used instead.
|
should be used instead.
|
||||||
- ``nim idetools`` has been replaced by a separate tool `nimsuggest`_.
|
- ``nim idetools`` has been replaced by a separate tool `nimsuggest`_.
|
||||||
- *arrow like* operators are not right associative anymore.
|
- *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:
|
``=>``, not just ``>``. Examples of operators still considered arrow like:
|
||||||
``->``, ``==>``, ``+=>``. On the other hand, the following operators are now
|
``->``, ``==>``, ``+=>``. On the other hand, the following operators are now
|
||||||
considered regular operators again: ``|>``, ``-+>``, etc.
|
considered regular operators again: ``|>``, ``-+>``, etc.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue