Andoni ALONSO TORT
UNIVERSITÉ DU HAVRE NORMANDIE
M1 IWOCS INFORMATIQUE
Application pour suivre le processus du transducteur lors de l'analyse d'un programme source dans un langage dont la gramaire est décrite à la suite.
Langage utilisé : Processing.
Pour ce projet de compilation, on donne un fichier de gramaire ./data/gramaire.txt
et un autre contenant son tableau ./data/tableauGramaire.txt
. Ces fichiers seront les règles de gramaire à suivre pour pouvoir compiler un code.
Pour tester notre code, on a 3 fichiers differents avec un code a compiler dans chaque un :
-
entree.txt
debut a := 3 ; b := a ; fin
Ce fichier respecte tous les regles de notre gramaire, on a un début, une fin et on a déclaré correctement les variables.
-
entree2.txt
debut a := ; b := ; fin
Ici nous avons un erreur, puisque au moment d'initialiser les variables on ne donne pas aucun valeur.
-
entree3.txt
a := 4; b := 5; finIci, n'ayant pas de début, le programme aura une erreur et il ne pourra pas continuer
Voyons comment ça fonctionne quand on exécute.
Ici on peut voir que nous avons le code debut a := 3 ; b := a ; fin
, et on va commencer avec le mot debut , si on appuie une fois sur la touche =>
on verra que dans notre liste de gramaire, la première étape est marquée en violet et que notre primier mot est bien accepté.
Juste en bas de notre écran on verra l'évolution de notre pile au même temps qu'on voit la lecture de notre code en au dessus de notre gramire.
Si on continue à appuyer la touche droite =>
on verra l'évolution jusqu'à la fin.
Ici, nous avons le code debut a := ; b := ;fin
. Si l'on appuie sur la touche droite =>
pour voir l'évolution de notre pile, on verra que à l'endroit ou il est censé d'avoir une valeur pour la variable, on trouve la terminaison de la ligne avec le ;
, dans ce cas, le programme lancera une erreur et on ne pourra pas continuer.
Avec ce fichier avec le code a := 4;b := 5;fin
, on verra tout simplement que quand on essaie de faire évoluer la pile, le programme s'arrêtera puisqu'il trouvera pas le mot de départ debut
.
===========================================================