You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-02 16:44:46 +08:00
3.2 WhileTrue grammar bug
This commit is contained in:
BIN
test/bytecode_3.2/09_if_whiletrue_bug.pyc
Normal file
BIN
test/bytecode_3.2/09_if_whiletrue_bug.pyc
Normal file
Binary file not shown.
19
test/simple_source/looping/09_if_whiletrue_bug.py
Normal file
19
test/simple_source/looping/09_if_whiletrue_bug.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Test Bug in handling whileTrue jumping around an else
|
||||
|
||||
# Python 3.2 has
|
||||
# whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK _come_from
|
||||
# where Python 3.5 has
|
||||
# whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_BLOCK _come_from
|
||||
|
||||
import sys
|
||||
|
||||
rv = 0
|
||||
if sys.argv == ['-']:
|
||||
while True:
|
||||
filename = sys.argv[0]
|
||||
try:
|
||||
compile(filename, doraise=True)
|
||||
except IOError:
|
||||
rv = 1
|
||||
else:
|
||||
rv = 1
|
@@ -333,8 +333,13 @@ class Python3Parser(PythonParser):
|
||||
def p_stmt3(self, args):
|
||||
"""
|
||||
stmt ::= whileTruestmt
|
||||
whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_BLOCK _come_from
|
||||
ifelsestmt ::= testexpr c_stmts_opt JUMP_FORWARD else_suite _come_from
|
||||
|
||||
# Python 3.5 may have POP_BLOCK
|
||||
whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK POP_BLOCK _come_from
|
||||
|
||||
# Python < 3.5 no POP BLOCK
|
||||
whileTruestmt ::= SETUP_LOOP l_stmts_opt JUMP_BACK \e__come_from
|
||||
"""
|
||||
|
||||
def p_genexpr3(self, args):
|
||||
|
Reference in New Issue
Block a user