From 16fef9f2e2a09a36df72e01333a1258bee13e44f Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Mon, 27 Jun 2016 15:52:35 -0700 Subject: [PATCH] Reduce more unneeded parentheses in JS and Python. --- generators/javascript.js | 32 ++++++++++++++++++++------------ generators/python.js | 25 +++++++++++++++++++++---- 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/generators/javascript.js b/generators/javascript.js index 1254c88e8..b9e44929c 100644 --- a/generators/javascript.js +++ b/generators/javascript.js @@ -71,23 +71,23 @@ Blockly.JavaScript.addReservedWords( * https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence */ Blockly.JavaScript.ORDER_ATOMIC = 0; // 0 "" ... -Blockly.JavaScript.ORDER_MEMBER = 1.1; // . [] -Blockly.JavaScript.ORDER_NEW = 1.2; // new +Blockly.JavaScript.ORDER_NEW = 1.1; // new +Blockly.JavaScript.ORDER_MEMBER = 1.2; // . [] Blockly.JavaScript.ORDER_FUNCTION_CALL = 2; // () Blockly.JavaScript.ORDER_INCREMENT = 3; // ++ Blockly.JavaScript.ORDER_DECREMENT = 3; // -- -Blockly.JavaScript.ORDER_LOGICAL_NOT = 4.1; // ! -Blockly.JavaScript.ORDER_BITWISE_NOT = 4.2; // ~ -Blockly.JavaScript.ORDER_UNARY_PLUS = 4.3; // + -Blockly.JavaScript.ORDER_UNARY_NEGATION = 4.4; // - +Blockly.JavaScript.ORDER_BITWISE_NOT = 4.1; // ~ +Blockly.JavaScript.ORDER_UNARY_PLUS = 4.2; // + +Blockly.JavaScript.ORDER_UNARY_NEGATION = 4.3; // - +Blockly.JavaScript.ORDER_LOGICAL_NOT = 4.4; // ! Blockly.JavaScript.ORDER_TYPEOF = 4.5; // typeof Blockly.JavaScript.ORDER_VOID = 4.6; // void Blockly.JavaScript.ORDER_DELETE = 4.7; // delete -Blockly.JavaScript.ORDER_MULTIPLICATION = 5.1; // * -Blockly.JavaScript.ORDER_DIVISION = 5.2; // / +Blockly.JavaScript.ORDER_DIVISION = 5.1; // / +Blockly.JavaScript.ORDER_MULTIPLICATION = 5.2; // * Blockly.JavaScript.ORDER_MODULUS = 5.3; // % -Blockly.JavaScript.ORDER_ADDITION = 6.1; // + -Blockly.JavaScript.ORDER_SUBTRACTION = 6.2; // - +Blockly.JavaScript.ORDER_SUBTRACTION = 6.1; // - +Blockly.JavaScript.ORDER_ADDITION = 6.2; // + Blockly.JavaScript.ORDER_BITWISE_SHIFT = 7; // << >> >>> Blockly.JavaScript.ORDER_RELATIONAL = 8; // < <= > >= Blockly.JavaScript.ORDER_IN = 8; // in @@ -108,12 +108,20 @@ Blockly.JavaScript.ORDER_NONE = 99; // (...) * @type {!Array.>} */ Blockly.JavaScript.ORDER_OVERRIDES = [ - // (foo()).bar() -> foo().bar() + // (foo()).bar -> foo().bar // (foo())[0] -> foo()[0] [Blockly.JavaScript.ORDER_FUNCTION_CALL, Blockly.JavaScript.ORDER_MEMBER], - // (foo[0])[1] -> foo[0][1] + // (foo())() -> foo()() + [Blockly.JavaScript.ORDER_FUNCTION_CALL, Blockly.JavaScript.ORDER_FUNCTION_CALL], // (foo.bar).baz -> foo.bar.baz + // (foo.bar)[0] -> foo.bar[0] + // (foo[0]).bar -> foo[0].bar + // (foo[0])[1] -> foo[0][1] [Blockly.JavaScript.ORDER_MEMBER, Blockly.JavaScript.ORDER_MEMBER], + // (foo.bar)() -> foo.bar() + // (foo[0])() -> foo[0]() + [Blockly.JavaScript.ORDER_MEMBER, Blockly.JavaScript.ORDER_FUNCTION_CALL] + // !(!foo) -> !!foo [Blockly.JavaScript.ORDER_LOGICAL_NOT, Blockly.JavaScript.ORDER_LOGICAL_NOT], // a * (b * c) -> a * b * c diff --git a/generators/python.js b/generators/python.js index 18fb26a3e..020e30107 100644 --- a/generators/python.js +++ b/generators/python.js @@ -59,8 +59,8 @@ Blockly.Python.addReservedWords( Blockly.Python.ORDER_ATOMIC = 0; // 0 "" ... Blockly.Python.ORDER_COLLECTION = 1; // tuples, lists, dictionaries Blockly.Python.ORDER_STRING_CONVERSION = 1; // `expression...` -Blockly.Python.ORDER_MEMBER = 2; // . [] -Blockly.Python.ORDER_FUNCTION_CALL = 2; // () +Blockly.Python.ORDER_MEMBER = 2.1; // . [] +Blockly.Python.ORDER_FUNCTION_CALL = 2.2; // () Blockly.Python.ORDER_EXPONENTIATION = 3; // ** Blockly.Python.ORDER_UNARY_SIGN = 4; // + - Blockly.Python.ORDER_BITWISE_NOT = 4; // ~ @@ -84,9 +84,26 @@ Blockly.Python.ORDER_NONE = 99; // (...) * @type {!Array.>} */ Blockly.Python.ORDER_OVERRIDES = [ - // (foo()).bar() -> foo().bar() + // (foo()).bar -> foo().bar // (foo())[0] -> foo()[0] - [Blockly.Python.ORDER_FUNCTION_CALL, Blockly.Python.ORDER_MEMBER] + [Blockly.Python.ORDER_FUNCTION_CALL, Blockly.Python.ORDER_MEMBER], + // (foo())() -> foo()() + [Blockly.Python.ORDER_FUNCTION_CALL, Blockly.Python.ORDER_FUNCTION_CALL], + // (foo.bar).baz -> foo.bar.baz + // (foo.bar)[0] -> foo.bar[0] + // (foo[0]).bar -> foo[0].bar + // (foo[0])[1] -> foo[0][1] + [Blockly.Python.ORDER_MEMBER, Blockly.Python.ORDER_MEMBER], + // (foo.bar)() -> foo.bar() + // (foo[0])() -> foo[0]() + [Blockly.Python.ORDER_MEMBER, Blockly.Python.ORDER_FUNCTION_CALL] + + // not (not foo) -> not not foo + [Blockly.Python.ORDER_LOGICAL_NOT, Blockly.Python.ORDER_LOGICAL_NOT], + // a and (b and c) -> a and b and c + [Blockly.Python.ORDER_LOGICAL_AND, Blockly.Python.ORDER_LOGICAL_AND], + // a or (b or c) -> a or b or c + [Blockly.Python.ORDER_LOGICAL_OR, Blockly.Python.ORDER_LOGICAL_OR] ]; /**