Nenad Čaklović
46affe279c
Support for conditonal expression (if-expression)
2022-03-29 12:30:06 +02:00
Aralox
7a89b72260
Support chained assignment statements, e.g. a = b = c
.
...
We know when we have begun a chained assignment when we process a DUP_TOP with non-null on the stack. Push a NODE_CHAINSTORE onto the stack when this happens, and keep it 'floating' on top of the stack for all STORE_X operations until the stack is empty.
To support versions of Python <= 2.5 which use DUP_TOP in more places, I modified ROT_TWO, ROT_THREE and ROT_FOUR to get rid of NODE_CHAINSTORE on the stack if it is present.
2020-10-23 21:19:01 +11:00
Michael Hansen
0540b3991c
Merge pull request #181 from Aralox/Issue-124-handle-async-for-GET_AITER_GET_ANEXT
...
Add support for `async for`
2020-10-22 08:24:56 -07:00
John Richards
345035b544
Adds support for SETUP_ANNOTATION op and variable annotations
...
Tests have also been added.
Fixes #169
2020-10-21 21:42:13 -04:00
Aralox
5bdc0b5baf
Merge remote-tracking branch 'upstream/master' into Issue-124-handle-async-for-GET_AITER_GET_ANEXT
...
Conflicts:
ASTree.cpp
2020-10-21 19:34:37 +11:00
Aralox
91a23f914d
Implement better handling for async for
.
...
Instead of ignoring boilerplate when decompiling `async for`, build the loop semantically by deconstructing the BLK_WHILE -> BLK_CONTAINER -> BLK_TRY that python generates when compiling an `async for` (see https://www.python.org/dev/peps/pep-0492/#asynchronous-iterators-and-async-for ).
When reading GET_AITER, convert the BLK_WHILE into a BLK_ASYNCFOR in the same way as a `for` loop.
Ignore GET_ANEXT.
Use END_FINALLY as the trigger to finish building the BLK_ASYNCFOR:
-> Extract the loop variable from the contents of the BLK_TRY.
-> Throw away the BLK_TRY and BLK_CONTAINER, leave the BLK_ASYNCFOR on top of the stack.
2020-10-21 19:32:20 +11:00
Michael Hansen
d3a46f711f
Merge remote-tracking branch 'dotjrich/issue-172' into master
2020-10-20 21:10:55 -07:00
Michael Hansen
568867c80a
Minor style adjustments
2020-10-20 21:08:02 -07:00
Aralox
8933c9a4a9
Add support for async for
. Issue #124
...
Ignore 'boilerplate' opcodes that set up the async iteration logic internally (https://www.python.org/dev/peps/pep-0492/#asynchronous-iterators-and-async-for ) - We don’t need any of this as GET_AITER is enough to tell us that we are in an `async for`.
2020-10-20 20:39:23 +11:00
John Richards
5b819fa23e
Adds support for BUILD_CONST_KEY_MAP opcode
...
Tests have also been added.
Fixes #172
2020-10-20 01:46:38 -04:00
Aralox
7af40a779f
CRAs
2020-10-20 16:42:19 +11:00
Aralox
1f07a24451
Fix up some dodgy spacing
2020-10-17 21:04:39 +11:00
Aralox
0c9fbd9caf
Issue-165 Added support for f-strings (literal string interpolation https://www.python.org/dev/peps/pep-0498/ )
...
Opcodes handled: FORMAT_VALUE, BUILD_STRING.
Added AST node classes for FormattedValue and JoinedStr.
2020-10-17 20:52:57 +11:00
Michael Hansen
375b8b0c68
Fix non-inplace matrix multiplication operator.
2019-10-10 11:47:48 -07:00
Michael Hansen
de3f7982c3
Support 'yield from' (Python 3.3) and await (Python 3.5) expressions.
...
Currently unsupported are yield from in newer Python versions, and
yield/yield from into an assignment expression.
2019-10-10 10:59:10 -07:00
Michael Hansen
881a200ab0
Change handling of POP_TOP to explicitly mark already-processed nodes.
2019-10-10 10:55:28 -07:00
Michael Hansen
15da179173
Merge print nodes in the AST rather than attempting to manage it during
...
print statement output. Fixes numerous bugs with mangled print statements.
2019-10-09 14:20:46 -07:00
Michael Hansen
cbbffd28e6
Modernize ASTNode.h
2019-10-08 13:34:15 -07:00
Michael Hansen
8713b3b05f
Merge 'pass' node into existing ASTKeyword node type
2019-10-08 13:12:31 -07:00
Michael Hansen
9309effba9
Support Python 3.x kw-only arguments.
2019-10-08 11:36:12 -07:00
Michael Hansen
b5696c8398
Port Python 2.7 list comprehension fixes by @ReDucTor from #78
2019-10-04 16:35:58 -07:00
Michael Hansen
2e93d29233
Don't write parens around for loop value tuples
2019-10-04 14:08:47 -07:00
Michael Hansen
8d3752b4f0
Start requring C++11 with explicit virtual overrides.
2019-10-02 14:41:49 -07:00
Michael Hansen
b9dd99d518
Don't create special objects for NULL, just use NULL directly.
...
Also move null check into PycRef for nullable references.
2017-07-05 16:36:04 -07:00
Michael Hansen
888882c743
Help convince clang that 'this' can be NULL in some cases. Closes #65
2015-10-02 23:00:07 -07:00
Michael Hansen
badd17bd21
Support @ operator
2015-10-01 17:03:41 -07:00
mancoast
58edafd872
Add support for LOAD_BUILD_CLASS op-code
...
Issue #39
2015-04-20 17:38:36 -04:00
Kunal Parmar
cc9bdfa085
Support for with statement.
2012-06-06 22:02:33 -07:00
Michael Hansen
c474d368a1
Use less conflicting filenames
2011-10-23 17:48:10 -07:00
Darryl Pogue
cce5f3cf34
Fix for pickle.pyc from Python 2.2.
...
This feels like the hackiest fix EVER.
2011-10-10 21:22:02 -07:00
Darryl Pogue
e2cf440736
List comprehension support.
2011-10-10 15:57:20 -07:00
Darryl Pogue
7701f221e8
Function varargs and keywordargs.
2011-10-09 22:38:18 -07:00
Darryl Pogue
2df831176e
Fixes for obscure loop conditions.
2011-10-09 15:43:24 -07:00
Darryl Pogue
ff8bb4844b
Fix except/else and generic except statements.
2011-10-02 18:58:38 -07:00
Darryl Pogue
70160f8a28
Basic handling of try/except/finally blocks.
2011-10-01 19:40:34 -07:00
Darryl Pogue
ac4d254a73
Remove old attempts at try handling.
2011-10-01 19:09:59 -07:00
Darryl Pogue
1e249b42fd
Fix importing modules with aliases.
...
aka - from blah import foo as bar
2011-09-20 22:36:15 -07:00
Darryl Pogue
51ca98d766
Support for the yield statement.
2011-09-18 22:31:09 -07:00
Darryl Pogue
84b8cba005
Correct output for in-place operators.
2011-09-18 12:06:29 -07:00
Darryl Pogue
521490c819
Support for printing to a stream (PRINT_*_TO).
2011-09-18 00:35:28 -07:00
Darryl Pogue
13a7c0d6c8
Added exec statement
2011-01-10 13:15:56 -08:00
Darryl Pogue
43640fcbd6
Added sequence unpacking
2011-01-08 16:19:38 -08:00
Darryl Pogue
3be27b5c96
Add slices and prepare for more try/except stuff.
2011-01-04 13:52:15 -08:00
Darryl Pogue
9924eb9d0d
Work on try/except/finally statements.
...
The last time I tried this the monkey didn't survive. Let's hope it works better this time.
2011-01-02 05:13:46 -08:00
Darryl Pogue
eebd941e61
More clean ups for if statements.
2011-01-02 02:51:23 -08:00
Darryl Pogue
f1205548e5
Add raise, break, continue, and a hacky attempt at for loops.
...
for loops currently generate a core dump.
2011-01-01 02:31:31 -08:00
Darryl Pogue
b25baeaf4f
Try to clean up the FastStack issues.
2010-12-30 16:48:59 -08:00
Darryl Pogue
bc0b93c632
Clean up the ASTree code a bit
2010-12-24 23:34:05 -08:00
Darryl Pogue
345544d7da
if/elif/else statements using ASTBlocks
2010-12-24 20:25:55 -08:00
Darryl Pogue
427e05be12
Messy start to try/except/finally blocks
2010-12-21 23:41:56 -08:00