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.
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)
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)
- 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é.
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
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.