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é.
@SalehKellant: Bonjour, bonjour, MERCI pour avoir déterré ce sujet. Ça nous fait un grand plaisir! Je veux bien "considérer" ton problème et sympathiser avec toi. On se revoit dans 5 ans?
Le Tout est souvent plus grand que la somme de ses parties.
@SalehKellant Bonsoir, merci de ne pas squatter le sujet des autres, créer votre propre sujet dans le respect des règles du forum à savoir qu'un message commence par des règles de politesses (Un bonjour ou des salutations à la communauté et se termine par des remerciements par avances pour les futures réponses), la description de votre problème et le code que vous avez écrit inséré sur le forum à l'aide de l'outil d'intégration de code soit le bouton code </>.
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.