Un compilateur maison!


  • Modérateurs

    Encore une fois, je n'ai pas fini de vous étonner!

    C'est maintenant avec un compilateur que je reviens : WeaC !

    #WeaC, c'est quoi?(WeaC, c'est quoi?)

    "Weak", faible en anglais + "C" un langage de programmation. Donc WeaC est… une variante du C en moins bien ^^
    Autres noms possible: le "Xav", le "Vax", le "C--", le "X", le "Çava", le "ÇaPourraitÊtrePire", etc.

    Voici à quoi ressemble du WeaC:

    
    #include <time>#include
    
    double out2(int a,int b)
    {
    a = 0;
    string c = "Test";
    out(a-b);
    out(c+"!"-"est");
    double d = pow(pow(2,2),2);
    return d;
    }
    
    int main()
    {
    return out2(1,2);
    }
    
    

    (Pour ceux qui connaissent le C/C++, ça vous sera familier ;))

    Le but du compilateur est de transformer ce code en bytecode (le but est de le faire lire par la JVM au final):

    METHOD_START __MAIN__::out2 double(int;int;)
    
    LOAD_CONST 0
    VAR_STORE 0
    LOAD_CONST "Test"
    VAR_STORE 2
    VAR_LOAD 0
    VAR_LOAD 1
    OPERATION -
    METHOD_CALL std::out *(*;)
    VAR_LOAD 2
    LOAD_CONST "!"
    OPERATION +
    LOAD_CONST "est"
    OPERATION -
    METHOD_CALL std::out *(*;)
    LOAD_CONST 2
    LOAD_CONST 2
    METHOD_CALL math::pow *(int;int;)
    LOAD_CONST 2
    METHOD_CALL math::pow *(*;int;)
    VAR_STORE 3
    VAR_LOAD 3
    RETURN
    METHOD_END
    METHOD_START __MAIN__::main int()
    LOAD_CONST 1
    LOAD_CONST 2
    METHOD_CALL __MAIN__::out2 *(int;int;)
    RETURN
    METHOD_END
    

    Liens

    Sources: Comme souvent, tout est sur GitHub!</time>



  • toi tu es un fou ^^



  • 😄 O.g xavpok tu es un génie ! Donc si j'ai bien compris ça permet que la JVM puisse lire une variante du C ?



  • Allez zou un gros necropost, mais ça peut prendre des librairies Forge ?

    Envoyé de mon iPhone en utilisant Tapatalk


  • Modérateurs

    Tu peux l'utiliser pour modder si tu veux 😉
    Mais c'est TRES peu sûr que tu puisses les utiliser comme tu veux ^^