Skip to content

Files

Latest commit

 

History

History
52 lines (42 loc) · 2.26 KB

index.md

File metadata and controls

52 lines (42 loc) · 2.26 KB

Let's Build a Compiler (in Python)!

  • Preface: 25 years later

    • Scope

    • Structure

    • [The Project Layout](ch00/preface.html#The Project Layout)

    • [The Cradle](ch00/preface.html#The Cradle)

  • Bytecode Generation

    • [Learning the Target Architecture](ch00/ch00.html#Learning the Target Architecture)

    • [Getting Started](ch00/ch00.html#Getting Started)

    • [Explaining the VM](ch00/ch00.html#Explaining the VM)

    • [The Inner Workings](ch00/ch00.html#The Inner Workings)

    • [Available Libraries](ch00/ch00.html#Available Libraries)

    • [Rolling our Own](ch00/ch00.html#Rolling our Own)

    • [Writing a Test Case](ch00/ch00.html#Writing a Test Case)

    • [Passing the First Test Case](ch00/ch00.html#Passing the First Test Case)

      • [Fetching the Bytecodes](ch00/ch00.html#Fetching the Bytecodes)
      • [A Bug is Discovered](ch00/ch00.html#A Bug is Discovered)
    • [Writing More Test Cases](ch00/ch00.html#Writing More Test Cases)

      • [Another Bug is Found](ch00/ch00.html#Another Bug is Found)
    • [But Does it Run?](ch00/ch00.html#But Does it Run?)

      • [From Code to Function](ch00/ch00.html#From Code to Function)
    • [At Last!](ch00/ch00.html#At Last!)

  • More Expressions

    • [Generating Bytecode](ch00/ch00.html#Generating Bytecode)
    • [Order of Evaluation](ch00/ch00.html#Order of Evaluation)
    • [Dedicated Opcodes](ch00/ch00.html#Dedicated Opcodes)
    • [Generating Bytecode](ch00/ch00.html#Generating Bytecode)
    • [Register Management](ch00/ch00.html#Register Management)
    • [Another Bug is Found](ch00/ch00.html#Another Bug is Found)
    • [Unary Precedence](ch00/ch00.html#Unary Precedence)
  • Variables

  • Assignments

    • [Change the Filename!](ch00/ch00.html#Change the Filename!)
  • Functions

  • Multi-Character Tokens

  • White Space

  • Let’s Build a Compiler (in Python)!