Creating a Compiler with Raku

A step-by-step coding essay

Here, I am starting publishing the chapters of my book, Creating a Compiler with Raku. I am planning to add a new chapter every week on Sundays.

Contents

Chapter 1. Creating a Simple Interpreter

  • Grammar
  • Actions
  • Modules

Chapter 2. Parsing a Number

  • Finding a number
  • Getting the value
  • Using AST
  • Final notes

Chapter 3. Creating a Calculator

  • Enrolling a sum
  • Premature optimization
  • More operands
  • A diversity test
  • Adding more math
  • Testing the code
  • Adding more power
  • Allowing parentheses

Chapter 4. A Better Interpreter

  • Skipping comments
  • Sophisticated numbers
  • Sophisticated expressions
  • Using variables
  • Declaration with initialization

Chapter 5. Working on Grammar

  • Executable
  • Composing and inheriting grammars
  • Reviewing the calculator
  • Using multi-rules
  • Get rid of globals
  • Better variable names
  • Functions take expressions

Chapter 6. Working with Strings

  • Strings
  • Escaping quotes
  • Indexing a string

Chapter 7. Arrays and Hashes

  • Arrays
  • Assigning to an array item
  • Side story: The joy of syntax
  • Accessing array elements
  • List assignments
  • Printing arrays
  • Hashes
  • Review and test

Chapter 8. Building AST. Part 1

  • Thinking of the if keyword
  • The AST blocks
  • Value nodes

Chapter 8. Building AST. Part 2

  • Declaring strings
  • Declaring arrays and hashes
  • Scalar assignment
  • Working with indices
  • Array and hash assignment and initialisation
  • AST for expressions
  • Function calls
  • Final tuning

Chapter 9. Evaluating AST

  • Evaluating from the top
  • Working with variables
  • String interpolation
  • Using Raku getters
  • Interpolating everywhere
  • Arithmetic operations

Chapter 10. Test Suite

  • Test runner
  • Tests
    • Numbers
    • Strings
    • Expressions
    • Arrays and hashes
  • Spotting the errors
  • Feature coverage
  • It is never enough

Chapter 11. Control Flow

  • Implementing if
  • Implementing else
  • Implementing a loop
  • Statement blocks
  • Blocks in the AST
  • A real-life test
  • Conditional operators
  • Implementing the while loop

Chapter 12. Functions

The book was started when Raku was Perl 6, so it may occasionally happen that you see the old name of the language (would I start it today, I might misspell it too :-).

Return to this page later to see the next chapter.

You are welcome to leave comments, both as comments under the chapters, as well as via email.