mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-14 00:07:36 +02:00
Added more TODO's
This commit is contained in:
parent
ddebc015ff
commit
2993d0b576
1 changed files with 6 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue