Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Un compilateur maison!

    Vos autres créations
    4
    5
    2116
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • jglrxavpok
      jglrxavpok Modérateurs last edited by

      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>

      1 Reply Last reply Reply Quote 0
      • isador
        isador Moddeurs confirmés Modérateurs last edited by

        toi tu es un fou ^^

        1 Reply Last reply Reply Quote 0
        • M
          MrAzErTy31 last edited by

          😄 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 ?

          1 Reply Last reply Reply Quote 0
          • JustPingo
            JustPingo last edited by

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

            Envoyé de mon iPhone en utilisant Tapatalk

            1 Reply Last reply Reply Quote 0
            • jglrxavpok
              jglrxavpok Modérateurs last edited by

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

              1 Reply Last reply Reply Quote 0
              • 1 / 1
              • First post
                Last post
              Design by Woryk
              Contact / Mentions Légales / Faire un don

              MINECRAFT FORGE FRANCE © 2018

              Powered by NodeBB