This project aimed to implement a very basic working toy compiler using TypeScript, based on The Lox Language by Crafting Interpreters. The particularity of this project is that everything was carried out following the Test Driven Development methodology. All steps in the compiler process are covered by corresponding unit tests.
The project is for educational and learning purposes only. Error handling is not the main focus of development at the moment, so many of the "edge cases of error" are not handled correctly.
This project does not have documentation at the moment. If you are interested in the behavior of the different compiler steps, you can refer to the tests for the specific module.
Chapter | Progress |
---|---|
Scanning | ✔️ |
Representing Code | ❌ |
Parsing Expressions | ❌ |
Evaluating Expressions | ❌ |
Statements and State | ❌ |
Control Flow | ❌ |
Functions | ❌ |
Resolving and Binding | ❌ |
Classes | ❌ |
Inheritance | ❌ |
Chunks of Bytecode | ❌ |
A Virtual Machine | ❌ |
Scanning on Demand | ❌ |
Compiling Expressions | ❌ |
Types of Values | ❌ |
Strings | ❌ |
Hash Tables | ❌ |
Global Variables | ❌ |
Local Variables | ❌ |
Jumping Back and Forth | ❌ |
Calls and Functions | ❌ |
Closures | ❌ |
Garbage Collection | ❌ |
Classes and Instances | ❌ |
Methods and Initializers | ❌ |
Superclasses | ❌ |
Optimization | ❌ |