You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 00:45:53 +08:00
Fix some 2.5 parsing bugs
This commit is contained in:
BIN
test/bytecode_2.5/06_if_and_bugs.pyc
Normal file
BIN
test/bytecode_2.5/06_if_and_bugs.pyc
Normal file
Binary file not shown.
18
test/simple_source/bug25/06_if_and_bugs.py
Normal file
18
test/simple_source/bug25/06_if_and_bugs.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# 2.5 Bug is from nose/plugins/cover.py
|
||||||
|
def wantFile(self, file, package=None):
|
||||||
|
if self.coverInclusive:
|
||||||
|
if file.endswith(".py"):
|
||||||
|
if package and self.coverPackages:
|
||||||
|
for want in self.coverPackages:
|
||||||
|
if package.startswith(want):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
# 2.5 bug is from nose/plugins/doctests.py
|
||||||
|
def wantFile2(self, file):
|
||||||
|
if self and (self.conf or [exc.search(file) for exc in self.conf]):
|
||||||
|
return True
|
||||||
|
return None
|
@@ -62,6 +62,11 @@ class Python25Parser(Python26Parser):
|
|||||||
kv ::= DUP_TOP expr ROT_TWO expr STORE_SUBSCR
|
kv ::= DUP_TOP expr ROT_TWO expr STORE_SUBSCR
|
||||||
|
|
||||||
_ifstmts_jump ::= c_stmts_opt COME_FROM JUMP_ABSOLUTE COME_FROM POP_TOP
|
_ifstmts_jump ::= c_stmts_opt COME_FROM JUMP_ABSOLUTE COME_FROM POP_TOP
|
||||||
|
|
||||||
|
|
||||||
|
# "and_then" is a hack around the fact we have THEN detection.
|
||||||
|
and_then ::= expr JUMP_IF_FALSE THEN POP_TOP expr JUMP_IF_FALSE THEN POP_TOP
|
||||||
|
testexpr_then ::= and_then
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def customize_grammar_rules(self, tokens, customize):
|
def customize_grammar_rules(self, tokens, customize):
|
||||||
|
@@ -33,6 +33,7 @@ def customize_for_version25(self, version):
|
|||||||
# Note: It is safe to put the variables after "as" in parenthesis,
|
# Note: It is safe to put the variables after "as" in parenthesis,
|
||||||
# and sometimes it is needed.
|
# and sometimes it is needed.
|
||||||
"with": ("%|with %c:\n%+%c%-", 0, 3),
|
"with": ("%|with %c:\n%+%c%-", 0, 3),
|
||||||
|
"and_then": ("%c and %c", (0, "expr"), (4, "expr")),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user