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
2 mai 2024 à 21:47:49 - Message modéré pour le motif suivant : Merci de créer votre propre sujet


3 mai 2024 à 0:46:00

@SalehKellant: et tu as posté ta demande sur combien de forums en espérant ne pas devoir faire travailler tes petites cellules grises ?

Edit: orthographe

-
Edité par edgarjacobs 3 mai 2024 à 0:57:11

  • Partager sur Facebook
  • Partager sur Twitter

On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

3 mai 2024 à 1:39:32

@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?
  • Partager sur Facebook
  • Partager sur Twitter

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

3 mai 2024 à 2:44:46

@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 </>

Déterrage

Citation des règles générales du forum :

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

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter