Commit Graph

185 Commits

Author SHA1 Message Date
rocky
1392b18bd7 Adjust for spark-parser 2.7.0 incompatabilities 2017-10-10 14:14:26 -04:00
rocky
9be9abc682 handle newer parser reduction behavior 2017-10-03 11:53:05 -04:00
rocky
c8d15e7654 spark-parser induced changes...
reduce rules can be called without token streams.
2017-10-02 03:09:28 -04:00
rocky
41343c27b7 Misc bugs
parse2.py: restore accidently-removed while1stmt rule
scanner27.py: grammar typo
check_ast: add while1else to list of looping constructs
pysource.py: CALL_FUNCTION_VAR_KW_ARGS with positional args rule is different?
2017-04-10 07:57:56 -04:00
rocky
9e34654b38 Add more while1else grammar rules
Towards addressing issue #93
2017-04-10 02:47:46 -04:00
rocky
9ec312ba5e More 2.6, 2.7 control-flow bugs
Wasn't limiting exception clause to try finally. Probably still has bugs
in try-finally nesting

Add another 2.6/2.7 COME_FROM to try to limit if/end scope better
2017-01-24 00:53:30 -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
a5a0f45dde Try new spark 2.5.1 grammar syntax shortcuts
This package I now declare stable
2016-11-28 07:55:00 -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
7ab4e1fbdb Start grammar reduction checks 2016-11-26 15:38:00 -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
f8917aaf88 Remove redundant 2.7 (and 2.x) grammar rules 2016-11-22 17:31:36 -05: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
056f600da1 Start Python 2.1 bytecode decompile 2016-10-07 22:42:30 -04:00
rocky
b52f341d46 Python 3: "or" doesn't have optional come_from 2016-10-05 22:54:50 -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
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
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
318311818e Python 2.6- try/except control flow detection 2016-09-05 04:02:37 -04:00
rocky
2e3e6658ee Small pypy LOOKUP_METHOD cleanups 2016-08-16 06:09:10 -04:00
rocky
152935ab26 while1 bug applied to Python 2.3 and 2.4 2016-07-28 01:23:29 -04:00
rocky
04ae94ee9e Add python 3.4 grammar checking
DRY grammar testing
2016-07-27 18:32:15 -04:00
rocky
3f7c4209d9 Start to segregate and clean up grammar 2016-07-27 17:35:21 -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
6dc9d3ab2f Small code clean up 2016-07-27 06:01:49 -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
f0a8505887 Add grammar for PyPy 2-arg assert 2016-07-25 22:36:02 -04:00
rocky
04cc80b0d6 PyPy BUILD_MAP_n. Reinstate bytecode tests 2016-07-25 21:53:56 -04:00
rocky
281f429223 Handle PyPy BUILD_MAP_0 where actual kw_args > 0 2016-07-25 17:50:19 -04:00
rocky
8cfecff9c4 Clean up PyPy load_attr grammar rules 2016-07-25 16:05:08 -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
7e1aa6a34d add_custom_rules() in 2.x and 3.x are more alike 2016-07-25 09:33:11 -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
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
0ee52aeeef Isolate pseudo op IMPORT_NAME_CONT
I think this is a holdover from pre 2.3 days. Possibly it can be dropped altogether.
2016-07-14 21:05:09 -04:00
rocky
65b9ecee31 Fix some 2.3 bugs; add more 2.3-6. tests 2016-07-09 17:33:54 -04:00
rocky
ac45e5757c Redo Python 2.3 to be more like the rest 2016-07-09 09:11:04 -04:00
rocky
bec1524c5a 2.6.9 tryelsestmt 2016-07-02 22:53:58 -04:00
rocky
12d22c055f Python 2.6 with as stmt 2016-07-02 22:24:28 -04:00
rocky
7772243ac7 CONTINUE handling in 2.6.9 2016-06-30 05:32:57 -04:00
rocky
d7f7748000 2.6.9 assert 2-arg bug 2016-06-29 22:28:52 -04:00
rocky
fa84f4277a WIP deal with JUMP_IF_{TRUE,FALSE} vs with POP version 2016-06-24 20:06:10 -04:00
rocky
fa7d8f955a WIP Python-2.6 but don't remove opcodes
The scheme for turning 2.6 bytecode into 2.7 psuedo bytecode
I think is a lose.

I won't work for fragment handling.

Instead, change the grammar and syntax rules

This also has the benefits:

* We see how code generation changed over releases
  by looking at grammar and semantic rules rather
  than arbitrary code
* We can better assocate with what's running
  (in a sense this is a restatement of broken fragment
   handling)
* With the right structure in place we are in a better position to
  handle 2.5, 2.4, etc. That is, after a while, the incremental changes
  to get say from python 2.3 bytecode to python 2.7 are great.

Conflicts:
	uncompyle6/parsers/astnode.py
2016-06-24 18:15:59 -04:00
rocky
982a6010a1 WIP 2.6 redo bytecode handling
Don't try to convert 2.6 bytecode to 2.7 psuedo bytecode.
Instead adjust grammar and semantic actions.

Down the line we should to segregate version changes in
semantic code better.
2016-06-24 09:23:30 -04:00
rocky
dc88bcf69f DRY parse grammar a little
More LOAD_CONST grammar removal in 3.2
2016-06-22 08:36:01 -04:00