Partage
  • Partager sur Facebook
  • Partager sur Twitter

Théorie des langages

Sujet résolu
    18 avril 2019 à 20:37:29

    Bonsoir,
    je souhaite créer un interpréteur logo  en C mais je ne sais pas comment débuter .Le but étant de taper des instructions dans le terminal linux , ce dernier l'exécute et affiche le résultat dans un fichier texte .
    Je suis aussi preneur des sources des premieres versions.
    • Partager sur Facebook
    • Partager sur Twitter
    Seul le travail paie
      18 avril 2019 à 23:25:42

      Pour interpréter un langage il faut d'abord le parser - c'est à dire :

      1) Utiliser un lexer pour transformer ton texte en stream de "token". Par exemple, si je devais interpréter du C, "int var = 4;" serait transformé en "TYPE(int) VARIABLE(var) ASSIGNS CONSTANT(4) END_INSTRUCTION"

      2) Une fois que tu as ton lexer, tu peux produire un arbre de syntaxe grâce à une grammaire

      3) Et à partir de l'arbre de syntaxe, tu n'as plus qu'à l'interpréter en le parcourant

      Pour y aller étape par étape, tu peux commencer par traiter des sous langages de logo (comme par exemple une version de logo simplifiée sans condition et sans boucle, juste une série d'instructions à exécuter), et par la suite tu enrichis ton langage petit à petit, en faisant bien attention à mettre des tests de non régression (c'est à dire des programmes dont tu sais qu'ils fonctionnent avec ton interpréteur - à chaque mise à jour de ton interpréteur, tu lances tes tests et vérifie que tu n'as rien cassé).

      ça représente beaucoup de boulot - ça va sûrement te prendre du temps

      Quelques liens pour t'aider, mais sache que c'est un sujet relativement complexe. Rien que le lexer et le parser ça peut représenter deux ou trois bonnes semaines de boulot. ça va te demander d'être familier avec les arbres (pour la partie parsing) et les automates (pour la partie lexer - mais ça revient à utiliser des regexp en général)

      https://fr.wikipedia.org/wiki/Analyse_lexicale

      https://sjrd.developpez.com/algorithmique/analyseurs-syntaxiques/

      -
      Edité par potterman28wxcv 18 avril 2019 à 23:26:28

      • Partager sur Facebook
      • Partager sur Twitter
        19 avril 2019 à 1:23:43



        potterman28wxcv a écrit:

        Pour interpréter un langage il faut d'abord le parser - c'est à dire :

        1) Utiliser un lexer pour transformer ton texte en stream de "token". Par exemple, si je devais interpréter du C, "int var = 4;" serait transformé en "TYPE(int) VARIABLE(var) ASSIGNS CONSTANT(4) END_INSTRUCTION"

        2) Une fois que tu as ton lexer, tu peux produire un arbre de syntaxe grâce à une grammaire

        3) Et à partir de l'arbre de syntaxe, tu n'as plus qu'à l'interpréter en le parcourant

        Pour y aller étape par étape, tu peux commencer par traiter des sous langages de logo (comme par exemple une version de logo simplifiée sans condition et sans boucle, juste une série d'instructions à exécuter), et par la suite tu enrichis ton langage petit à petit, en faisant bien attention à mettre des tests de non régression (c'est à dire des programmes dont tu sais qu'ils fonctionnent avec ton interpréteur - à chaque mise à jour de ton interpréteur, tu lances tes tests et vérifie que tu n'as rien cassé).

        ça représente beaucoup de boulot - ça va sûrement te prendre du temps

        Quelques liens pour t'aider, mais sache que c'est un sujet relativement complexe. Rien que le lexer et le parser ça peut représenter deux ou trois bonnes semaines de boulot. ça va te demander d'être familier avec les arbres (pour la partie parsing) et les automates (pour la partie lexer - mais ça revient à utiliser des regexp en général)

        https://fr.wikipedia.org/wiki/Analyse_lexicale

        https://sjrd.developpez.com/algorithmique/analyseurs-syntaxiques/

        -
        Edité par potterman28wxcv il y a environ 1 heure


        merci et as tu une idée de comment je pourrai afficher le résultat en 2d  en C , par exemple si je souhaite qu'il interprète les instructions qui dessinent un carré.

        • Partager sur Facebook
        • Partager sur Twitter
        Seul le travail paie
          19 avril 2019 à 20:16:41

          Pour afficher en 2d tu peux regarder du côté de la SDL. Tu as un tuto entier dédié a ça sur le site
          • Partager sur Facebook
          • Partager sur Twitter

          Théorie des langages

          × 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