stir 0.0.1

Small Threaded Intermediate Representation
Documentation
# stir

`stir` aims to provide an easy to use Intermediate Representation. The ultimate
goal of `stir` is to parallelize the generated IR code, while applying some
other optimization passes.

`stir` is built around the idea of building blocks. Some blocks have reference
to other blocks, that they can call and execute. Each block implements the
following functionalities:

* Debugging
* Pretty-printing
* Interpretation
* Translation to LLVM
* Optimisation

To put blocks together, use a Recipe. To run the Recipe, just `fry` it ! A
recipe needs an entry block (or main block) to start interpreting from.

Use the [`fry`](https://github.com/cohenarthur/fry) binary to intepret STIR code.
`fry` can interpret code pretty-printed from the `stir` crate, or code directly
written in .st file ! For a rundown of the syntax, check [SYNTAX.md](SYNTAX.md)

To use STIR as a representation for your language, simply add a translation unit
from your AST to STIR building blocks.

## Features

* [x] Interpretation
* [ ] JIT Interpretation!
* [ ] Translation to LLVM
* [ ] IR multithreading

## Available building blocks

* [x] Boolean
* [x] IfElse
* [x] Loop