EDDI Compiler 1.1.2 – Read command line

I finished the eddi compiler (eddic) version 1.1.2. It took me a long time because of a lot of other things I had to do this month.

This version includes two major changes. First, this version adds a new type for characters (char). A char can be declared using a char literal ('b' for instance) or from an int ( (char) 77). This version introduces the [] operator for string to have access to a specific char.

Another major improvement is the support for reading the command line. For now, only characters can be read, one by one with the read_char function.

The standard library includes a new function to compare two strings (str_equals):

bool str_equals(string a, string b){
    if(length(a) != length(b)){
        return false;

    for(int i = 0; i < length(a); ++i){
        if(a[i] != b[i]){
            return false;

    return true;

The other improvements are not relative to the language. The inlining engine can now inline functions that takes arrays as parameters. The symbol table is now represented by the global context. There is no global symbol table. This new version includes several improvements of the code and a cleanup of the AST to remove redundancy.

Future Work

The next version of the eddi compiler (eddic) will be the version 1.1.3. This version will introduce support for a very basic version of template engine. It will also add support for foreach on string. This version will also add new features and cleanup in the different optimizations passes.


You can find the EDDI Compiler sources on the Github repository: https://github.com/wichtounet/eddic

The exact version I refer to is the v1.1.2 available in the GitHub tags or directly as the release branch.

Related articles

  • EDDI Compiler 1.1.3 - Templates
  • EDDI Compiler 1.1.1 – Dynamic Memory Allocation and Constructors/Destructors
  • EDDI Compiler 1.0.2 – Better pointer support and Dead-Code Elimination
  • EDDI Compiler 0.6.0 : Arrays
  • eddic 1.2.0 - Single inheritance, copy construction
  • EDDI 0.1.1 : Variables
  • Comments

    Comments powered by Disqus