Partage
  • Partager sur Facebook
  • Partager sur Twitter

Nouveau langage

idée de langage

Sujet résolu
    20 octobre 2018 à 14:56:15

    Voila je me suis mis dans la tête de crée un nouveau langage.

    lang : ru #on choisis de coder en Russe (on peut prendre anglais ,français...)
    
    писать "Hello , Word" #on peut ecrir aussi :
    # писать("hello Word", цвет = "красный")  en gros pour linux sur la console on écrit hello Word en rouge


    bref j'ai ma petite idée.

    Je voudrai savoir par exemple comment avec de l'hexadecimale dans un .exe on appelle la console (windows de préference; mais linux ubuntu aussi si vous voulez, et comment on lui demande d'ecrir "hello world".

    Des truc comme ça sur l'hexadecimale ou des conseil.

    J'espere que vous avez compris, et ce sera un langage compiler.:) 

    ps:ne pas me dire que c'est compliquer et long svp merci

    • Partager sur Facebook
    • Partager sur Twitter
    "Il faut toujours viser la lune, car même en cas d'échec vous atterrirai dans les étoiles." Oscar wilde
      20 octobre 2018 à 16:11:46

      MmpMmp a écrit:

      ps:ne pas me dire que c'est compliquer et long svp merci


      C'est long et compliqué :)

      Il n'y a pas de recette magique du style j'écris f8c1d4 dans un fichier .exe pour afficher un message dans la console.

      Pour créer un langage on a deux choix:

      • un langage interprété : là on se base sur les fonctions d'un autre langage haut-niveau
      • un langage compilé : on compile en assembleur qui lui est ensuite assemblé en langage machine

      Je te recommande de lire un peu de docs pour mieux comprendre :

      The Programming Language Pipeline

      Create your Own Programming Language

      • Partager sur Facebook
      • Partager sur Twitter
        20 octobre 2018 à 23:49:08

        merci pour les ref :D
        • Partager sur Facebook
        • Partager sur Twitter
        "Il faut toujours viser la lune, car même en cas d'échec vous atterrirai dans les étoiles." Oscar wilde
          21 octobre 2018 à 11:02:12

          MmpMmp a écrit:

          lang : ru #on choisis de coder en Russe (on peut prendre anglais ,français...)
          
          писать "Hello , Word" #on peut ecrir aussi :
          # писать("hello Word", цвет = "красный")  en gros pour linux sur la console on écrit hello Word en rouge

          C'est un peu étrange ça, de choisir la langue dans laquelle on voudrait écrire son programme. Et j'avoue ne pas bien comprendre le concept.

          MmpMmp a écrit:

          Je voudrai savoir par exemple comment avec de l'hexadecimale dans un .exe on appelle la console (windows de préference; mais linux ubuntu aussi si vous voulez, et comment on lui demande d'ecrir "hello world".

          Ce n'est pas comme-ça que ça fonctionne. L'hexadécimale c'est juste une base de 16 (binaire : base de 2 et decimal base de 10).

          Pour afficher un message via la console du système d'exploitation, on utilisera -- si on veut se simplifier la vie -- une fonction des API de l'OS. Mais pas que, il faut évidemment un langage cible. Généralement, c'est ainsi : Langage → ASM → exe. Mais on peut très bien utiliser un bytecode existant, tel que celui de la JVM, ou encore celui de LLVM, qui est spécialisé là dedans.

          Par exemple :

          # Ton langage
          
          print "Hello, world!"

          Sera analysé, et le parser sortira un AST proche de celui-ci :

          (call print, ["Hello, world!"])

          (Donc un AST, c'est une manière de représenter le programme de façon à avoir des liens logiques entre les différentes expressions et statements).

          Ton AST sera analysé, et validé (ou invalidé s'il y a des erreurs de sémantique / grammaire / syntaxe), et ensuite traduit dans le langage cible. Donc un bytecode, un autre langage, ou de l'assembleur :

          std::cout << "Hello, world!" << std::endl;

          ou

          PUSH "Hello, world!"
          INVOKE print

          ou

          _01 db 'Hello, world!', 0
          push _01
          mov eax, [_01]
          call print

          par exemple.

          Maintenant, il te faut décider / créer plusieurs choses :

          • Un langage inventé un minimum cohérent ;
          • Le langage source (en quoi sera écrit ton implémentation de ton langage) ;
          • Le langage cible ;
          • Créer un lexer ;
          • Définir un AST ;
          • Créer un parser ;
          • Etablire la traduction AST / langage cible.

          Voilà :) C'est pas très compliqué tu sais, il faut juste savoir ce qu'on fait, et comment on le fait.

          Pour ça, des bibliothèques peuvent t'aider, voici des liens :

          Si tu veux des informations plus détaillées, n'hésite pas à le demander, mais en étant précis sur ce que tu recherches.

          Bonne journée ;)

          -
          Edité par vanaur 21 octobre 2018 à 11:02:35

          • Partager sur Facebook
          • Partager sur Twitter

          Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

            23 octobre 2018 à 9:47:03

            merci beaucoup Vanaur . 

            ps: je suis passé sur ton site, et je la trouve bien l'idée de for ecrite plus simplement :

            for (i = 100 to 200)
            	@dio:display.writeln(i);

            le for est remplacé par 

            [100 to 200]




            • Partager sur Facebook
            • Partager sur Twitter
            "Il faut toujours viser la lune, car même en cas d'échec vous atterrirai dans les étoiles." Oscar wilde
              23 octobre 2018 à 11:26:53

              Bonjour,

              Mauvais forum

              Le sujet est déplacé de la section Autres langages (VBA, Ruby,...) vers la section Discussions développement

              • Partager sur Facebook
              • Partager sur Twitter

              Moderateur forum || FAQ 3D || discord 3D francophone || OC Tweak script

                23 octobre 2018 à 16:21:56

                Le chapitre 5 du SICP parle de ça, ça peut aussi être une bonne intro : http://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-4.html
                • Partager sur Facebook
                • Partager sur Twitter

                Blond, bouclé, toujours le sourire aux lèvres...

                  23 octobre 2018 à 18:13:37

                  MmpMmp a écrit:

                  Je suis passé sur ton site, et je la trouve bien l'idée de for ecrite plus simplement :

                  for (i = 100 to 200)
                  	@dio:display.writeln(i);

                  le for est remplacé par 

                  [100 to 200]

                  Merci ;)

                  Pour information, ce site est Quora (une sorte de réseau social); quant à cette idée, je l'ais implémentée en fait dans mon propre langage de programmation, ce que tu vois ici fait partie du paradigme array oriented du langage.

                  -
                  Edité par vanaur 23 octobre 2018 à 18:14:18

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...

                  Nouveau langage

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown