From b3ddf95d7a7fe693535ec8a3ff22f62d90e47419 Mon Sep 17 00:00:00 2001 From: rocky Date: Sat, 12 Aug 2023 07:12:10 -0400 Subject: [PATCH] comprehension in lambda for 3.0 & 3.1 --- .../03_comprehension_in_lambda.pyc | Bin 0 -> 1021 bytes uncompyle6/parsers/parse3.py | 14 ++++++++++++++ uncompyle6/parsers/parse30.py | 4 ++-- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 test/bytecode_3.1_run/03_comprehension_in_lambda.pyc diff --git a/test/bytecode_3.1_run/03_comprehension_in_lambda.pyc b/test/bytecode_3.1_run/03_comprehension_in_lambda.pyc new file mode 100644 index 0000000000000000000000000000000000000000..983f747dbcb7d8afde08fca70fcab3c74b88eb5d GIT binary patch literal 1021 zcmcgq$xg#C5S=6?EMmE#_JZIRiLERWmkNP^D;&xR39K|Wt<|I{c8!F93-AT-ar_Q% zlCnu$070aAo{VSw#?Ny!IW@5qKg)zZd=>aRFxvu1q7$G;4?v$}K(a#ZfbKmy@kn_b ztjQ7T`eZk0;L{yK;aAzH3`hmk4auIpW{y%b8Uu}+0~~j>o$s5xZQ^Vmu2t#za?(*r zSNGZriH8*ac=cg>Fgp!EkLd1(XdhiQBi?^Y=EMrD39~hTE;3JN=oXE__vp!|i*Q({ zuaOeLDB?=Tuu^y9ST19u<5sHH%56l*tplvi`l%8&cP3G*E!SS(T3oGfh$PSYMs-xr z>bxg(Po#0ylJQFa%1xlGA$2m~ob8YgVWRONGhg5nW&QV*EOMjlpd`dUX=c()tpf(W z{F`#$mYI(zWS)i7DP^8ynW6FHP-E=;y}bNd4Xa9ZS?hmQw;<$u9!5NPZWJJd%o8CB zKf4nA^o}QY*IH!;n2!Tva^rXsu#MK=AH48>I%vhKXSsB#+U8~~2SUH<&-zvG1>=Cv AjQ{`u literal 0 HcmV?d00001 diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index e43f07b1..2d68da9c 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -81,9 +81,17 @@ class Python3Parser(PythonParser): set_comp_func ::= BUILD_SET_0 LOAD_ARG FOR_ITER store comp_iter JUMP_BACK RETURN_VALUE RETURN_LAST + set_comp_func ::= BUILD_SET_0 LOAD_ARG FOR_ITER store comp_iter + JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER + set_comp_func ::= BUILD_SET_0 LOAD_FAST FOR_ITER store comp_iter + JUMP_BACK RETURN_VALUE RETURN_LAST + set_comp_func ::= BUILD_SET_0 LOAD_FAST FOR_ITER store comp_iter + JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER set_comp_func ::= BUILD_SET_0 LOAD_ARG FOR_ITER store comp_iter COME_FROM JUMP_BACK RETURN_VALUE RETURN_LAST + set_comp_func ::= BUILD_SET_0 LOAD_ARG FOR_ITER store comp_iter + COME_FROM JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER comp_body ::= dict_comp_body comp_body ::= set_comp_body @@ -101,6 +109,12 @@ class Python3Parser(PythonParser): stmt ::= dict_comp_func dict_comp_func ::= BUILD_MAP_0 LOAD_ARG FOR_ITER store comp_iter JUMP_BACK RETURN_VALUE RETURN_LAST + dict_comp_func ::= BUILD_MAP_0 LOAD_ARG FOR_ITER store + comp_iter JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER + dict_comp_func ::= BUILD_MAP_0 LOAD_FAST FOR_ITER store + comp_iter JUMP_BACK RETURN_VALUE RETURN_LAST + dict_comp_func ::= BUILD_MAP_0 LOAD_FAST FOR_ITER store + comp_iter JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER comp_iter ::= comp_if_not comp_if_not ::= expr jmp_true comp_iter diff --git a/uncompyle6/parsers/parse30.py b/uncompyle6/parsers/parse30.py index f1d2546c..03dc7e6d 100644 --- a/uncompyle6/parsers/parse30.py +++ b/uncompyle6/parsers/parse30.py @@ -77,11 +77,11 @@ class Python30Parser(Python31Parser): set_comp_func ::= set_comp_header LOAD_ARG FOR_ITER store comp_iter - JUMP_BACK COME_FROM POP_TOP JUMP_BACK + JUMP_BACK RETURN_VALUE RETURN_LAST set_comp_func ::= set_comp_header LOAD_ARG FOR_ITER store comp_iter - JUMP_BACK COME_FROM POP_TOP JUMP_BACK + JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER list_comp_header ::= BUILD_LIST_0 DUP_TOP STORE_FAST