diff --git a/CHANGELOG b/CHANGELOG index f238f63..718a344 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,7 +6,7 @@ reason. ### In progress -## [0.0.18] - UNRELEASED +## [0.0.18] - 2016-01-10 ### New diff --git a/README.rst b/README.rst index 6d78a4c..0b9584d 100644 --- a/README.rst +++ b/README.rst @@ -237,7 +237,8 @@ Release History Release History: -- 0.0.18 - UNRELEASED - TBD +- 0.0.18 - 2016-01-10 - Grammar changes to support object attributes + and methods, start of servo support in arduino profile. - 0.0.17 - 2015-08-12 - Add pass statement, enable "for" on arduino, update documentation, refactor pyxie harness - 0.0.16 - 2015-08-02 - Adds initial Arduino LEONARDO support, improved @@ -343,9 +344,13 @@ Language Status | expression '-' arith_expression | expression '**' arith_expression - arith_expression : expression_atom - | arith_expression '*' expression_atom - | arith_expression '/' expression_atom + arith_expression : negatable_expression_atom + | arith_expression '*' negatable_expression_atom + | arith_expression '/' negatable_expression_atom + + + negatable_expression_atom : "-" negatable_expression_atom + | expression_atom expression_atom : value_literal | IDENTIFIER '(' ')' # Function call, with no arguments @@ -363,6 +368,8 @@ Language Status | HEX | OCTAL | BINARY + | LONG (suffice is L) + | UNSIGNEDLONG (suffice is l) | '-' number Current Lexing rules used by the grammar: @@ -402,4 +409,4 @@ around version 0.0.15, based on current rate of progress. Keeping it for now also simplifies "yield" later -Michael Sparks, August 2015 +Michael Sparks, January 2015 diff --git a/doc/changelog.md b/doc/changelog.md index bc15347..d7ace10 100644 --- a/doc/changelog.md +++ b/doc/changelog.md @@ -6,15 +6,52 @@ reason. ### In progress -## [0.0.18] - UNRELEASED +## [0.0.18] - 2016-01-10 ### New -* +* Parsing of "long" integers, treating "l" as unsigned long values and "L" as signed long values. +* Code generation for long and unsigned long values works +* Add first major example of a pyxie parsable program - for controlling a 4 legged robot - DAGU playful puppy (8 servos for 4 legs, 2 for pan/tilt in head, IR Array) + -- Does not parse/compile yet! (But will!) +* Add parsing of attribute lookup for objects + * Parsing tests for object attribute and method access + * Test cases for attribute access +* Add simple servo example + * Couple of versions to simplify development - target version + simplest + working version +* Some helper scripts to help while building/testing examples +* Redo function calls to allow attribute access ordering +* Recast identifier in functions as a callable expression +* Initial version of arduino function call descriptors +* Initial support for arduino profile in pynodes +* Code generation for first arduino specific types (specifically "Servo") + +### Fixes + +* Re-enable parse only option +* Allow expression atoms to be negatable, not just numbers (allows things like -step/2) +* Remove trailing semi-colons in arduino-blink test +* Fix Missing import regarding parsing testfiles in bin/pyxie +* Changes regarding precedence of brackets to other expression atoms ### Other -* +* Add a list of the high level things 'missing' to Language status +* Support for dumping the parse tree results as a json file - for debug purposes (disabled in code by default) +* Restores long/unsigned hinting where necessary +* Update range to support start, end and step - replacing max +* Test case for new range implementation +* Make PyAttribute's jdump correctly +* MAJOR Clean up how options are handled - shifted into introspected classes in bin/pyxie, along with improved internal docs +* Initial cleanup inside bin/pyxie-dev +* Improve lexing error messages +* clib updated + +### Will need revisiting + +* Do not clean up builds temporarily + ## [0.0.17] - 2015-08-12 diff --git a/doc/index.md b/doc/index.md index ddf8187..beb9286 100644 --- a/doc/index.md +++ b/doc/index.md @@ -282,7 +282,7 @@ inspired heavily by python introspection) That's quite some time off. Release History: -* 0.0.18 - UNRELEASED - TBD +* 0.0.18 - 2016-01-10 - Grammar changes to support object attributes and methods, start of servo support in arduino profile. * 0.0.17 - 2015-08-12 - Add pass statement, enable "for" on arduino, update documentation, refactor pyxie harness * 0.0.16 - 2015-08-02 - Adds initial Arduino LEONARDO support, improved function call, release build scripts * 0.0.15 - 2015-07-18 - clib converted to py clib for adding to build directory diff --git a/doc/language-status.md b/doc/language-status.md index a19d000..eb3d5ad 100644 --- a/doc/language-status.md +++ b/doc/language-status.md @@ -157,6 +157,45 @@ Key expression support: This means we can almost start writing useful programs, but in particular can start creating simplistic benchmarks for measuring run speed. +## High Level things missing + +### Language related + +From a high level the key things I view as missing are support for: + +* def - function definitions - and therefore implementation of scope +* What happens with mixed types in expressions +* Modulo operator support +* import statements +* yield - generator definitions +* class - class definitions +* object usage - method access, and attribute access + +There is obviously more missing, but these are the high level issues with pyxie's +implementation of language at present. + +### Profile related + +* Linux host profile: + * Support for output (print) needs to be matched by (raw_)input support + * Needs to support input/output from files + +* Arduino profile: + * Need to support the following things at minimum: + * Constants: + * OUTPUT, INPUT (pinModes) + * HIGH, LOW (general pin values) + * functions/etc + * digitalWrite + * delayMicroseconds + * pinMode + * analogRead + * millis + * Hardware devices/libraries etc + * Servo + * IOToy + * prototype microbit + ## Grammar Currently Supported Clearly we're not going to implement the full language spec in one go, so this @@ -227,9 +266,13 @@ necessarily imply code generation, differences will be noted below. | expression '-' arith_expression | expression '**' arith_expression - arith_expression : expression_atom - | arith_expression '*' expression_atom - | arith_expression '/' expression_atom + arith_expression : negatable_expression_atom + | arith_expression '*' negatable_expression_atom + | arith_expression '/' negatable_expression_atom + + + negatable_expression_atom : "-" negatable_expression_atom + | expression_atom expression_atom : value_literal | IDENTIFIER '(' ')' # Function call, with no arguments @@ -247,6 +290,8 @@ necessarily imply code generation, differences will be noted below. | HEX | OCTAL | BINARY + | LONG (suffice is L) + | UNSIGNEDLONG (suffice is l) | '-' number Current Lexing rules used by the grammar: diff --git a/pyxie/__init__.py b/pyxie/__init__.py index f2435f1..28afd69 100644 --- a/pyxie/__init__.py +++ b/pyxie/__init__.py @@ -234,7 +234,7 @@ Release History: -* 0.0.18 - UNRELEASED - TBD +* 0.0.18 - 2016-01-10 - Grammar changes to support object attributes and methods, start of servo support in arduino profile. * 0.0.17 - 2015-08-12 - Add pass statement, enable "for" on arduino, update documentation, refactor pyxie harness * 0.0.16 - 2015-08-02 - Adds initial Arduino LEONARDO support, improved function call, release build scripts * 0.0.15 - 2015-07-18 - clib converted to py clib for adding to build directory @@ -320,9 +320,13 @@ | expression '-' arith_expression | expression '**' arith_expression - arith_expression : expression_atom - | arith_expression '*' expression_atom - | arith_expression '/' expression_atom + arith_expression : negatable_expression_atom + | arith_expression '*' negatable_expression_atom + | arith_expression '/' negatable_expression_atom + + + negatable_expression_atom : "-" negatable_expression_atom + | expression_atom expression_atom : value_literal | IDENTIFIER '(' ')' # Function call, with no arguments @@ -340,6 +344,8 @@ | HEX | OCTAL | BINARY + | LONG (suffice is L) + | UNSIGNEDLONG (suffice is l) | '-' number Current Lexing rules used by the grammar: @@ -376,7 +382,7 @@ Keeping it for now also simplifies "yield" later -Michael Sparks, August 2015 +Michael Sparks, January 2015 """ diff --git a/setup.py b/setup.py index 00ee74b..15b0af6 100644 --- a/setup.py +++ b/setup.py @@ -302,7 +302,8 @@ def find_packages(path, base="" ): Release History: -- 0.0.18 - UNRELEASED - TBD +- 0.0.18 - 2016-01-10 - Grammar changes to support object attributes + and methods, start of servo support in arduino profile. - 0.0.17 - 2015-08-12 - Add pass statement, enable "for" on arduino, update documentation, refactor pyxie harness - 0.0.16 - 2015-08-02 - Adds initial Arduino LEONARDO support, improved @@ -408,9 +409,13 @@ def find_packages(path, base="" ): | expression '-' arith_expression | expression '**' arith_expression - arith_expression : expression_atom - | arith_expression '*' expression_atom - | arith_expression '/' expression_atom + arith_expression : negatable_expression_atom + | arith_expression '*' negatable_expression_atom + | arith_expression '/' negatable_expression_atom + + + negatable_expression_atom : "-" negatable_expression_atom + | expression_atom expression_atom : value_literal | IDENTIFIER '(' ')' # Function call, with no arguments @@ -428,6 +433,8 @@ def find_packages(path, base="" ): | HEX | OCTAL | BINARY + | LONG (suffice is L) + | UNSIGNEDLONG (suffice is l) | '-' number Current Lexing rules used by the grammar: @@ -467,7 +474,7 @@ def find_packages(path, base="" ): Keeping it for now also simplifies "yield" later -Michael Sparks, August 2015 +Michael Sparks, January 2015 """ ) diff --git a/site/src/changelog.md b/site/src/changelog.md index e9602c5..85f30f0 100644 --- a/site/src/changelog.md +++ b/site/src/changelog.md @@ -3,7 +3,7 @@ template: mainpage source_form: markdown name: Changelog title: Changelog -updated: August 2015 +updated: January 2016 --- ## Change Log @@ -13,15 +13,52 @@ reason. ### In progress -## [0.0.18] - UNRELEASED +## [0.0.18] - 2016-01-10 ### New -* +* Parsing of "long" integers, treating "l" as unsigned long values and "L" as signed long values. +* Code generation for long and unsigned long values works +* Add first major example of a pyxie parsable program - for controlling a 4 legged robot - DAGU playful puppy (8 servos for 4 legs, 2 for pan/tilt in head, IR Array) + -- Does not parse/compile yet! (But will!) +* Add parsing of attribute lookup for objects + * Parsing tests for object attribute and method access + * Test cases for attribute access +* Add simple servo example + * Couple of versions to simplify development - target version + simplest + working version +* Some helper scripts to help while building/testing examples +* Redo function calls to allow attribute access ordering +* Recast identifier in functions as a callable expression +* Initial version of arduino function call descriptors +* Initial support for arduino profile in pynodes +* Code generation for first arduino specific types (specifically "Servo") + +### Fixes + +* Re-enable parse only option +* Allow expression atoms to be negatable, not just numbers (allows things like -step/2) +* Remove trailing semi-colons in arduino-blink test +* Fix Missing import regarding parsing testfiles in bin/pyxie +* Changes regarding precedence of brackets to other expression atoms ### Other -* +* Add a list of the high level things 'missing' to Language status +* Support for dumping the parse tree results as a json file - for debug purposes (disabled in code by default) +* Restores long/unsigned hinting where necessary +* Update range to support start, end and step - replacing max +* Test case for new range implementation +* Make PyAttribute's jdump correctly +* MAJOR Clean up how options are handled - shifted into introspected classes in bin/pyxie, along with improved internal docs +* Initial cleanup inside bin/pyxie-dev +* Improve lexing error messages +* clib updated + +### Will need revisiting + +* Do not clean up builds temporarily + ## [0.0.17] - 2015-08-12 diff --git a/site/src/panels/shortlog.md b/site/src/panels/shortlog.md index b991910..4056c7a 100644 --- a/site/src/panels/shortlog.md +++ b/site/src/panels/shortlog.md @@ -5,7 +5,7 @@ name: Shortlog updated: July 2015 title: Shortlog --- -* 0.0.18 - UNRELEASED - TBD +* 0.0.18 - 2016-01-10 - Grammar changes to support object attributes and methods, start of servo support in arduino profile. * 0.0.17 - 2015-08-12 - Add pass statement, enable "for" on arduino, update documentation, refactor pyxie harness * 0.0.16 - 2015-08-02 - Adds initial Arduino LEONARDO support, improved function call, release build scripts * 0.0.15 - 2015-07-18 - clib converted to py clib for adding to build directory