Since I very first started learning to code something I’ve always wanted to do was create my own programming language, however it always seemed like an incredibly daunting task.
I could never quite figure out exactly how to get started until I read a tremendous post by YellowAfterLife. This is one of my favorite things I’ve ever read and I’ve gone through it multiple times. At this point it’s my go-to sample project for familiarizing myself with a new language once I get past Hello World.
Skip several years later and I finally stumble across the truly exceptional Crafting Interpreters by Robert Nystrom — which I urge you to check out if you find this post interesting.
I’ve been filling my head with all kinds of background on this stuff for years but thus far I had yet to get my own language implementation off the ground from scratch… until now that is.
For the past month or so I’ve been working on implementing my very own language called Umpteen, the name a reference to the amount of times I’ve started and restarted such a project. Today the language is sophisticated enough to express programs such as implementing a working Brainfuck interpreter or recursively calculating fibonacci numbers.
It’s definitely a work-in-progress still, but I’m insanely happy with my progress so far. Now that I’ve sufficiently proven to myself that the language is turing complete, my next major goal is to write a self-hosted compiler for the language. I’ve already started prototyping a self-hosted lexer and I’ve got a working proof of concept which can tokenize the program print(100);
It’s not much but it’s a start! Journey of a thousand miles, single step and all that.
I’ve been having a ton of fun working on it, so I hope you’ll consider checking out the project over on GitHub:
https://github.com/347Online/umpteen
If you decide to give the language a try I’d love nothing more than to hear from you so feel free to drop me a line via email or Mastodon
That’s all for now, but I hope to cover more about the language here in the near future so stay tuned!