From 152935ab26027c31a744ae10b15af3606001114f Mon Sep 17 00:00:00 2001 From: rocky Date: Thu, 28 Jul 2016 01:23:29 -0400 Subject: [PATCH] while1 bug applied to Python 2.3 and 2.4 --- test/bytecode_2.3/09_whiletrue_bug.pyc | Bin 326 -> 338 bytes uncompyle6/parsers/parse2.py | 1 + uncompyle6/parsers/parse23.py | 6 ++++-- uncompyle6/parsers/parse24.py | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/test/bytecode_2.3/09_whiletrue_bug.pyc b/test/bytecode_2.3/09_whiletrue_bug.pyc index 09b3a9bb7ebc8f9814e09847782367390f220b4e..0c2764967a8ed406bf64978eb41c78c6a2edf4ef 100644 GIT binary patch delta 183 zcmX@cbcspY`V%kL&DS%+lNq3Z6-YY(adF{9X%!y^h7?AIR7QqoMn=Z)LSY7$RAz=O zE{1$w2A}|A3KK&V3jv)d3p0SS6Kj-IL8cdT z0Ezhcw9K5;`1oQLASa}#G_{x=$Vkr5Ey&E7cqUCs49F8;WM*JzWM&j$cT%0sfTE&)`A%&44m64&Dk&!XHP?&)wm4zXT ziy@zv0Vu$j!o(28$^aB*i~tegdF%{Ou~b$DcaMqPO1x|!qga4MVo`eW#C>Ai96)wj hW=?8eV(!FCX(9qZt^gx513M!#qX;7(qX-ilBLEN^8Ik}1 diff --git a/uncompyle6/parsers/parse2.py b/uncompyle6/parsers/parse2.py index cec08167..b3899a23 100644 --- a/uncompyle6/parsers/parse2.py +++ b/uncompyle6/parsers/parse2.py @@ -43,6 +43,7 @@ class Python2Parser(PythonParser): def p_stmt2(self, args): """ while1stmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_BLOCK COME_FROM + exec_stmt ::= expr exprlist DUP_TOP EXEC_STMT exec_stmt ::= expr exprlist EXEC_STMT diff --git a/uncompyle6/parsers/parse23.py b/uncompyle6/parsers/parse23.py index d3a3ba1d..f39f7954 100644 --- a/uncompyle6/parsers/parse23.py +++ b/uncompyle6/parsers/parse23.py @@ -14,9 +14,11 @@ class Python23Parser(Python24Parser): def p_misc23(self, args): ''' - _while1test ::= JUMP_FORWARD JUMP_IF_FALSE POP_TOP COME_FROM + # Used to keep semantic positions the same across later versions + # of Python + _while1test ::= SETUP_LOOP JUMP_FORWARD JUMP_IF_FALSE POP_TOP COME_FROM - while1stmt ::= SETUP_LOOP _while1test l_stmts JUMP_BACK + while1stmt ::= _while1test l_stmts_opt JUMP_BACK COME_FROM POP_TOP POP_BLOCK COME_FROM list_compr ::= BUILD_LIST_0 DUP_TOP LOAD_ATTR designator list_iter del_stmt diff --git a/uncompyle6/parsers/parse24.py b/uncompyle6/parsers/parse24.py index 579fe4ce..92a798a2 100644 --- a/uncompyle6/parsers/parse24.py +++ b/uncompyle6/parsers/parse24.py @@ -26,6 +26,7 @@ class Python24Parser(Python25Parser): # Python 2.5+ omits POP_TOP POP_BLOCK while1stmt ::= SETUP_LOOP l_stmts JUMP_BACK POP_TOP POP_BLOCK COME_FROM + while1stmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_TOP POP_BLOCK COME_FROM # Python 2.5+: # call_stmt ::= expr POP_TOP