LBAC Swift Save

Learn how to build a compiler by interacting with Let's Build a Compiler by Jack Crenshaw in Swift Playgrounds

Project README

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

Open Source Agenda is not affiliated with "LBAC Swift" Project. README Source: mkchoi212/LBAC-Swift
Stars
162
Open Issues
0
Last Commit
6 years ago

Open Source Agenda Badge

Open Source Agenda Rating