Skip to content

Releases: sparkslabs/pyxie

New Pyxie Release 0.0.15

02 Nov 10:59
Compare
Choose a tag to compare

Very minor patch release - missed from 0.0.14:

New

  • clib converted to py clib for adding to build directory

New Pyxie Release 0.0.14

02 Nov 11:00
Compare
Choose a tag to compare

New

  • clib - this will be a collection of C++ code that can be directly or indirectly used in generated programs. Current focus is iterators
  • C++ generator support - to support C++ iterators
  • C++ generator implemention of python's range iterator + acceptance test harness
  • Lex/Parsing of For
  • Type inference/analysis for special cased iterator functions
  • Pynode representation of for loops
  • Code generation for for loops using iterators

Other

  • Extra test case for while - testing 3 way logical expressions
  • Test case for for loops
  • Massive website revamp

New Pyxie Release 0.0.13

02 Nov 11:01
Compare
Choose a tag to compare

This probably marks the first release that's potentially properly useful when combined with
an appropriate included .h file... We support if/elif/else while/break/continue and arbitray
expressions.

New

  • Support for if statements
  • Support for elif clauses (as many as desired)
  • Support for else clauses
  • Support for boolean operators - specifically and/or/not, including any mixture
  • Support for parenthesised expressions

New Pyxie Release 0.0.12

02 Nov 11:01
Compare
Choose a tag to compare

New

  • Initial iteration of website - hosted at www.sparkslabs.com/pyxie/ . Stored in repo
  • support for while statements:
    • While works with While True
    • Break works with With True
    • 'Continue' works in a While loop
    • While Loop conditional is a expression
    • This allows things like loops that count towards zero and do things... :-)
  • Comparison Operators : < > <= >= <> != ==

Combination of these things allows things like countdown programs, basic
benchmarking and so on. Creative use ( while + break) allows creation of "if" like
constructs meaning the code at this point supports sequence, selection and iteration
as well as very basic datatypes. That's almost useful... :-)

New Pyxie Release 0.0.11

02 Nov 11:02
Compare
Choose a tag to compare

New

  • Function call support:
    • Extended Grammar, and pynodes to support function calls.
    • Code generation for function calls
    • Test cases for function calls added
    • Creation of "Print" built in for the moment- to be replaced by 'print'
  • C++ "bridge":
    • Create simple C++ include bridging - #includes are copied straight through
    • Document C++ bridging, and test case

Changed

  • Language Spec updates

Fixes

  • Support empty statements/empty lines

New Pyxie Release 0.0.10

02 Nov 11:02
Compare
Choose a tag to compare
  • Documentation added to pyxie/init.py, to allow project level help from "pydoc pyxie"
  • Expression Statements
  • Improved type inference in explicit analysis phase
    • Explicit analysis phase added - decorates AST, focussed on types. Results of this phase viewable.
    • Pynodes are now tree nodes, simplifying tree traversal for common cases
    • Variables are managed by contexts -- context is added to pynodes during analysis phase, simplifying type inference
    • Contexts changes to store name and list of expressions -- not name and identifier, again, simplifying and generalising type inference
    • Ensure all identifies in global context before analysis starts, simplifying analysis phase
    • New strategy for type inference documented, opens up lexical scoping
  • pyxie compile harness now runs/compiles programs outside the pyxie tree

New Pyxie Release 0.0.9

02 Nov 11:03
Compare
Choose a tag to compare

Primary changes are to how the program is run, and fixes to precedence. This is the first
version to support a non-test mode - so you can output binaries, but also JSON parse trees.

New

  • Test modes for pyxie harness moved into a --test mode
  • Standalone parse mode -- pyxie parse filename -- parses the given filename, outputs result to console
  • Standalone compiler mode --
    • pyxie compile path/to/filename.suffix -- compiles the given file to path/to/filename
    • pyxie compile path/to/filename.suffix path/to/other/filename -- compiles the given file to the destination filename

Changed

  • Switch to left recursion. The reason is because YACC style grammars handle
    this better than right recursion, and the fact it also fixes operator precedence
    correctly in expressions. The reason the grammar was originally right recursive
    is because that's the Grammar that CPython uses, but the parsing process must
    be different (since it's LL(1) and suitable for top down rather than bottom up
    parsing)

Fixes

  • Bracket negative literal values in expressions to avoid confusing C++
  • Precedence as noted above.

New Pyxie Release 0.0.8

02 Nov 11:04
Compare
Choose a tag to compare

Changed

Switched compilation over to using PyNode objects rather than lists

Rolls up alot of changes, and improvements:

  • Simple test case for testing expressions in assignments

  • Added release date for 0.0.7

  • Bump revisions for next release

  • Use PyNodes to represent python programs
    In particular, this replaces the use of lists with the use of objects.
    The aim here is to simplify type inference from code, and injection of
    context - like scoping - into the tree to be able to infer types and
    usage thereof.

  • We're doing this at this stage because the language is complex enough for
    it to start to be useful, but simple enough for it to be not too difficult
    to switch over to.

    Furthermore, by allowing nodes to generate a JSON representation, it's easier
    to see the actual structure being generated - to allow tree simplification,
    but also to allow - at least temporarily - decoupling of changes from the
    python parsing from the C tree generation, and from the C code generation

  • Clean up statements node creation in grammar

  • Simplify expression lists

  • Support iterating over statements

  • Transform pynodes to CST lists for assignment

  • Reverse number order to not match line numbers

  • Iterate over expressions within an expr_list

  • Convert assignments from pynodes

  • Remove old code

  • Can now transform basic core programs based on pynodes

  • Code generation for expressions as rvalues

  • Better test for code generation of expression rvalues

  • Add context into pyidentifier nodes

  • Support transforms for expression rvalues in assignment

  • First pass at adding context - variable lookups into the system

  • Test case that derives types for variables

New Pyxie Release 0.0.7

02 Nov 11:05
Compare
Choose a tag to compare

Changed

  • Bump revision for release
  • Compiler structure & testing improvements
  • Initial support for infix integer addition expressions
  • Support for plus/minus/times/divide infix operations
  • Add test regarding adding string variables together
  • Make parser more relaxed about source file not ending with a newline
  • Bugfix: Fix precedence for plus/minus/times/divide
  • Bugfix: Only output each include once

New Pyxie Release 0.0.6

02 Nov 11:06
Compare
Choose a tag to compare

Overview -- Character Literals, math expressions, build/test improvements

Changed

  • Character literals - parsing and compilation
  • Initial version of changelog
  • Mark WIP/TBD, add character
    • Adds character type, mark which bits of the spec are now TBD, and which are WIP
  • Add "in progress" section to CHANGELOG
  • Build lexer explicitly
  • Basic mathematical expression parsing
    • Parsing of basic expressions involving basic mathematical operators, as opposed to just value_literals.
  • Test case for parsing mathematical expressions
  • Allow parser to be reset
  • Restructure test harness to allow more selective testing
    This also changes the test harness to be closer to a standard
    compiler style API.
  • Run all tests from makefile
  • Codegen test for basic math expressions
    Simplest possible test initially