You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 00:45:53 +08:00
Sync fragments with pysource (a little bit)
This commit is contained in:
@@ -1520,9 +1520,9 @@ class FragmentsWalker(pysource.SourceWalker, object):
|
|||||||
self.write("(")
|
self.write("(")
|
||||||
if kwargs:
|
if kwargs:
|
||||||
# Last arg is tuple of keyword values: omit
|
# Last arg is tuple of keyword values: omit
|
||||||
l = n - 1
|
m = n - 1
|
||||||
else:
|
else:
|
||||||
l = n
|
m = n
|
||||||
|
|
||||||
if kwargs:
|
if kwargs:
|
||||||
# 3.6+ does this
|
# 3.6+ does this
|
||||||
@@ -1534,7 +1534,7 @@ class FragmentsWalker(pysource.SourceWalker, object):
|
|||||||
j += 1
|
j += 1
|
||||||
|
|
||||||
j = 0
|
j = 0
|
||||||
while i < l:
|
while i < m:
|
||||||
self.write(sep)
|
self.write(sep)
|
||||||
value = self.traverse(node[i])
|
value = self.traverse(node[i])
|
||||||
self.write("%s=%s" % (kwargs[j], value))
|
self.write("%s=%s" % (kwargs[j], value))
|
||||||
@@ -1542,7 +1542,7 @@ class FragmentsWalker(pysource.SourceWalker, object):
|
|||||||
j += 1
|
j += 1
|
||||||
i += 1
|
i += 1
|
||||||
else:
|
else:
|
||||||
while i < l:
|
while i < m:
|
||||||
value = self.traverse(node[i])
|
value = self.traverse(node[i])
|
||||||
i += 1
|
i += 1
|
||||||
self.write(sep, value)
|
self.write(sep, value)
|
||||||
@@ -1794,12 +1794,12 @@ class FragmentsWalker(pysource.SourceWalker, object):
|
|||||||
|
|
||||||
def template_engine(self, entry, startnode):
|
def template_engine(self, entry, startnode):
|
||||||
"""The format template interpretation engine. See the comment at the
|
"""The format template interpretation engine. See the comment at the
|
||||||
beginning of this module for the how we interpret format
|
beginning of this module for how we interpret format
|
||||||
specifications such as %c, %C, and so on.
|
specifications such as %c, %C, and so on.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# print("-----")
|
# print("-----")
|
||||||
# print(startnode)
|
# print(startnode.kind)
|
||||||
# print(entry[0])
|
# print(entry[0])
|
||||||
# print('======')
|
# print('======')
|
||||||
|
|
||||||
@@ -1854,14 +1854,27 @@ class FragmentsWalker(pysource.SourceWalker, object):
|
|||||||
|
|
||||||
index = entry[arg]
|
index = entry[arg]
|
||||||
if isinstance(index, tuple):
|
if isinstance(index, tuple):
|
||||||
assert (
|
if isinstance(index[1], str):
|
||||||
node[index[0]] == index[1]
|
# if node[index[0]] != index[1]:
|
||||||
), "at %s[%d], expected %s node; got %s" % (
|
# from trepan.api import debug; debug()
|
||||||
node.kind,
|
assert (
|
||||||
arg,
|
node[index[0]] == index[1]
|
||||||
node[index[0]].kind,
|
), "at %s[%d], expected '%s' node; got '%s'" % (
|
||||||
index[1],
|
node.kind,
|
||||||
)
|
arg,
|
||||||
|
index[1],
|
||||||
|
node[index[0]].kind,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
assert (
|
||||||
|
node[index[0]] in index[1]
|
||||||
|
), "at %s[%d], expected to be in '%s' node; got '%s'" % (
|
||||||
|
node.kind,
|
||||||
|
arg,
|
||||||
|
index[1],
|
||||||
|
node[index[0]].kind,
|
||||||
|
)
|
||||||
|
|
||||||
index = index[0]
|
index = index[0]
|
||||||
assert isinstance(
|
assert isinstance(
|
||||||
index, int
|
index, int
|
||||||
@@ -1881,14 +1894,21 @@ class FragmentsWalker(pysource.SourceWalker, object):
|
|||||||
assert isinstance(tup, tuple)
|
assert isinstance(tup, tuple)
|
||||||
if len(tup) == 3:
|
if len(tup) == 3:
|
||||||
(index, nonterm_name, self.prec) = tup
|
(index, nonterm_name, self.prec) = tup
|
||||||
assert (
|
if isinstance(tup[1], str):
|
||||||
node[index] == nonterm_name
|
assert (
|
||||||
), "at %s[%d], expected '%s' node; got '%s'" % (
|
node[index] == nonterm_name
|
||||||
node.kind,
|
), "at %s[%d], expected '%s' node; got '%s'" % (
|
||||||
arg,
|
node.kind,
|
||||||
nonterm_name,
|
arg,
|
||||||
node[index].kind,
|
nonterm_name,
|
||||||
)
|
node[index].kind,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
assert node[tup[0]] in tup[1], (
|
||||||
|
f"at {node.kind}[{tup[0]}], expected to be in '{tup[1]}' "
|
||||||
|
f"node; got '{node[tup[0]].kind}'"
|
||||||
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
assert len(tup) == 2
|
assert len(tup) == 2
|
||||||
(index, self.prec) = entry[arg]
|
(index, self.prec) = entry[arg]
|
||||||
@@ -2099,6 +2119,7 @@ def code_deparse(
|
|||||||
# Build Syntax Tree from tokenized and massaged disassembly.
|
# Build Syntax Tree from tokenized and massaged disassembly.
|
||||||
# deparsed = pysource.FragmentsWalker(out, scanner, showast=showast)
|
# deparsed = pysource.FragmentsWalker(out, scanner, showast=showast)
|
||||||
show_tree = debug_opts.get("tree", False)
|
show_tree = debug_opts.get("tree", False)
|
||||||
|
linestarts = dict(scanner.opc.findlinestarts(co))
|
||||||
deparsed = walker(
|
deparsed = walker(
|
||||||
version,
|
version,
|
||||||
scanner,
|
scanner,
|
||||||
|
Reference in New Issue
Block a user