mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
Revised overview section
This commit is contained in:
parent
56edb84ec7
commit
6c88739d9b
1 changed files with 3 additions and 7 deletions
|
@ -24,17 +24,13 @@ In addition, developing [Husk Scheme](http://justinethier.github.io/husk-scheme)
|
|||
|
||||
## Overview
|
||||
|
||||
TODO: overview of the compilation process
|
||||
|
||||
Cyclone has a similar architecture to other modern compilers:
|
||||
|
||||
input file => scheme AST => IR's => C-gen => C compiler => exe or obj
|
||||
<img src="images/compiler.png" alt="flowchart of cyclone compiler">
|
||||
|
||||
<img src="images/compiler.png">
|
||||
An input file containing Scheme code is received on the command line and load by Cyclone's parser. The code is represented as an abstract syntax tree (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 have to use custom abstract data types to store the code as would be the case with many other languages.
|
||||
|
||||
An input file containing Scheme code is received on the command line and load by Cyclone's parser. The code is represented as an abstract syntax tree (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 have to use abstract data types to store the code as would be the case with many other languages.
|
||||
|
||||
From there a series of source-to-source transformations are performed on the AST to make it easier to compile to C, perform optimizations, etc. The final AST is then output as a `.c` file and the C compiler is called to create the final executable or object file.
|
||||
From there a series of source-to-source transformations are performed on the AST to make it easier to compile to C, perform optimizations, etc. The final AST is then output as a `.c` file and the C compiler is invoked to create the final executable or object file.
|
||||
|
||||
## Source-to-Source Transformations
|
||||
My primary inspiration for Cyclone was Marc Feeley's [The 90 minute Scheme to C compiler](http://churchturing.org/y/90-min-scc.pdf) (also [video](https://www.youtube.com/watch?v=TxOM9Y5YrCs) and [code](https://github.com/justinethier/nugget/tree/master/90-min-scc)). Over the course of 90 minutes, Feeley demonstrates how to compile Scheme to C code using source-to-source transformations, including closure and continuation-passing-style (CPS) conversions.
|
||||
|
|
Loading…
Add table
Reference in a new issue