From ddeb5af6d6ee7fb72a7c5d1c846f321502acfeda Mon Sep 17 00:00:00 2001 From: rocky Date: Sat, 29 Jul 2023 12:09:25 -0400 Subject: [PATCH] compare_chained2 _> compare_chained_right --- test/simple_source/bug33/01_triple_compare.py | 4 +- uncompyle6/parser.py | 7 +-- uncompyle6/parsers/parse26.py | 12 ++--- uncompyle6/parsers/parse27.py | 6 +-- uncompyle6/parsers/parse3.py | 2 +- uncompyle6/parsers/parse30.py | 14 +++--- uncompyle6/parsers/parse32.py | 7 ++- uncompyle6/parsers/parse36.py | 2 +- uncompyle6/parsers/parse37.py | 46 +++++++++---------- uncompyle6/semantics/consts.py | 2 +- uncompyle6/semantics/customize37.py | 10 ++-- 11 files changed, 56 insertions(+), 56 deletions(-) diff --git a/test/simple_source/bug33/01_triple_compare.py b/test/simple_source/bug33/01_triple_compare.py index dc28d36c..cdbc18ab 100644 --- a/test/simple_source/bug33/01_triple_compare.py +++ b/test/simple_source/bug33/01_triple_compare.py @@ -1,7 +1,7 @@ # In Python 3.3+ this uses grammar rule -# compare_chained2 ::= expr COMPARE_OP RETURN_VALUE +# compare_chained_right ::= expr COMPARE_OP RETURN_VALUE # In Python 3.6 uses this uses grammar rule -# compare_chained2 ::= expr COMPARE_OP come_froms JUMP_FORWARD +# compare_chained_right ::= expr COMPARE_OP come_froms JUMP_FORWARD # Seen in Python 3.3 ipaddress.py diff --git a/uncompyle6/parser.py b/uncompyle6/parser.py index dbeaf73f..8b91f040 100644 --- a/uncompyle6/parser.py +++ b/uncompyle6/parser.py @@ -597,9 +597,10 @@ class PythonParser(GenericASTBuilder): compare ::= compare_single compare_single ::= expr expr COMPARE_OP - # A compare_chained is two comparisions like x <= y <= z - compare_chained ::= expr compared_chained_middle ROT_TWO POP_TOP _come_froms - compare_chained2 ::= expr COMPARE_OP JUMP_FORWARD + # A compare_chained is two comparisions, as in: x <= y <= z + compare_chained ::= expr compared_chained_middle ROT_TWO POP_TOP + _come_froms + compare_chained_right ::= expr COMPARE_OP JUMP_FORWARD # Non-null kvlist items are broken out in the indiviual grammars kvlist ::= diff --git a/uncompyle6/parsers/parse26.py b/uncompyle6/parsers/parse26.py index 1c90b194..74370369 100644 --- a/uncompyle6/parsers/parse26.py +++ b/uncompyle6/parsers/parse26.py @@ -307,22 +307,22 @@ class Python26Parser(Python2Parser): and ::= expr JUMP_IF_FALSE POP_TOP expr JUMP_IF_FALSE POP_TOP - # compare_chained is x <= y <= z + # A "compare_chained" is two comparisions like x <= y <= z compare_chained ::= expr compared_chained_middle ROT_TWO COME_FROM POP_TOP _come_froms compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP jmp_false compared_chained_middle _come_froms compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP - jmp_false compare_chained2 _come_froms + jmp_false compare_chained_right _come_froms compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP jmp_false_then compared_chained_middle _come_froms compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP - jmp_false_then compare_chained2 _come_froms + jmp_false_then compare_chained_right _come_froms - compare_chained2 ::= expr COMPARE_OP return_expr_lambda - compare_chained2 ::= expr COMPARE_OP RETURN_END_IF_LAMBDA - compare_chained2 ::= expr COMPARE_OP RETURN_END_IF COME_FROM + compare_chained_right ::= expr COMPARE_OP return_expr_lambda + compare_chained_right ::= expr COMPARE_OP RETURN_END_IF_LAMBDA + compare_chained_right ::= expr COMPARE_OP RETURN_END_IF COME_FROM return_if_lambda ::= RETURN_END_IF_LAMBDA POP_TOP stmt ::= if_exp_lambda diff --git a/uncompyle6/parsers/parse27.py b/uncompyle6/parsers/parse27.py index 50e1503a..92f0d4b6 100644 --- a/uncompyle6/parsers/parse27.py +++ b/uncompyle6/parsers/parse27.py @@ -120,13 +120,13 @@ class Python27Parser(Python2Parser): JUMP_IF_FALSE_OR_POP compared_chained_middle COME_FROM compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP - JUMP_IF_FALSE_OR_POP compare_chained2 COME_FROM + JUMP_IF_FALSE_OR_POP compare_chained_right COME_FROM return_lambda ::= RETURN_VALUE return_lambda ::= RETURN_VALUE_LAMBDA - compare_chained2 ::= expr COMPARE_OP return_lambda - compare_chained2 ::= expr COMPARE_OP return_lambda + compare_chained_right ::= expr COMPARE_OP return_lambda + compare_chained_right ::= expr COMPARE_OP return_lambda # if_exp_true are for conditions which always evaluate true # There is dead or non-optional remnants of the condition code though, diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index ab343826..e43f07b1 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -354,7 +354,7 @@ class Python3Parser(PythonParser): compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP JUMP_IF_FALSE_OR_POP compared_chained_middle COME_FROM compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP JUMP_IF_FALSE_OR_POP - compare_chained2 COME_FROM + compare_chained_right COME_FROM """ def p_stmt3(self, args): diff --git a/uncompyle6/parsers/parse30.py b/uncompyle6/parsers/parse30.py index df5eaf99..f9106665 100644 --- a/uncompyle6/parsers/parse30.py +++ b/uncompyle6/parsers/parse30.py @@ -20,8 +20,8 @@ class Python30Parser(Python31Parser): RAISE_VARARGS_1 come_froms call_stmt ::= expr _come_froms POP_TOP - return_if_lambda ::= RETURN_END_IF_LAMBDA COME_FROM POP_TOP - compare_chained2 ::= expr COMPARE_OP RETURN_END_IF_LAMBDA + return_if_lambda ::= RETURN_END_IF_LAMBDA COME_FROM POP_TOP + compare_chained_right ::= expr COMPARE_OP RETURN_END_IF_LAMBDA # FIXME: combine with parse3.2 whileTruestmt ::= SETUP_LOOP l_stmts_opt @@ -206,12 +206,12 @@ class Python30Parser(Python31Parser): come_froms POP_TOP POP_BLOCK COME_FROM_LOOP - # compare_chained is x <= y <= z + # A "compare_chained" is two comparisions like x <= y <= z compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP - jmp_false compared_chained_middle _come_froms + jmp_false compared_chained_middle _come_froms compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP - jmp_false compare_chained2 _come_froms - compare_chained2 ::= expr COMPARE_OP RETURN_END_IF + jmp_false compare_chained_right _come_froms + compare_chained_right ::= expr COMPARE_OP RETURN_END_IF """ @@ -275,7 +275,7 @@ class Python30Parser(Python31Parser): JUMP_IF_FALSE_OR_POP compared_chained_middle COME_FROM compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP - JUMP_IF_FALSE_OR_POP compare_chained2 COME_FROM + JUMP_IF_FALSE_OR_POP compare_chained_right COME_FROM ret_or ::= expr JUMP_IF_TRUE_OR_POP return_expr_or_cond COME_FROM ret_and ::= expr JUMP_IF_FALSE_OR_POP return_expr_or_cond COME_FROM if_exp_ret ::= expr POP_JUMP_IF_FALSE expr RETURN_END_IF diff --git a/uncompyle6/parsers/parse32.py b/uncompyle6/parsers/parse32.py index f0706798..923aca73 100644 --- a/uncompyle6/parsers/parse32.py +++ b/uncompyle6/parsers/parse32.py @@ -25,10 +25,9 @@ class Python32Parser(Python3Parser): """ if_exp ::= expr jmp_false expr jump_forward_else expr COME_FROM - # compare_chained2 is used in a "chained_compare": x <= y <= z - # used exclusively in compare_chained - compare_chained2 ::= expr COMPARE_OP RETURN_VALUE - compare_chained2 ::= expr COMPARE_OP RETURN_VALUE_LAMBDA + # compare_chained_right is used in a "chained_compare": x <= y <= z + compare_chained_right ::= expr COMPARE_OP RETURN_VALUE + compare_chained_right ::= expr COMPARE_OP RETURN_VALUE_LAMBDA # Python < 3.5 no POP BLOCK whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK COME_FROM_LOOP diff --git a/uncompyle6/parsers/parse36.py b/uncompyle6/parsers/parse36.py index fd79035f..280b23ba 100644 --- a/uncompyle6/parsers/parse36.py +++ b/uncompyle6/parsers/parse36.py @@ -190,7 +190,7 @@ class Python36Parser(Python35Parser): tryfinally_return_stmt ::= SETUP_FINALLY suite_stmts_opt POP_BLOCK LOAD_CONST COME_FROM_FINALLY - compare_chained2 ::= expr COMPARE_OP come_froms JUMP_FORWARD + compare_chained_right ::= expr COMPARE_OP come_froms JUMP_FORWARD """ # Some of this is duplicated from parse37. Eventually we'll probably rebase from diff --git a/uncompyle6/parsers/parse37.py b/uncompyle6/parsers/parse37.py index d73be25d..fad4d1ce 100644 --- a/uncompyle6/parsers/parse37.py +++ b/uncompyle6/parsers/parse37.py @@ -223,7 +223,7 @@ class Python37Parser(Python37BaseParser): # A compare_chained is two comparisions like x <= y <= z compare_chained ::= expr compared_chained_middle ROT_TWO POP_TOP _come_froms - compare_chained2 ::= expr COMPARE_OP JUMP_FORWARD + compare_chained_right ::= expr COMPARE_OP JUMP_FORWARD # Non-null kvlist items are broken out in the indiviual grammars kvlist ::= @@ -440,10 +440,10 @@ class Python37Parser(Python37BaseParser): """ if_exp::= expr jmp_false expr jump_forward_else expr COME_FROM - # compare_chained2 is used in a "chained_compare": x <= y <= z + # compare_chained_right is used in a "chained_compare": x <= y <= z # used exclusively in compare_chained - compare_chained2 ::= expr COMPARE_OP RETURN_VALUE - compare_chained2 ::= expr COMPARE_OP RETURN_VALUE_LAMBDA + compare_chained_right ::= expr COMPARE_OP RETURN_VALUE + compare_chained_right ::= expr COMPARE_OP RETURN_VALUE_LAMBDA # Python < 3.5 no POP BLOCK whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK COME_FROM_LOOP @@ -631,36 +631,36 @@ class Python37Parser(Python37BaseParser): compare_chained37_false ::= expr compared_chained_middle_false_37 compare_chained37_false ::= expr compared_chained_middleb_false_37 - compare_chained37_false ::= expr compare_chained2_false_37 + compare_chained37_false ::= expr compare_chained_right_false_37 compared_chained_middlea_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE compared_chained_middlea_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE - compare_chained2a_37 COME_FROM POP_TOP COME_FROM + compare_chained_righta_37 COME_FROM POP_TOP COME_FROM compared_chained_middleb_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE - compare_chained2b_false_37 POP_TOP _jump COME_FROM + compare_chained_rightb_false_37 POP_TOP _jump COME_FROM compared_chained_middlec_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE - compare_chained2a_37 POP_TOP + compare_chained_righta_37 POP_TOP compared_chained_middle_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE - compare_chained2c_37 POP_TOP JUMP_FORWARD COME_FROM + compare_chained_rightc_37 POP_TOP JUMP_FORWARD COME_FROM compared_chained_middle_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE - compare_chained2b_false_37 POP_TOP _jump COME_FROM + compare_chained_rightb_false_37 POP_TOP _jump COME_FROM - compare_chained2_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE - compare_chained2a_false_37 POP_TOP JUMP_BACK COME_FROM + compare_chained_right_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE + compare_chained_righta_false_37 POP_TOP JUMP_BACK COME_FROM - compare_chained2a_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_TRUE JUMP_FORWARD - compare_chained2a_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_TRUE JUMP_BACK - compare_chained2a_false_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE jf_cfs + compare_chained_righta_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_TRUE JUMP_FORWARD + compare_chained_righta_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_TRUE JUMP_BACK + compare_chained_righta_false_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE jf_cfs - compare_chained2b_false_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE JUMP_FORWARD COME_FROM - compare_chained2b_false_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE JUMP_FORWARD + compare_chained_rightb_false_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE JUMP_FORWARD COME_FROM + compare_chained_rightb_false_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE JUMP_FORWARD - compare_chained2c_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP come_from_opt POP_JUMP_IF_FALSE - compare_chained2a_false_37 ELSE - compare_chained2c_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP come_from_opt POP_JUMP_IF_FALSE - compare_chained2a_false_37 + compare_chained_rightc_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP come_from_opt POP_JUMP_IF_FALSE + compare_chained_righta_false_37 ELSE + compare_chained_rightc_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP come_from_opt POP_JUMP_IF_FALSE + compare_chained_righta_false_37 """ def p_37_conditionals(self, args): @@ -1022,7 +1022,7 @@ class Python37Parser(Python37BaseParser): compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP JUMP_IF_FALSE_OR_POP compared_chained_middle COME_FROM compared_chained_middle ::= expr DUP_TOP ROT_THREE COMPARE_OP JUMP_IF_FALSE_OR_POP - compare_chained2 COME_FROM + compare_chained_right COME_FROM """ def p_stmt3(self, args): @@ -1209,7 +1209,7 @@ class Python37Parser(Python37BaseParser): tryfinally_return_stmt ::= SETUP_FINALLY suite_stmts_opt POP_BLOCK LOAD_CONST COME_FROM_FINALLY - compare_chained2 ::= expr COMPARE_OP come_froms JUMP_FORWARD + compare_chained_right ::= expr COMPARE_OP come_froms JUMP_FORWARD """ def p_37_misc(self, args): diff --git a/uncompyle6/semantics/consts.py b/uncompyle6/semantics/consts.py index 8981d521..18d5b9e2 100644 --- a/uncompyle6/semantics/consts.py +++ b/uncompyle6/semantics/consts.py @@ -339,7 +339,7 @@ TABLE_DIRECT = { "compare_single": ('%p %[-1]{pattr.replace("-", " ")} %p', (0, 19), (1, 19)), "compare_chained": ("%p %p", (0, 29), (1, 30)), "compared_chained_middle": ('%[3]{pattr.replace("-", " ")} %p %p', (0, 19), (-2, 19)), - "compare_chained2": ('%[1]{pattr.replace("-", " ")} %p', (0, 19)), + "compare_chained_right": ('%[1]{pattr.replace("-", " ")} %p', (0, 19)), # "classdef": (), # handled by n_classdef() # A custom rule in n_function def distinguishes whether to call this or # function_def_async diff --git a/uncompyle6/semantics/customize37.py b/uncompyle6/semantics/customize37.py index 67613e0f..c0b2f2f7 100644 --- a/uncompyle6/semantics/customize37.py +++ b/uncompyle6/semantics/customize37.py @@ -109,7 +109,7 @@ def customize_for_version37(self, version): (0, PRECEDENCE["compare"] - 1), (-4, PRECEDENCE["compare"] - 1), ), - "compare_chained2_false_37": ( + "compare_chained_right_false_37": ( ' %[3]{pattr.replace("-", " ")} %p %p', (0, PRECEDENCE["compare"] - 1), (-5, PRECEDENCE["compare"] - 1), @@ -124,19 +124,19 @@ def customize_for_version37(self, version): (0, PRECEDENCE["compare"] - 1), (-2, PRECEDENCE["compare"] - 1), ), - "compare_chained2a_37": ( + "compare_chained_righta_37": ( '%[1]{pattr.replace("-", " ")} %p', (0, PRECEDENCE["compare"] - 1), ), - "compare_chained2b_false_37": ( + "compare_chained_rightb_false_37": ( '%[1]{pattr.replace("-", " ")} %p', (0, PRECEDENCE["compare"] - 1), ), - "compare_chained2a_false_37": ( + "compare_chained_righta_false_37": ( '%[1]{pattr.replace("-", " ")} %p', (0, PRECEDENCE["compare"] - 1), ), - "compare_chained2c_37": ( + "compare_chained_rightc_37": ( '%[3]{pattr.replace("-", " ")} %p %p', (0, PRECEDENCE["compare"] - 1), (6, PRECEDENCE["compare"] - 1),