Merge branch 'master' into python-2.4

This commit is contained in:
rocky
2017-12-10 18:02:23 -05:00
6 changed files with 16 additions and 8 deletions

View File

@@ -40,7 +40,7 @@ obfuscation.
Checking if bytecode is valid is pretty simple: disassemble the code.
Python comes with a disassembly module called `dis`. A prerequisite
module for this package, `xdis` has a cross-python version
disassembler.
disassembler called `pydisasm`.
### Semantic equivalence vs. exact source code
@@ -126,7 +126,7 @@ provide the input command and the output from that, please give:
Sure, I get it. No problem. There is Python assembly code on parse
errors, so simply by hand decompile that. To get a full disassembly,
use pydisasm from the [xdis](https://pypi.python.org/pypi/xdis)
use `pydisasm` from the [xdis](https://pypi.python.org/pypi/xdis)
package. Opcodes are described in the documentation for
the [dis](https://docs.python.org/3.6/library/dis.html) module.

8
NEWS
View File

@@ -1,3 +1,11 @@
uncompyle6 2.14.0 2017-12-10 Dr. Gecko
- Many decompilation bugfixes
- Grammar rule reduction and version isolation
- Match higher-level nonterminal names more closely
with Python AST
- Start automated Python stdlib testing - full round trip
uncompyle6 2.14.0 2017-11-26 johnnybamazing
- Start to isolate grammar rules between versions

Binary file not shown.

View File

@@ -152,14 +152,14 @@ class Python35Parser(Python34Parser):
nargs = token.attr % 256
map_unpack_n = "map_unpack_%s" % nargs
rule = map_unpack_n + ' ::= ' + 'expr ' * (nargs)
print("XXXX", rule)
self.addRule(rule, nop_func)
rule = "unmapexpr ::= %s %s" % (map_unpack_n, opname)
self.addRule(rule, nop_func)
call_token = tokens[i+1]
if self.version == 3.5:
rule = 'call ::= expr unmapexpr ' + call_token.kind
print("XXXX2", rule)
self.addRule(rule, nop_func)
pass
elif opname == 'BUILD_MAP_UNPACK':
self.addRule("""
expr ::= unmap_dict

View File

@@ -623,7 +623,7 @@ def make_function3(self, node, is_lambda, nested=1, codeNode=None):
for n in node:
if n == 'pos_arg':
continue
elif self.version >= 3.4 and not (n.kind in ('kwargs', 'kwarg')):
elif self.version >= 3.4 and not (n.kind in ('kwargs', 'kwargs1', 'kwarg')):
continue
else:
self.preorder(n)

View File

@@ -1,3 +1,3 @@
# This file is suitable for sourcing inside bash as
# well as importing into Python
VERSION='2.14.0'
VERSION='2.14.1'