Compilers from the Beginning

From a calculator to a compiler for Python itself: a lexer, a parser, a type checker, a tree-walking interpreter, a bytecode virtual machine with a garbage collector, an optimiser working on SSA form, and two back ends — one emitting RISC-V assembly run on an emulator in the page, one emitting WebAssembly the browser itself runs. Thirty-four volumes; every program passes through the pipeline in front of you and must print exactly what CPython prints, and every plate is in English and Chinese.

300plates
0read
0challenges solved
open in a tab

Settings

Progress and settings live only in this browser. Nothing is sent anywhere unless you send a report.

Report an error

The report carries the plate, your message and any text you had selected. It carries no name or address of yours.