

The view from ten thousand feet looks like so:
-FRONT END-
source text in Mythryl
|
| lexing and parsing
V
raw syntax
|
| typechecking
V
deep syntax
|
| pattern-match compilation and such.
-BACK END UPPER HALF- V
lambdacode form # Polymorphically typed lambda calculus format,
| # used only very briefly as a transitional format.
|
V
anormcode form # "A-Normal" format, used for machine-independent optimizations.
|
|
V
nextcode form # "Continuation passing style" format,
| # the workhorse format of the backend upper half.
|
-BACK END LOWER HALF- V
treecode form # Used for machine-dependent optimizations.
|
|
V
SSA ("static single assignment") # Used for more sophisticated machine-dependent optimizations.
| # This step is optional and in fact not currently done.
|
V
treecode format # When done with SSA stuff, we convert back to Code_Tree.
|
|
V
Machine code. # Position-independent -- we don't have a linker that patches code.
Thus, the Mythryl compiler code representations used are, in order:
These are respectively defined by:
The transformations between these formats are implemented by:

