LBAC-Swift
LBAC-Swift copied to clipboard
Learn how to build a compiler by interacting with Let's Build a Compiler by Jack Crenshaw in Swift Playgrounds
LBAC Swift
"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.
πΊοΈ How to Navigate
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".
.playground Structure
A .playground
file is actually composed of three directories.
-
Parts
- individual parts of a book resides in -
Sources
-Cradle.swift
, which contains all the boilerplate code used throughout the book is contained here -
Resource
- 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).
β οΈ Notes
- 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 πββοΈ
β Contributing
This is an open source project so feel free to contribute by