Vous êtes sur la page 1sur 2
3 A. Licence Examen de rattrapage de compilation 2016/2017 ( durée: 1"30 ) Bxercice 1 (8 points) On deécrit un mini-langage de séquences d'équations par la grammaire suivante : E > EE|A=Acol A —+ id| const | A op A id représente un identificateur de variable, constitué dune séquence éventuellement vide de chiffres décimanx suivie par lo caractdro 'S?; ainsi, $, 18, 4808, ... sont des identificateurs de variables. const représente une constante entiére constituée d’une séquence non vide de chiffres octaux (0 & 7) éventuellement préctelée du signe ’-’; ainsi, 2, -8, 58, -470, ... sont des constantes entidres. cop est l'un des opérateurs arithmeétiques + ou *. col désigne le caractére de fin de ligne (\n'). Dans ce mini-langage, toute séquence de caractéres comprise entre [{ et }]_ est un commentaire. 1. Enumérer les tokens, les modéles correspondants et les attributs associés. (2 pts) 2. Construire un automate 4’états fini simple et déterministe (DFA) permettant d'ignorer les blanes (espaces et tabulations) et les commentaires, ct de reconnaitre l'ensemble des tokens; préciser Jes actions & exécuter aux niveaux des états finaux. (3 pts) 3. Donner une codification des caractares. (1 pt) 4. Considérer deux états (un état intermédiaire comportant une boucle et un état final oa le token reconnu représente un identificateur de variable) et écrire en langage C les fragments de code correspondants. (2 pts) N.B. : Pour convertir les constantes entiéres décrites ci-dessus en leurs valeurs, on utilisera la fone- tion valof(). A titre d’exemple, Vappel valof("?-0027”) retournera la valeur -23. Exercice 2 (4 points) 1. Soit la table de transition compacte constituée des trois vecteurs suivants, obtenue en rangeant Ja matrice de transition dans le vecteur DELTA colonne par colonne lors de la compression : CARACTERE [O[0]2]4]0] verra (2]1]0[s|-1[1[3[4 VALIDE [4]0]2]1| 112133] Retrouver la table de transition a deux dimensions correspondante. (2 pts) 2. Berire dans la syntaxe de lez, les expressions réguliéres décrivant les identificateurs de variables et les commentaires, du langage décrit dans Vexercice 1 (2 pis) Exercice 3 (8 points) 1. Soit la grammaire G, suivante qui cngendre des expressions arithmétiques = Gf A — -A\A-A\(A)| num ot — désigne le moins unaire dans —A et la soustraction (binaire) dans A—A. Aprés transformation de Gy, on obtient la grammaire G3 équivalente suivante : Gof A —+ -AB|(A)B|numB B— -AB\e (a) Determiner les ensembles firsti(BA) ot fotlows(B). (2 pts) (b) Montrer que Ge n’est pas LL(1). (1 pt) (c) En considérant que le moins unaire est moins prioritaire que Ia soustraction binaire, construire une grammaire non ambigué 6quivalente & C,. Btablir d'autres conventions de votre choix si cela siavere nécossain (2 pis) (4) Deduire une grammaire LL(1) équivalente (tpt) 2. Soit la grammaire G s\ vante : Gi os — AM|Bas® A — aAlble Bo ele Eerire la procédure S() de l’analyseur par descente récursive, basé sur G. (2 pts)

Vous aimerez peut-être aussi