From 114d96318ce7c8c3242182705fa4912fa7d0263c Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 4 Aug 2015 02:00:11 -0400 Subject: [PATCH] WIP --- docs/Writing-the-Cyclone-Scheme-Compiler.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Writing-the-Cyclone-Scheme-Compiler.md b/docs/Writing-the-Cyclone-Scheme-Compiler.md index be5c47e1..c167fc7f 100644 --- a/docs/Writing-the-Cyclone-Scheme-Compiler.md +++ b/docs/Writing-the-Cyclone-Scheme-Compiler.md @@ -30,6 +30,8 @@ Cyclone has a similar architecture to other modern compilers: input file => scheme AST => IR's => C-gen => C compiler => exe or obj +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 a list of regular Scheme objects. 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. + ## 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.