pseudo icon indicating copy to clipboard operation
pseudo copied to clipboard

Parenthesise operators if necessary

Open atg opened this issue 8 years ago • 1 comments

In Python the not operator has low precedence. In JS the ! operator has high precedence.

To be on the safe side, generators should wrap all operators in parens by default, and only remove them if the generator can prove there is no precedence/associativity issue. Otherwise you'll get issues with things like PHP's weird-ass left associative ternary operator.

Input (Python):

not 0.1 > 0.1

Expected output (JavaScript):

!(0.1 > 0.1)

Actual output (JavaScript):

!0.1 > 0.1

atg avatar Mar 18 '16 20:03 atg

There is already a dict with operator precedence order in the base code generator. It was in one of the initial python generator versions and it was good enough for the alpha release, but now I can just overload some of the precedences in the language specific generators

alehander92 avatar Mar 19 '16 07:03 alehander92