rocky
ec0669367f
Towards better 3.0 decompilation
...
Sync scanner2 and scanner3 better
2017-01-08 17:40:57 -05:00
rocky
6f097ff1ca
dectect_structure() -> detect_control_flow()
2016-12-29 07:32:36 -05:00
rocky
8eb1a16f5b
DRY code and emitted Python 3 source
...
* Python 3: break; continue -> break
* Use variable in detect_structure for pre[rtarget]
* Make Python 2 and Python 3 detect_structure more alie
2016-12-29 07:28:37 -05:00
rocky
6c546fe6e1
WIP : Add THEN to disambigute from "and"
2016-12-27 22:45:08 -05:00
rocky
e3f4beeb74
Lint
2016-12-24 07:45:02 -05:00
rocky
e6761e13bb
Python flake8 crap
...
Was testing realgud's C-x!8 (goto flake8 warning/error)
2016-12-18 20:18:19 -05:00
rocky
eebec48308
show-asm on python2.5 is optional
...
make scanner2 look a little more like scanner3
2016-12-17 08:01:25 -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
1e324e0e8d
Misc changes
...
scanner26.py: make scanner2.py and scanner26.py more alike
scanner2.py: check that return stmt is last in list. (May change)
main.py: show filename on verify error
test/*: add more
2016-11-26 21:41:45 -05:00
rocky
abecb21671
2.7 grammar bug workaround. Fix docstring bug
2016-11-24 21:57:39 -05:00
rocky
8941417a54
<2.7 "if" detection and dup Python 3 grammar rule
2016-11-24 05:33:08 -05:00
rocky
260ddedbfd
More detailed COME_FROMs
...
For now we only add COME_FROM_FINALLY and COME_FROM_WITH
and even here only on 2.7
2016-11-22 19:42:26 -05:00
rocky
2bc316d6f0
more 2.7 control flow bug fixing
2016-11-20 06:55:08 -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
9e3026bd78
WIP Grammar changes - reinstatng COME_FROMs around ignore_if's
2016-11-15 23:44:22 -05:00
rocky
766451cbb9
WIP remove COME_FROMs around ignore_if's
2016-11-14 09:27:56 -05:00
rocky
6073c77921
Show line numbers in 2.6 "after" asm ..
...
start to understand some of the Python 2.6 bytecode parse failures.
2016-11-14 00:30:23 -05:00
rocky
cd3cf5ec29
Use L. for line number prefix in asm and AST
2016-11-03 21:26:12 -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
0826129112
DRY Python 2.x unmangle_classname
...
main.py: small typo: Disassembled -> Decompiled
2016-10-20 06:35:01 -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
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
2016-10-10 09:33:49 -04:00
rocky
4f83a87a00
Python 2 & 3 scanner code ever so slightly closer
2016-09-21 07:06:30 -04:00
rocky
c119965d96
Small changes
2016-09-18 17:23:49 -04:00
rocky
03e8995d18
ret_cond adjustment for < 2.7 and ...
...
"<= 2.6" -> "< 2.7" since python 2.6's version is 2.6000001
2016-09-09 15:55:15 -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
647248dfc8
A couple more 2.6 (and below) bugs fixed
...
* Detect "return None" inside if statement
* another case of triple ==, ==, ==
scanner2.py: detect_structure: descriminate more on parent type
2016-09-04 04:10:08 -04:00
rocky
75c718bc5c
Python 2.2..2.6 bug in a == b == c == d
...
Fix was to remove some come froms. Feels a little hacky though.
2016-09-03 10:05:55 -04:00
rocky
f1bb40f485
Python 2.6- bug: RETURN_ENDIF, POP_TOP ..
...
POP_TOP should be excluded as a potentional statement beginning
2016-09-02 21:08:44 -04:00
rocky
136f935e26
Fix Python 3.x named param and kwargs bug
2016-09-02 06:30:39 -04:00
rocky
f5eeed6759
2.6- bug: while..and: stmt - on one line
...
If 2.6 or before POP_BLOCK after a JUMP_IF_FALSE does not
constitute a new statement. The POP_BLOCK is really part
of the JUMP_IF_FALSE. In Python 2.7+ it's a single op.
2016-09-01 20:44:17 -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
31413be7a1
Python 2.2 doesn't have opcode LIST_APPEND
2016-08-16 12:45:43 -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
ecbbc7dfea
Custom PyPy rules for tryfinallysmt, assign{2,3}
2016-07-26 16:49:14 -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
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
ca9888ace4
Another 2.7 'continue' detection bug
2016-07-23 17:44:42 -04:00
rocky
21377f3b43
Merge branch 'master' into pypy
...
Conflicts:
uncompyle6/scanners/scanner2.py
2016-07-23 10:57:58 -04:00
rocky
a5f45f232d
2.7: Detect "continue" inside except
...
Fixes issue #38 .
This is a bit hacky. We need a more general "continue" detection.
2016-07-23 10:37:41 -04:00
rocky
7c4316d4fb
Start handling pypy 2.7
...
Need to understand whether we care compiling pypy.
Pypy 2.7 list comprehensions are different and use
its own opcode.
2016-07-21 02:58:50 -04:00
rocky
4a3a62d01b
Align disassembly output with xdis
...
align number of offset fields with xdis.
Show None type when we mean None, not ''
2016-07-17 14:00:00 -04:00
rocky
942b15e3c6
Suppress arg in dissassembly if there is none
2016-07-16 14:12:31 -04:00