"Let's Build a Compiler" translated to Swift Playgrounds
This repo is an attempt to learn how compilers work by translating Jack W. Crenshaw's Let's Build a Compiler book into Swift Playgrounds.
The original book is divided into 16 chapters and if you haven't noticed already, there are also 16 Playground files in this repo.
Each Playground file represents a chapter in the book. However, because fitting an entire chapter into a single Playground file would be impractical, each chapter has been divided into several "Parts".
A .playground
file is actually composed of three directories.
Parts
- individual parts of a book resides inSources
-Cradle.swift
, which contains all the boilerplate code used throughout the book is contained hereResource
- the original LBaC text filetutor(n).txt
, is contained here
If you can't seem to find these directories after opening your
.playground
file, press⌘ + 0
to show the Navigator (left panel).
- The original Let's Build a Compiler (LBaC) was written in Turbo Pascal, a very popular language at the time. Pascal is very different from Swift and because of this, "literally" converting Pascal code into Swift is quite unnatural.
- To make the code as "Swifty" as possible, I have taken the liberty to make some changes in the code. Please feel free to offer suggestions on making the code even "Swifty-er"
- This has turned out to be more time consuming than I have imagined in the beginning. Therefore, out of the 16 chapters, 10 have been completed so far; feel free to continue on from where I have left off 🏃♂️
This is an open source project so feel free to contribute by