Exponentiation operator precedence
Isiah Meadows
isiahmeadows at gmail.com
Tue Aug 25 16:42:50 UTC 2015
I like this. It works very well.
On Tue, Aug 25, 2015, 12:38 Claude Pache <claude.pache at gmail.com> wrote:
>
> I think the following grammar could work.
> Replace the current (ES2015) PostfixExpression production with:
>
> ```
> IncrementExpression:
> LeftHandSideExpression
> LeftHandSideExpression [no LineTerminator here] ++
> LeftHandSideExpression [no LineTerminator here] --
> ++ LeftHandSideExpression
> -- LeftHandSideExpression
> ```
>
> And define UnaryExpression as:
>
> ```
> UnaryExpression:
> IncrementExpression
> delete UnaryExpression
> void UnaryExpression
> typeof UnaryExpression
> ++ UnaryExpression
> + UnaryExpression
> -- UnaryExpression
> - UnaryExpression
> ~ UnaryExpression
> ! UnaryExpression
> IncrementExpression ** UnaryExpression
> ```
>
> where the following production (which exists only to avoid to confusingly
> interpret, e.g., `++x++` as `+ +x++`):
>
> ```
> UnaryExpression:
> ++ UnaryExpression
> -- UnaryExpression
> ```
>
> yields a static SyntaxError (or a static ReferenceError if we want to be
> 100% compatible ES2015).
>
>
> That way, we have the following expected behaviour:
> * in/decrement operators bind most tightly;
> * unary and exponentiation operators are applied from right to left.
>
>
> —Claude
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150825/1cebf9f6/attachment.html>
More information about the es-discuss
mailing list