Added more TODO's

This commit is contained in:
Justin Ethier 2017-01-10 03:38:17 -05:00
parent ddebc015ff
commit 2993d0b576

View file

@ -46,12 +46,18 @@ Before we get started, I want to say **Thank You** to all of the contributors to
Cyclone has a similar architecture to other modern compilers:
TODO: change parser to reader in diagram
<img src="images/compiler.png" alt="flowchart of cyclone compiler">
First, an input file containing Scheme code is received on the command line and loaded into an abstract syntax tree (AST) by Cyclone's parser. From there a series of source-to-source transformations are performed on the AST to expand macros, perform optimizations, and make the code easier to compile to C. These intermediate representations (IR) can be printed out in a readable format to aid debugging. The final AST is then output as a `.c` file and the C compiler is invoked to create the final executable or object file.
The code is represented internally as an AST of regular Scheme objects. Since Scheme represents both code and data using [S-expressions](https://en.wikipedia.org/wiki/S-expression), our compiler does not (in general) have to use custom abstract data types to store the code as would be the case with many other languages.
TODO: move reader section up here??
TODO: have another diagram that illustrates the compiled file contains a mix of generated C code, and runtime (with primitives, gc, helper functions, environments, etc)??
## Source-to-Source Transformations
### Overview