Hello folks! I decided to make a minimal programming language... without any knowledge...
Starting
For this challenge, I chosed C++ because its fast. I would chose rust but i will rewrite with rust later.
And i started to searching about making a programming language, and i got some basics about lexers, compilers etc... and I started with reverse polish notation
and stack
based language. Because they are easy to implement.
Writing a Lexer
Lexer is the simplest part of writing a language, just tokenizing the keywords.
I didn't use any lexer generator (like lex) because its better to make it from zero for me. But the worst part of it, I DON'T KNOW C++. And thats why it was a bit torture to me. I still think the lexer i wrote sucks because i made it without any C++ knowledge. But, atleast it works :D
50 100 + put
=> (pseudo)
[
{token: NUMBER, value: "50"},
{token: NUMBER, value: "100"},
{token: ADD, value: ""},
{token: PUT, value: ""}
]
Compiler? Transpiler?
After writing a lexer, i need to make a compiler/transpiler for my project. (i skipped AST since it doesn't need.) I checked LLVM but its really deep project to dive in so i tried with assembly. And another problem, i don't know assembly too! and i decided to make a C++ transpiler for my language.
It transpiles the code into C++ and runs g++
to compile the C++ source.
Trying the Language
I wanted to test the limits of the language, So i made a brainfuck compiler in my language. I think its best project to test your language too.
Features
After some days, i added tons of things to my language. It was really fun!
Documentation
And the most boring thing in programming scenario... Writing a documentation! Well, i think nobody likes that but everyone needs that too. So i wrote a simple language reference for my programming language.
Finishing
So, that was my adventure about creating a minimal programming language. If you liked the project, you can star on GitHub page!
Top comments (1)
Ok