An open API service indexing awesome lists of open source software.

https://github.com/andoniat/compilation_algo_ll

Analyse gauche d’un mot selon une grammaire donn´ee ;
https://github.com/andoniat/compilation_algo_ll

Last synced: over 1 year ago
JSON representation

Analyse gauche d’un mot selon une grammaire donn´ee ;

Awesome Lists containing this project

README

          


COMPILATION

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 :



  1. 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.






  2. entree2.txt


    debut a := ; b := ; fin



    Ici nous avons un erreur, puisque au moment d'initialiser les variables on ne donne pas aucun valeur.




  3. entree3.txt


    a := 4; b := 5; fin

    Ici, 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.

1. Menu pour choisir le fichier que l'on veut exécuter.

![menu](./projectImages/1_menu.png)

1.1 Code 1: Sans erreur : `./data/entree.txt`.

![entree debut](./projectImages/2_entree_1.png)

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

![debut marquee](./projectImages/3_entree_2.png)

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.

![evolution pile](./projectImages/4_entree_3.png)

![fin pile](./projectImages/5_entree_4.png)

1.2 Code 2: Erreur (Variable sans valeur): `./data/entree2`.

![entree2](./projectImages/6_entree2_1.png)

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.

![erreur](./projectImages/7_entree2_2.png)

1.3 Code 3: Erreur (Il n'y a pas de début): `./data/entree3`.

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`.

![debut erreur](./projectImages/8_entree3_1.png)

===========================================================

Developpé par Andoni ALONSO Tort