Welcome to my project repository! This repository documents my journey through "Writing an Interpreter in Go" and "Writing a Compiler in Go" by Thorsten Ball. Through these projects, I've embarked on a comprehensive exploration of building interpreters, compilers, and virtual machines from scratch using the Go programming language.
This repository encompasses the entire process outlined in both books, from laying the foundation for interpreters and compilers to implementing advanced features such as code evaluation, optimization, and virtual machines. With a focus on practical application, I've gained a deep understanding of programming language theory and honed my Go programming skills along the way.
- Interpreter Implementation: I've successfully implemented the entire interpreter as outlined in "Writing an Interpreter in Go," covering lexical analysis, parsing, and executing code.
- Compiler Implementation: Building on the knowledge gained, I completed the compiler for the Monkey programming language as outlined in "Writing a Compiler in Go," transforming Monkey code into bytecode.
- Virtual Machine Development: Additionally, I've implemented a virtual machine capable of executing the bytecode generated by the compiler, completing the end-to-end process of compiling and running Monkey code.