This project is written following the second part of the Crafting Interpreters book.
It demonstrates how to implement the following concepts:
- tokens and lexing,
- scanning on demand,
- pratt parsing,
- bytecode and virtual machine,
- prefix and infix expressions,
- runtime representation of objects,
- lexical scope,
- storing global and local variables,
- control flow,
- calls and functions,
- closures,
- garbage collection,
- classes and instances,
- inheritance.