The project I’m working on for my Bachelor thesis is a C++ project. I’ve never worked on a big C++ project, so I decided to start a personal project in C++.
I wanted to develop my own language for a long time now. So I chose to develop a new language : EDDI
Because I didn’t want to write assembly code, EDDI follows the same model as the Java language. The EDDI source files are first compiled into intermediate byteode file and then this compiled file is executed by a virtual machine.
I didn’t use a generator for the lexer and the structural analysis, because I wanted to write these parts by myself, but perhaps in the future I will consider using it, like lex & yacc.
Of course, I don’t write this language to compete with the other programming languages, it’s only a way for me to learn C++ better and to improve my skills in general.
Now, EDDI is only in version 0.1 and you can almost do nothing with this programming language. The only thing you can do with this language is to print strings to the console, but I will continue to work on the compiler and the virtual machine to add new instructions and to improve the compiler and the vm.
Here is an example of an EDDI program :
And this program is compiled like this :
HEADER PUSH S13Hello World PRINT EXIT
The result doesn’t appear like that in the compiled file because the output is made in binary files but this correspond to the EDDI bytecode instructions.
As you can see, I used a stack system. The PUSH instruction add something on the stack and the PRINT instruction pop the head of the stack and print it.
This project is distributed under the Boost Software License 1.0. The sources of the project are available on Github :
- The compiler, eddic : https://github.com/wichtounet/eddic/
- The virtual machine, eddivm : https://github.com/wichtounet/eddivm/
- A commons library used by the two projects : https://github.com/wichtounet/eddi-commons/
If you want to see the exact version reffered to in this subject, you can select the tag v0.1.
I’m open to any kind of comments regarding the project, the source code or anything else related to EDDI.
I’ll try to post some informations about my work on this project on this blog, the decisions made, the technical challenges, …
For those who are interested on the origins of the name, it comes from EDsger Wybe DIjkstra, the famous computer scientist.