Mango is a fun scripting language that I am developing in Rust.
Mango is the first programming language that I have ever made, (and I am also newish to Rust), so there will most likely be imperfections within the code. Nonetheless, Mango has been a very fun project to work on! To see technical details, see the technical readme.
Mango derives heavily from the Lox language in Crafting Interpreters by Bob Nystrom. I have been following this book very closely during my implementation, with a few minor tweaks here and there to add more functionality to areas that I thought needed improvement.
Currently Mango has completed up until Chapter 30 of Crafting Interpreters with a few little additions along the way.
Mango's journey has been a long one. This project started over a year ago from writing this README in 2019 when I began to look into language creation. I took some classes at my school, fell in love with the idea of making a programming language, and dove into a few theorical textbooks on the subject.
As much as I like working on the language, I don't know if I want to spend an exuberant amount of time optimizing it for consumer use at this time. I have a lot to learn about language creation before I can mold Mango into something "useful" to code in.
I don't know what will happen with Mango, I do find working on programming languages to be an extremely fun pastime, so who knows? Maybe one day I'll make Mango into a full fledged programming language that I can feel comfortable using on a day-to-day basis.
Oh yeah... I made a Trello Board for Mango, so if I do start to begin working on Mango again you can see my progress there.
Mango also takes HEAVY inspiration from Darksecond's Lox Implementation. I am somewhat new to Rust and using Darksecond's implementation to help me understand the "Rust way of doing things" on many occasions and was a very helpful resource. It also helped provide a solid framework to build upon while converting the C based Crafting Interpreters code into Rust.
I do not take any credit for original design on any parts of the language except those of which were not defined in Darksecond's Lox Implementation or Crafting Interpreters.