Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
11
 
 
12
 
 
13
 
 
14
 
 
15
 
 
16
 
 
 
 
 
 
 
 
 
 

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.

  1. Parts - individual parts of a book resides in
  2. Sources - Cradle.swift, which contains all the boilerplate code used throughout the book is contained here
  3. Resource - the original LBaC text file tutor(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

About

Let's Build a Compiler by Jack Crenshaw translated to Swift Playgrounds

Topics

Resources

Releases

No releases published

Packages

No packages published