Commit Graph

750 Commits

Author SHA1 Message Date
rocky
d6f7ef4e17 DRY op_size
Move from scanner{2,3}.py to scanner.py
2016-10-21 07:40:35 -04:00
rocky
0826129112 DRY Python 2.x unmangle_classname
main.py: small typo: Disassembled -> Decompiled
2016-10-20 06:35:01 -04:00
rocky
78ef16e4d7 Change meta data info in uncompyle6:
* Show file size of source when possible,
  i.e. in Python 3.x
* Show full information about python interpreter
  used to decompile
2016-10-15 19:24:05 -04:00
rocky
59b597ea5d Get ready for release 2.9.2 release-2.9.2 2016-10-15 05:37:56 -04:00
rocky
cb8ffa51d7 Merge branch 'source-indent-respect' 2016-10-14 22:16:24 -04:00
rocky
a7ef513849 Python 2.6- _ifstmst_jump bug 2016-10-14 21:34:55 -04:00
rocky
8e62a48c96 Python 2.6- _ifstmst_jump bug 2016-10-14 21:32:35 -04:00
rocky
6d3b934bf2 Pretty-print constant tuples 2016-10-13 22:59:59 -04:00
rocky
27fb5758bd 2.6 and before: try_middle come_from per except 2016-10-13 20:49:51 -04:00
rocky
5703ccd8b8 2.6 try statement (and below)
They may neeed arbitrary come_froms for each except clause
2016-10-13 19:37:38 -04:00
rocky
20ba165e4a Bug in handling kv, kv2 2016-10-13 06:39:35 -04:00
rocky
7eb9210b0c Start to track line breaks on lists 2016-10-13 06:37:53 -04:00
rocky
fe072d8b57 DRY fragments.py preorder code
pysource.py: doc typo
2016-10-11 22:24:00 -04:00
rocky
f430b0dbe4 Need xdis 3.0.2 for Python 1.5 bug fixes 2016-10-11 02:41:44 -04:00
rocky
9ef670c872 Fix Python 1.5 bytecode deparse
Need xdis 3.0.2 though since the bug is really there.
2016-10-11 02:39:09 -04:00
rocky
c04fe00e50 Fix python 1.5 decompile bugs ...
add bytecode 1.5 tests from decompyle
2016-10-11 02:30:08 -04:00
rocky
52691c4e8a Map expression with source-directed linebreaks ...
for Python 3.4 and 3.5
2016-10-10 21:12:44 -04:00
rocky
f067148b6c Start using source linebreaks in formatting...
.. large literals like maps and dicts, and tuples
2016-10-10 18:28:02 -04:00
rocky
bb8d0a6389 Get ready for release 2.9.1 release-2.9.1 2016-10-10 12:29:57 -04:00
rocky
97ce330b00 Python 1.5 scanner and parser and ..
.. slightly improved Forgot to check in files before.

Handle Python pre 2.2. classes
2016-10-10 12:09:00 -04:00
rocky
8b240a80e7 Get ready for release 2.9.0 ...
- Use xdis 3.0.0 protocol load_module. Needs bump in requirements.txt
  and _pkg_info_.py
- Start Python 1.5 decompiling - another round of work is needed to remove
  bugs
- small cleanups
release-2.9.0
2016-10-10 09:33:49 -04:00
rocky
e888a87d15 Reinstate some tests 2016-10-09 06:44:08 -04:00
rocky
f41426e94b Simpify python 2.1 grammar Fix bug with -t ...
Wasn't showing source text when -t option was given
2016-10-08 21:52:10 -04:00
rocky
22dee55ff7 Python 2.1-2.6 bug in list comprehension 2016-10-08 19:51:57 -04:00
rocky
8916447adb Get ready for release 2.8.4 release-2.8.4 2016-10-08 06:30:44 -04:00
rocky
478602bfa5 Add decompyle's 2.1 tests
Update README.rst to note new pythons supported since last update
2016-10-08 05:54:35 -04:00
rocky
056f600da1 Start Python 2.1 bytecode decompile 2016-10-07 22:42:30 -04:00
rocky
2e1bd2dc13 Use .py extension in disassembled files more often 2016-10-06 04:05:38 -04:00
rocky
346d8678d2 Merge in COME_FROM disambiguation ...
from controlflowbranch. Should probably expand to Python2
parsers as well
2016-10-06 03:27:37 -04:00
rocky
4411ecceba Merge branch 'controlflow' 2016-10-06 03:26:44 -04:00
rocky
a4dd6e9805 Python 3: "or" doesn't have optional come_from 2016-10-05 22:56:48 -04:00
rocky
b52f341d46 Python 3: "or" doesn't have optional come_from 2016-10-05 22:54:50 -04:00
rocky
2ada29618f Python 3: "and" doesn't have optional come_from 2016-10-05 03:36:57 -04:00
rocky
649e4518fe Python 3: "and" doesn't have optional come_from 2016-10-05 03:34:29 -04:00
rocky
0df2c8b4bb Merge branch 'master' into controlflow 2016-10-05 00:01:04 -04:00
rocky
d2b477ae7d Add tuple comma when not in BUILD_LIST_n
Fixes issue #57

bin/uncompile.py: --verify now works on a single bytecode file. We will
set the output to be something created by tempfile.mktemps
2016-10-04 23:58:35 -04:00
rocky
a8f9f2170f Python 3 while1 grammar rules with COME_FROM_LOOP 2016-09-28 05:52:13 -04:00
rocky
fe46015b78 PY3 COME_FROM_LOOP bug
There are still more in sre...
2016-09-27 04:59:06 -04:00
rocky
051efb80f5 PY3: COME_FROM -> COME_FROM_FINALLY as appropriate
We now have all WITH_ op jumps associated in the grammar

Also, some COME_FROM_LOOP grammar fixes
2016-09-27 03:27:41 -04:00
rocky
1fc8ac4700 Interval order COME_FROMs in Python3
This bug had possibly caused lots of grammar pollution which may need
addressing.

We want to process COME_FROMs to the same offset to be in *descending*
order so we have the larger range or biggest instruction interval
last. (I think they are sorted in increasing order, but for safety
we sort them). That way, specific COME_FROM tags will match up
properly. For example, a "loop" with an "if" nested in it should have
the "loop" tag last so the grammar rule matches that properly

Adjust Python 3 grammar for more COME_FROM -> COME_FROM_LOOP. And
remove optional COME_FROM_LOOP where possible. Previously, the
optional-ness was a result of inner nestings gobbling up the
COME_FROM.

We'll probably want to go back and fix this up in Python2.
2016-09-26 09:26:51 -04:00
rocky
c87710dd4b Python 3 COME_FROM -> COME_FROM_WITH appropriately 2016-09-26 08:09:05 -04:00
rocky
ccd129b377 Try stronger verification
verify.py: add check in verification that magic is the same.
Otherwise we go for weak verification.
2016-09-25 17:48:33 -04:00
rocky
c03a8186b5 Address whileTrue if cond .. -> while cond .. bug
Reinstate Python standard library bisect test
2016-09-25 16:59:32 -04:00
rocky
8bc76f19b9 Tidy use of SETUP_ ops
Also possibly remove a bug in decompiling Python 3.0 .. 3.2 which doesn't
have SETUP_WITH
2016-09-23 19:22:09 -04:00
rocky
6908898b90 Tidy use of SETUP_ ops
Also possibly remove a bug in decompiling Python 3.0 .. 3.2 which doesn't
have SETUP_WITH
2016-09-23 19:18:54 -04:00
rocky
fa1a6347e9 Weaken testing for controlfow branch
We have more equivalent programs now
2016-09-23 04:58:29 -04:00
rocky
760532b218 Add COME_FROM_LOOP
Note: we have regressed in --verify and some tests,
but I believe that's because we are producing more equivalant
(if uglier) programs. That's a separate problem though.
2016-09-22 08:24:02 -04:00
rocky
88f2ad1f5a Merge branch 'master' into controlflow 2016-09-22 01:33:29 -04:00
rocky
d271e886d9 Fix pytest grammar test failure
dict and set comprehensions are only in 2.7+
2016-09-22 01:32:00 -04:00
rocky
c0b4a5e703 Fix some Test failures
Fix py.test pytest/test_grammar.py -

Comprehension sorts of things removed from parser that
don't exist in earlier pythons

scanners/tok.py Add back in "to" when needed
2016-09-22 01:27:58 -04:00