aboutsummaryrefslogtreecommitdiff
path: root/py/grammar.h
AgeCommit message (Collapse)Author
2016-04-14py: Simplify "and" action within parser by making ident-rules explicit.Damien George
Most grammar rules can optimise to the identity if they only have a single argument, saving a lot of RAM building the parse tree. Previous to this patch, whether a given grammar rule could be optimised was defined (mostly implicitly) by a complicated set of logic rules. With this patch the definition is always specified explicitly by using "and_ident" in the rule definition in the grammar. This simplifies the logic of the parser, making it a bit smaller and faster. RAM usage in unaffected.
2016-04-13py: add async/await/async for/async with syntaxpohmelie
They are sugar for marking function as generator, "yield from" and pep492 python "semantically equivalents" respectively. @dpgeorge was the original author of this patch, but @pohmelie made changes to implement `async for` and `async with`.
2016-03-16py: Don't allocate an extra parse node for power exponent.Damien George
Previous to this patch, the "**b" in "a**b" had its own parse node with just one item (the "b"). Now, the "b" is just the last element of the power parse-node. This saves (a tiny bit of) RAM when compiling.
2015-11-23py/compile: Do proper checking of * and ** in function definition.Damien George
This patch checks that there is only one *, and that ** is last in the arg list.
2015-11-17py: Implement default and star args for lambdas.Damien George
2015-10-08py: Don't generate unnecessary parse nodes for assignment or kwargs.Damien George
This patch eliminates the need for a nested parse node for assignments and keyword arguments. It saves a little bit of RAM when parsing.
2015-07-24py/parse: Fix handling of empty input so it raises an exception.Damien George
2015-04-21py: Clean up some bits and pieces in parser, grammar.Damien George
2015-04-21py: Simplify grammar for stmt rule (this is also how CPython has it).Damien George
2015-02-08py: Parse big-int/float/imag constants directly in parser.Damien George
Previous to this patch, a big-int, float or imag constant was interned (made into a qstr) and then parsed at runtime to create an object each time it was needed. This is wasteful in RAM and not efficient. Now, these constants are parsed straight away in the parser and turned into objects. This allows constants with large numbers of digits (so addresses issue #1103) and takes us a step closer to #722.
2014-12-27py: Allow to properly disable builtin slice operation.Damien George
This patch makes the MICROPY_PY_BUILTINS_SLICE compile-time option fully disable the builtin slice operation (when set to 0). This includes removing the slice sytanx from the grammar. Now, enabling slice costs 4228 bytes on unix x64, and 1816 bytes on stmhal.
2014-12-27py: Allow to properly disable builtin "set" object.Damien George
This patch makes MICROPY_PY_BUILTINS_SET compile-time option fully disable the builtin set object (when set to 0). This includes removing set constructor/comprehension from the grammar, the compiler and the emitters. Now, enabling set costs 8168 bytes on unix x64, and 3576 bytes on stmhal.
2014-12-20py: Add blank and ident flags to grammar rules to simplify parser.Damien George
This saves around 100 bytes code space on stmhal, more on unix.
2014-05-03Add license header to (almost) all files.Damien George
Blanket wide to all .c and .h files. Some files originating from ST are difficult to deal with (license wise) so it was left out of those. Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
2014-04-27py: Change the way function arguments are compiled.Damien George
New way uses slightly less ROM and RAM, should be slightly faster, and, most importantly, allows to catch the error "non-keyword arg following keyword arg". Addresses issue #466.
2014-02-10Clean up handling of function return type annotation.Paul Sokolovsky
2014-02-05py: Add built-in super.Damien George
2014-01-15Implement eval.Damien George
2014-01-04Add ellipsis object.Damien George
2013-12-12py: fix bug with doc string not recognised after first newline of file.Damien
2013-10-18Add single_input rule to grammar, for REPL.Damien
2013-10-04Initial commit.Damien