rocky
7755563b65
Some Python 3.6 bytecode->wordcode fixes
2016-12-15 02:54:25 -05:00
rocky
38eed14b41
Another python 3 ELSE fixes and ...
...
Makefile:
- test python 3.0 bytecode
- turn full --verify back on Python 3.x
2016-12-10 06:36:22 -05:00
rocky
2c993f8c32
Another faulty Python3 ELSE tag remove
2016-12-10 00:43:55 -05:00
rocky
813bce4697
Merge branch 'master' of github.com:rocky/python-uncompyle6
2016-12-09 21:13:31 -05:00
rocky
a5d2237435
Python 3.x else clause detection and..
...
- Strengthen verify check.
- weak verification on Python 3.5 for now
2016-12-09 21:10:10 -05:00
rocky
d22931cb49
Get ready for release 2.9.7
...
Some of the many lint things. Linting is kind of stupid though.
2016-12-04 09:36:30 -05:00
rocky
97576e473d
Python 3 while/else bug
2016-11-27 07:06:20 -05:00
rocky
0f56b4f476
Add debug option on Python 3 find_jump_targets()
2016-11-20 03:21:03 -05:00
rocky
f2a3721d7d
Start to improve detect_structure for 2.7 and 2.x
...
Add debug flag to find_jump_targets to show the structure we found.
When there are control-flow bugs, it's often reflected here.
scanner3.py: make code make more similar to 2.x code
2016-11-20 02:38:59 -05:00
rocky
76ae1592d0
verify scanner2 vs scanner3 small changes...
...
verify.py: allow LOAD_CONST None to make LOAD_NAME 'None'
scanner{2,3}.py: make them look more alike
2016-11-17 03:43:39 -05:00
rocky
80a4ad4f1b
Python 3.0 while1 if bug...
...
Is a workaround. We really need more tagging in of SETUP_LOOP and COME_FROM.
2016-11-13 01:28:36 -05:00
rocky
5d10f7a0b0
Python 3.0 doesn't have POP_JUMP ops...
...
In some ways Python 3.0 code generation is more like Python 2.6 (and
before) than it is Python 2.7 or 3.0.
2016-11-06 08:55:03 -05:00
rocky
abb61a4d7d
Fix some Python 3.1 bugs
2016-10-24 02:16:23 -04:00
rocky
d6f7ef4e17
DRY op_size
...
Move from scanner{2,3}.py to scanner.py
2016-10-21 07:40:35 -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
649e4518fe
Python 3: "and" doesn't have optional come_from
2016-10-05 03:34:29 -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
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
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
b6dee24289
First step towards managing control flow decoding
2016-09-21 21:30:57 -04:00
rocky
0fce4c6dc3
Another 3.5+ erroneous RETURN_END_IF misclassify
2016-09-07 04:03:21 -04:00
rocky
c44d4898cb
But in Python 3.5+ erroneosly adding RETURN_END_IF
2016-09-07 03:37:48 -04:00
rocky
318311818e
Python 2.6- try/except control flow detection
2016-09-05 04:02:37 -04:00
rocky
c7788e4545
disassemble -> ingest where appropriate
...
As part of tokenization for (de)parsing, we need to do something like a
disassembly, but is is really a little different.
Disassembly, strictly speaking, is done by the xdis module now.
What "ingestion" does is massage the instruction tokens to a form that is
more amenable for parsing.
In sum, ingestion is different than disassembly, although disassembly is
generally the first part of ingestion.
2016-09-04 11:43:02 -04:00
rocky
6189ce3c04
Bug in 3.x detecting "if" structure and ...
...
scanner3.py: bug in 3.x detecting "if" structure
Make scanner2.py look more like scanner3.py
verify.py: add weak-verify which tests Pytyon syntax, but not code
2016-08-31 04:07:42 -04:00
rocky
ddc5460030
Start to handle Python 3.1 bytecode
2016-08-26 20:50:08 -04:00
rocky
3a6f9d8f24
Fix 3.5 misclassifying RETURN_VALUE
...
We use location of SETUP_EXCEPT instructions to disambiguate.
2016-07-29 08:56:23 -04:00
rocky
5c9c0228ee
PyPy 3.2 bug confusing RETURN_END_IF for except
...
Also fix a instruction formatting bug
2016-07-28 00:41:40 -04:00
rocky
5ffd9b2be7
2.6 and 2.7 while1 grammar rule
...
Fixes issue #40
2016-07-27 13:19:42 -04:00
rocky
3a78332d59
tok.format -> tok.__str__; simplify pypy code
2016-07-27 09:26:39 -04:00
rocky
6c5bd6289f
More PyPy grammar rules
...
* assert one and two-arg form
* trystmt
Simplify adding multiple grammar rules
2016-07-26 10:21:12 -04:00
rocky
04cc80b0d6
PyPy BUILD_MAP_n. Reinstate bytecode tests
2016-07-25 21:53:56 -04:00
rocky
a3e10db8dc
Handle PyPy CALL_METHOD op more correctly
...
Start testing pypy2.7 and 3.2 bytecodes
2016-07-25 13:05:54 -04:00
rocky
476eb50868
Handle PyPy JUMP_IF_NOT_DEBUG
...
Update README.rst to note PyPY and reorganize a little
2016-07-25 09:18:03 -04:00
rocky
285444e19a
Better assembly formatting of jump instructions
2016-07-25 00:36:39 -04:00
rocky
aed4d23c34
More PyPy LOOKUP_METHOD rules
2016-07-24 20:59:44 -04:00
rocky
1c50e34c30
PyPy support
...
* Use proper PYPY 32 opcodes
* handle opcodes LOOKUP_METHOD and CALL_METHOD
* Administrative stuff for PyPy
2016-07-24 18:54:51 -04:00
rocky
21683719e1
Start supporting PyPy 3.2
...
Add some PyPy 2.7 and PyPy 3.2 bytecode files
2016-07-24 04:17:54 -04:00
rocky
21377f3b43
Merge branch 'master' into pypy
...
Conflicts:
uncompyle6/scanners/scanner2.py
2016-07-23 10:57:58 -04:00
rocky
ea733c31d7
Respect after/both option in scanner3
2016-07-17 12:38:48 -04:00
rocky
942b15e3c6
Suppress arg in dissassembly if there is none
2016-07-16 14:12:31 -04:00
rocky
fb870ccd8d
3.x ""raise AssertionError" vs "assert"
...
Not sure this is totally correct yet.
2016-07-14 10:31:12 -04:00
rocky
7b7a9fa4cf
Python 3.4 assertion handling. Improve verify
...
3.4 has jump optimization like 3.5.
verify.py: show mismatch on verification mismatch
2016-07-14 05:20:30 -04:00
rocky
9fdf70f68d
Python 3.(4?) while1 bug
...
Clean up while1 grammar a tad
2016-07-11 10:18:18 -04:00
rocky
59ba8a65cd
Structure detection bugs +
...
Had borked 3.4 grammar rules in
previous refactor
2016-07-10 19:21:55 -04:00
rocky
9c2f48ca4a
DRY and clean up code a little
2016-07-10 08:39:50 -04:00
rocky
44dba42a40
Remove JA. Use standard JUMP_ABSOLUTE instead
2016-07-10 08:21:17 -04:00