Partage
  • Partager sur Facebook
  • Partager sur Twitter

Langage Interprété

    25 janvier 2021 à 17:25:08

    Bonjour, je souhaiterais créer un langage interprété or, je n'ai aucune idée de comment m'y prendre (je précise que j'aimerais le dev sur windows et non sur linux si possible). Pouvez-vous m'aider?
    • Partager sur Facebook
    • Partager sur Twitter
      25 janvier 2021 à 17:46:14

      Bonjour,

      C'est par plaisir, obligation ? Ce langage a-t-il un but précis, genre un langage orienté math ou généraliste ou … ? Pourquoi avoir posté dans un forum C ?

      • Partager sur Facebook
      • Partager sur Twitter
        25 janvier 2021 à 17:50:00

        LilFixxY a écrit:

        or, je n'ai aucune idée de comment m'y prendre

        C'est ennuyeux ! Tu devrais quand même avoir une petite idée ? sinon c'est que tu ne sais pas ce qu'est un langage informatique ?

        En gros, les instructions de ton langages seront stocké sur disque ou mémoire flash dans ton cas dans un fichier puisque c'est pour windows.

        Tu dois donc écrire le code de chaque instruction qui sera exécuté lors de sa lecture. Faire le code de chargement du fichier, puis les appels du code des instructions en fonction des instructions lu dans le fichier chargé par ton interpréteur. 

        Avec si peu d'info sur ton projet, on ne peut guère t'en dire plus !

        • Partager sur Facebook
        • Partager sur Twitter
          25 janvier 2021 à 17:52:47

          Salut,

          En effet, programmer un interpréteur n'est pas évident, car il faut pouvoir gérer toutes les boulettes de celui qui écrit.

          Il suffit de voir les numéros de warning ou errors a parfois  ou chiffres.

          Après, si ton langage est très simple, ça peut être intéressant. 

          As tu par exemple un bout de code de ton langage a nous soumettre ? Avec quelques règles de syntaxe qui vont avec ?

          • Partager sur Facebook
          • Partager sur Twitter

          Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

            25 janvier 2021 à 17:55:14

            Pourquoi plus Windows que Linux? Quel serait l'interface de ce langage avec le système?
            Et ça dépend de la complexité du langage.
            Il y a principalement deux phases:
            + l'analyse syntaxique et sémantique.
            + l'exécution (...) interprétée.
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              25 janvier 2021 à 18:10:07

              Je souhaiterais créer un langage ressemblant un peu au js (juste dans la synthaxe). Donc voici un petit exemple de synthaxe:


              //Obligatoire pour commencer [
              
              LET number = int(1);
              LET helloWorld = string("Hello World");
              
              if (number == 1)
              {
              console.print(helloWorld);
              }
              else
              {
              console.print("Nope");
              }
              
              ]

              Fvirtman a écrit:

              Salut,

              En effet, programmer un interpréteur n'est pas évident, car il faut pouvoir gérer toutes les boulettes de celui qui écrit.

              Il suffit de voir les numéros de warning ou errors a parfois  ou chiffres.

              Après, si ton langage est très simple, ça peut être intéressant. 

              As tu par exemple un bout de code de ton langage a nous soumettre ? Avec quelques règles de syntaxe qui vont avec ?





              • Partager sur Facebook
              • Partager sur Twitter
                25 janvier 2021 à 18:15:58

                oui mais pour faire quoi et dans quel but ?

                pour créer un vrai langage généraliste ? pour créer un langage de niche ?

                pour le fun ? dans un but commercial ?

                parce que ça répond à tes attentes ? aux attentes d'éventuels utilisateurs ?

                pour apprendre à le faire ?

                • Partager sur Facebook
                • Partager sur Twitter
                  25 janvier 2021 à 18:20:10

                  White Crow a écrit:

                  Bonjour,

                  C'est par plaisir, obligation ? Ce langage a-t-il un but précis, genre un langage orienté math ou généraliste ou … ? Pourquoi avoir posté dans un forum C ?


                  Si je souhaite faire ça c'est bien pour le plaisir de découvrir de nouvelle chose. Mon langage a pour but de pouvoir faire de la gestion de donnée assez facilement (avec plein d'interaction à réaliser avec un fichiers et des données). Ensuite je pense l'orienté "généraliste", et enfin je me suis quand même renseigné avant et j'ai vu que le c était parfait pour créer un langage interprété car c'est un langage de bas niveau. Voilà j’espère avoir été assez claire!

                  White Crow a écrit:

                  parce que ça répond à tes attentes ? aux attentes d'éventuels utilisateurs ?

                  pour apprendre à le faire ?


                  Ce langage est bien évidemment destiné à moi, je ne compte pas le vendre ou même le distribuer. Je le fais vraiment pour apprendre!

                  -
                  Edité par LilFixxY 25 janvier 2021 à 18:22:54

                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 janvier 2021 à 18:21:05

                    Tu n'as donc jamais fait de C ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 janvier 2021 à 18:23:13

                      White Crow a écrit:

                      Tu n'as donc jamais fait de C ?


                      Ah bah si j'en ai deja fait

                      -
                      Edité par LilFixxY 25 janvier 2021 à 18:23:28

                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 janvier 2021 à 18:56:25

                        Et de l'algo ?

                        Si je te parle d'arbre ? c'est du chinois ou ça te dit quelque chose ? arbre syntaxique ?

                        Si te parle de grammaire (au sens de grammaire pour les langages informatiques) ? d'outils comme flex et yacc ?

                        En gros l'idée c'est de lire un fichier ou l'entrée standard, de la tokeniser, de transformaer à l'aide d'un grammaire ce flux de tokens en plusieurs arbres et d'utiliser cette forêt pour exécuter l'entrée.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 janvier 2021 à 19:12:59

                          White Crow a écrit:

                          Et de l'algo ?

                          Si je te parle d'arbre ? c'est du chinois ou ça te dit quelque chose ? arbre syntaxique ?

                          Si te parle de grammaire (au sens de grammaire pour les langages informatiques) ? d'outils comme flex et yacc ?

                          En gros l'idée c'est de lire un fichier ou l'entrée standard, de la tokeniser, de transformaer à l'aide d'un grammaire ce flux de tokens en plusieurs arbres et d'utiliser cette forêt pour exécuter l'entrée.


                          J'ai déjà entendu parler d'arbre, arbre syntaxique, de grammaire, des deux outils que tu as parlé mais concrètement je sais pas vraiment quoi faire de ces informations.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            25 janvier 2021 à 19:16:47

                            LilFixxY a écrit:

                            Je souhaiterais créer un langage ressemblant un peu au js (juste dans la synthaxe). Donc voici un petit exemple de synthaxe:


                            //Obligatoire pour commencer [
                            
                            LET number = int(1);
                            LET helloWorld = string("Hello World");
                            
                            if (number == 1)
                            {
                            console.print(helloWorld);
                            }
                            else
                            {
                            console.print("Nope");
                            }
                            
                            ]

                            Je vois de la gestion d'objet (console.print), de la gestion de variables, de corps {}, des if, des déclarations de variable... C'est pas trivial ton affaire. Je pensais que tu voulais faire un truc comme le LOGO. (langage), mais la c'est pas évident. 

                            A mon avis tu sous estimes la difficulté du truc. Tu peux regarder du coté de flex ou yacc, mais bon. 

                            Et sinon, puisque tu veux créer un truc qui ressemble au javascript, pourquoi ne pas utiliser directement un interpréteur javascript ?

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                              25 janvier 2021 à 19:26:12

                              voire commencer par un langage simple …

                              genre un petit interpréteur math où on pourrait définir des fonctions et les dériver, par exemple …

                              • Partager sur Facebook
                              • Partager sur Twitter
                                25 janvier 2021 à 19:27:21

                                Fvirtman a écrit:

                                Je vois de la gestion d'objet (console.print), de la gestion de variables, de corps {}, des if, des déclarations de variable... C'est pas trivial ton affaire. Je pensais que tu voulais faire un truc comme le LOGO. (langage), mais la c'est pas évident. 

                                A mon avis tu sous estimes la difficulté du truc. Tu peux regarder du coté de flex ou yacc, mais bon. 

                                Et sinon, puisque tu veux créer un truc qui ressemble au javascript, pourquoi ne pas utiliser directement un interpréteur javascript ?


                                Enfaite la syntaxe que j'ai écris est mon but à atteindre. Je ne compte pas faire quelque d'aussi dure d'est le début (je ne suis pas fou ;)). Je vais aller checker du coter de yacc et flex mais est-ce qu'ils sont installable sur Windows ??



                                Fvirtman a écrit:

                                Et sinon, puisque tu veux créer un truc qui ressemble au javascript, pourquoi ne pas utiliser directement un interpréteur javascript ?


                                Parce que je ne savais pas que c'était possible :).

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  25 janvier 2021 à 20:32:09

                                  Si c'était moi et si c'était pour le fun, voici ce que je ferais :

                                  • Quelque chose de simple pour commencer : le programme est composé de lignes, une ligne = une instruction. L'interpréteur va donc lire les lignes une par une.
                                  • Chaque ligne commence par un mot-clé suivi de zéro, un ou plusieurs arguments

                                  Ainsi, l'algorithme de l'interpréteur sera simple :

                                  Lire la nouvelle ligne avec 'fscanf' --> dans la variable 'ligne'
                                  Extraire le premier mot
                                  Trouver le numéro du mot-clé dans la table des mots-clés
                                  Si le mot n'est pas un mot-clé, afficher « Syntax Error : » + le mot incorrect
                                  Sinon (le mot-clé existe) :
                                      Switch selon le numéro du mot-clé :
                                          Case (un mot-clé) : appeler la fonction qui traite ce mot-clé
                                          Case (autre mot-clé) : appeler la fonction qui...
                                          et ainsi de suite pour chaque mot-clé
                                  Fin-Sinon
                                  

                                  La fonction qui traite un mot-clé fait deux choses :

                                  Relire 'ligne' avec 'sscanf' et le format adéquat pour extraire les arguments
                                  Si 'sscanf' retourne le nombre d'arguments attendu :
                                      Réaliser l'action associée à ce mot-clé
                                  Sinon :
                                      Afficher un message d'erreur

                                  Il restera à inventer une syntaxe simple à base de mots-clés + arguments, une sorte d'assembleur peut-être...

                                  Exemple (pour faire vieillot, je mets tout en majuscules):

                                  REM Calcul de la somme de 1 à 10
                                  LET SOMME 0
                                  LET I 0
                                  LABEL DEBUT
                                  ADD 1 I
                                  ADD I SOMME
                                  ISINFEQ I 10 DEBUT
                                  PRINT SOMME
                                  EXIT

                                  Rien que pour faire ça, il y a du travail, mais je sais que j'en suis capable. Après, il sera toujours temps de complexifier...

                                  (Plutôt qu'un assembleur, ce truc me fait penser aux langages de programmation des calculatrices programmables d'autrefois. Je trouve que c'est un bon objectif pour commencer : ré-écrire un langage de calculatrice. Dans un tel langage, les variables sont prédéfinies, par exemple elles s'appellent A, B, C... Z, et tous les nombres sont des nombres à virgule. Ça simplifie pas mal de chose, je crois, de ne pas s'embêter avec les types.)

                                  -
                                  Edité par robun 25 janvier 2021 à 20:50:14

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Langage Interprété

                                  × 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