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
rocky
b6dee24289
First step towards managing control flow decoding
2016-09-21 21:30:57 -04:00
R. Bernstein
0e9ebca1a5
Merge pull request #56 from rocky/fstring
...
merge fstring changes from moagstar
2016-09-21 20:44:35 -04:00
moagstar
f3b9a5936e
fixed generation of FSTRING_CONVERSION_MAP in < python 2.7
2016-09-21 22:13:25 +02:00
moagstar
bae3d2e361
merge fstring changes from moagstar
2016-09-21 22:04:46 +02:00
rocky
4f83a87a00
Python 2 & 3 scanner code ever so slightly closer
2016-09-21 07:06:30 -04:00
rocky
d8b7c3d813
Small NEWS doc typo
2016-09-21 03:26:44 -04:00
rocky
c119965d96
Small changes
2016-09-18 17:23:49 -04:00
rocky
b02754c954
Get ready for release 2.8.3
release-2.8.3
2016-09-11 19:22:07 -04:00
rocky
23770fca64
Tidy a bit
2016-09-11 03:39:19 -04:00
rocky
71591152ef
3.0 .. 3.4 bug in whileTrue
2016-09-09 22:27:13 -04:00
rocky
251de4338a
3.1 scanner small fixes
2016-09-09 18:23:43 -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
dd661bc94a
Start accepting Python 3.1 bytecode
2016-09-09 15:32:46 -04:00
rocky
c4e6af6e4f
Add 3.6 parser
2016-09-08 05:44:45 -04:00
rocky
57d1f3b9f9
More testing
...
- travis:
* 2.7.12 - bump from 2.7.11
* 3.3.6
test_pyenvlib: add --weak-verify to
Makefile: check-3.2.6 needs --weak-verify
2016-09-08 05:09:36 -04:00
rocky
2d11ffb669
Python 3.0-3.2 *args processing
2016-09-08 03:54:57 -04:00
rocky
b7f1f1b028
3.2 (and down to 3.0?) bug in fn name and kwargs
2016-09-08 02:35:06 -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
fecae9f902
Fix 3.3 named bug and ...
...
Parse 3.4 parameters correctly.
Allow test_pyenvlib to do 3.3.6
2016-09-06 02:15:47 -04:00
rocky
60b25f7596
Python 3.x bug in getting parameter of ** argument
2016-09-05 22:33:59 -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
979bca4fe0
Small cleanup/code optimization
2016-09-04 10:02:20 -04:00
rocky
47a56d3387
Python 2.3--2.6 bug in parsing try-middle
...
Note: it looks like COME_FROMs need to be classified better
with respect to whether they are from an except or not
we are getting if/else vs except nesting errors.
2016-09-04 09:28:47 -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