3eme IIR 2019-2020 Cours compilation Mini projet : réalisation d’un analyseur l
3eme IIR 2019-2020 Cours compilation Mini projet : réalisation d’un analyseur lexical pour un mini-langage Partie théorique : Le but de ce mini-projet est de réaliser un analyseur lexical pour le mini-langage ci-dessous. Pour chaque unité lexicale, on indique le token (lexème) associé, sa valeur ainsi que l'expression régulière qui le définit. On adopte de plus les conventions suivantes : - Les caractères blancs, tabulation et retour chariot ne sont pas significatifs et peuvent apparaître en nombre quelconque. - Les commentaires se terminent au premier *) rencontré et ne peuvent pas être emboités. - La reconnaissance d'un mot clé est traitée de la même manière que celle d'un identificateur. Une fois le lexème formé, ceci est recherché dans une table des mots clés qui associe à chaque mot clé l'unité lexicale correspondante. Question : Chercher l’automate déterministe minimal qui reconnaît les différentes unités lexicales. (Indication : utiliser les différents algorithmes vu en cours) Partie pratique : Un Automate Fini Déterministe (AFD) sera stocké dans un fichier texte selon le format suivant : - sur la première ligne, on écrit le nombre des états. - sur la deuxième ligne, on écrit la chaîne représentant l'alphabet. - sur la troisième ligne, on écrit l'état initial. - sur la quatrième ligne, on écrit le nombre des états finaux. - sur la cinquième ligne, on écrit les états finaux séparés par des espaces. - sur les lignes suivantes, on représente les transitions en écrivant sur chaque ligne, l'état de départ, le symbole lu et l'état d'arrivée, séparés par des espaces. 1- Proposer une structure de données afd qui représente votre automate. 2- Écrire en C /C++ ou C# les fonctions suivantes : a- afd read(char * nameFile) qui ouvre le fichier texte représentant un AFD et retourne la structure qui l'implémente en mémoire. b- void print(afd M) qui prend un AFD M et affiche sa description à l'écran selon le format suivant : E = {O, 1, 2} A = {a, b, c} Transitions : t(0, a) = 1 ……… I = O F = {2} c- int accept(afd M,char * w) qui prend un AFD M et un mot w et qui teste si ce mot est reconnu par l'automate. 4- Le programme principal qui : a. Demande à l'utilisateur d'entrer le nom du fichier contenant la description de l’automate qui décrit notre mini-lanagae. b. Charge l'automate décrit dans ce fichier en mémoire. c. Affiche cet automate. d. Demande à l'utilisateur de saisir le nom du fichier à analyser. f. Affiche le résultat de la reconnaissance. Evaluation de ce mini projet: Vous devez rendre un rapport présentant tout le travail réalisé lors de ce mini-projet. Il explique le fonctionnement général de l’application ainsi que sa structure (organisation du code). Vous devrez décrire l’ensemble des structures utilisées sous la forme de schémas. Le rapport ne contiendra aucun code C. Cependant, il devra présenter les algorithmes utilisés sous la forme présentée dans le module Algorithmique C. Remarque 1: La note tiendra compte de la propreté du code (commentaires, indentation, choix du nom des variables), du choix des structures. Remarque 2: Le code de chaque binôme doit être unique. Remarque 3: Avoir préparé une démonstration du logiciel produit, qui montre sa justesse pour différents jeux de test. Chaque membre du binôme devra participer à la démonstration. uploads/Ingenierie_Lourd/ mini-projet-compilation-2020.pdf
Documents similaires










-
24
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 28, 2021
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 0.0660MB