You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 09:22:40 +08:00
Start to reinstate elif's
This commit is contained in:
@@ -353,12 +353,16 @@ TABLE_DIRECT = {
|
|||||||
'ifelsestmt': ( '%|if %c:\n%+%c%-%|else:\n%+%c%-', 0, 1, 3 ),
|
'ifelsestmt': ( '%|if %c:\n%+%c%-%|else:\n%+%c%-', 0, 1, 3 ),
|
||||||
'ifelsestmtc': ( '%|if %c:\n%+%c%-%|else:\n%+%c%-', 0, 1, 3 ),
|
'ifelsestmtc': ( '%|if %c:\n%+%c%-%|else:\n%+%c%-', 0, 1, 3 ),
|
||||||
'ifelsestmtl': ( '%|if %c:\n%+%c%-%|else:\n%+%c%-', 0, 1, 3 ),
|
'ifelsestmtl': ( '%|if %c:\n%+%c%-%|else:\n%+%c%-', 0, 1, 3 ),
|
||||||
|
'ifelsestmtr': ( '%|if %c:\n%+%c%-%|else:\n%+%c%-', 0, 1, 2 ),
|
||||||
|
'ifelsestmtr2': ( '%|if %c:\n%+%c%-%|else:\n%+%c%-\n\n', 0, 1, 3 ), # has COME_FROM
|
||||||
|
|
||||||
|
|
||||||
|
# "elif" forms are not generated by the parser but are created through tree
|
||||||
|
# transformations. See "n_ifelsestmt".
|
||||||
'ifelifstmt': ( '%|if %c:\n%+%c%-%c', 0, 1, 3 ),
|
'ifelifstmt': ( '%|if %c:\n%+%c%-%c', 0, 1, 3 ),
|
||||||
'elifelifstmt': ( '%|elif %c:\n%+%c%-%c', 0, 1, 3 ),
|
'elifelifstmt': ( '%|elif %c:\n%+%c%-%c', 0, 1, 3 ),
|
||||||
'elifstmt': ( '%|elif %c:\n%+%c%-', 0, 1 ),
|
'elifstmt': ( '%|elif %c:\n%+%c%-', 0, 1 ),
|
||||||
'elifelsestmt': ( '%|elif %c:\n%+%c%-%|else:\n%+%c%-', 0, 1, 3 ),
|
'elifelsestmt': ( '%|elif %c:\n%+%c%-%|else:\n%+%c%-', 0, 1, 3 ),
|
||||||
'ifelsestmtr': ( '%|if %c:\n%+%c%-%|else:\n%+%c%-', 0, 1, 2 ),
|
|
||||||
'ifelsestmtr2': ( '%|if %c:\n%+%c%-%|else:\n%+%c%-\n\n', 0, 1, 3 ), # has COME_FROM
|
|
||||||
'elifelsestmtr': ( '%|elif %c:\n%+%c%-%|else:\n%+%c%-\n\n', 0, 1, 2 ),
|
'elifelsestmtr': ( '%|elif %c:\n%+%c%-%|else:\n%+%c%-\n\n', 0, 1, 2 ),
|
||||||
'elifelsestmtr2': ( '%|elif %c:\n%+%c%-%|else:\n%+%c%-\n\n', 0, 1, 3 ), # has COME_FROM
|
'elifelsestmtr2': ( '%|elif %c:\n%+%c%-%|else:\n%+%c%-\n\n', 0, 1, 3 ), # has COME_FROM
|
||||||
|
|
||||||
|
@@ -646,15 +646,31 @@ class SourceWalker(GenericASTTraversal, object):
|
|||||||
self.println()
|
self.println()
|
||||||
self.prune() # stop recursing
|
self.prune() # stop recursing
|
||||||
|
|
||||||
|
# preprocess is used for handling chains of
|
||||||
|
# if elif elif
|
||||||
def n_ifelsestmt(self, node, preprocess=False):
|
def n_ifelsestmt(self, node, preprocess=False):
|
||||||
|
"""
|
||||||
|
Here we turn:
|
||||||
|
|
||||||
|
if ...
|
||||||
|
else
|
||||||
|
if ..
|
||||||
|
|
||||||
|
into:
|
||||||
|
|
||||||
|
if ..
|
||||||
|
elif ...
|
||||||
|
|
||||||
|
where appropriate
|
||||||
|
"""
|
||||||
else_suite = node[3]
|
else_suite = node[3]
|
||||||
|
|
||||||
n = else_suite[0]
|
n = else_suite[0]
|
||||||
|
|
||||||
if len(n) == 1 == len(n[0]) and n[0] == '_stmts':
|
if len(n) == 1 == len(n[0]) and n[0] == 'stmt':
|
||||||
n = n[0][0][0]
|
|
||||||
elif n[0].kind in ('lastc_stmt', 'lastl_stmt'):
|
|
||||||
n = n[0][0]
|
n = n[0][0]
|
||||||
|
elif n[0].kind in ('lastc_stmt', 'lastl_stmt'):
|
||||||
|
n = n[0]
|
||||||
else:
|
else:
|
||||||
if not preprocess:
|
if not preprocess:
|
||||||
self.default(node)
|
self.default(node)
|
||||||
|
Reference in New Issue
Block a user