From a5fff9464817275f658e49789d4f5f397bfcf40f Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Mon, 1 Aug 2022 18:12:25 -0700 Subject: Rename the compiler. I'm starting the process of updating the whole project to use the new name Chromatopelma. --- README.md | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 14a6f09..d9cb4bf 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Cute Scheme +# Chromatopelma scheme compiler ## Background @@ -15,22 +15,32 @@ self-hosting scheme compiler targeting a minimal bytecode. ## Objective -Cute scheme is a partial r7rs implementation with a focus on ease of -implementation and a reusable library. The frontend is written in r7rs -Scheme, and compiles to a minimal bytecode. +Chromatopelma scheme is a partial r7rs implementation with a focus on +ease of implementation and a reusable library. The frontend is written +in r7rs Scheme, and compiles to a minimal bytecode. ## Detailed design -The cute scheme compiler (like most compilers) consists of a number of -phases that gradually transform a program from scheme code through -numerous intermediate representations. The csc compiler has 3 such -intermediate representations, not counting bytecode itself. These two +I started this project as a way to get familiar with writing a compiler +for a functional language. My goal was to write a self-hosting compiler, +and my candidate languages were SML or scheme. I picked scheme because +of my love for parentheses, but at times I'm missing static typing. + +![Dorotya, the real-life Chromatopelma cyaneopubescens.](dorotya.jpg) + +Chromatopelma cyaneopubescens is a kind of tarantula native to +Venezuela. Fig. 1 shows Dorotya going after a roach. + +The Chromatopelma scheme compiler (like most compilers) consists of a +number of phases that gradually transform a program from scheme code +through numerous intermediate representations. The csc compiler has 3 +such intermediate representations, not counting bytecode itself. These languages are creatively called IR1, IR2, and IR3. ![Code generation goes through several intermediate phases, named IR1, IR2, and IR3.](design.svg) -Fig. 1 shows the phases of code generation. Code generation goes through +Fig. 2 shows the phases of code generation. Code generation goes through several intermediate phases, named IR1, IR2, and IR3. ### IR1 -- cgit v1.3.1