Vous êtes sur la page 1sur 2

Université Ibn Tofaïl A.

U : 2018/2019
Faculté des sciences SMI : S5
Département d’Informatique Compilation
Examen
1 H 30 mn
Questions de cours : (3 points)
1°) Que signifie le "1" dans "grammaire de type LL(1)" ?
2°) Pourquoi les grammaires récursives à gauche ne sont pas de type LL(1) ?
3°) Supposons qu’un langage de programmation autorise les commentaires imbriqués,
comme par exemple /*Ceci est /*un commentaire*/ imbriqué*/. A quelle(s) étape(s) de
compilation seront-ils traités ?

Exercice 1 : (7 points)

Soit l’alphabet  = {0,1}.

1°) Donnez un automate déterministe qui reconnait les mots qui sont la représentation
binaire d’un nombre pair.

Indication : Deux états suffisent et le mot représentant un nombre pair se termine


toujours par 0.

2°) Donnez un automate déterministe qui reconnaît les mots qui sont la représentation
binaire d’un entier divisible par 3.

Indication : Cet automate, aura 3 états (X mod 3 = 0:état d’acceptation, X mod 3 = 1: état 1,
X mod 3 = 2 : état 2). Et Pour ces transitions, il suffit d'étudier l'effet qu'a la lecture d'un 1 ou
d'un 0 sur le modulo 3 du nombre lu à l'état courant.

3°) Ecrire, en C, un analyseur lexical permettant de reconnaitre si un nombre binaire


quelconque est un multiple commun de 3 et de 2.

Exercice 2 : (10 points)

On considère un point dans le plan, identifié par ses coordonnées cartésiennes (x, y).
Ce point est initialement situé aux coordonnées (0, 0) et peut effectuer quatre mouvements
élémentaires d’une unité, vers le haut, vers le bas, à gauche et à droite. A chacun de ces
mouvements correspond une lettre: H, B, G et D. Un chemin est une séquence de
mouvements représentée sous la forme d’une expression arithmétique. L’expression B + G
correspond à une séquence d’un mouvement élémentaire vers le bas suivi d’un mouvement
élémentaire vers la gauche. La répétition de mouvements peut être indiquée grâce à
l’operateur ×. L’expression 3 × G correspond à une séquence de trois mouvements
élémentaires vers la gauche. L’opérateur × est plus prioritaire que l’opérateur +. L’usage de
parenthèses permet de répéter un chemin complexe : 3 × (H + 7 × (B + 3 × G)).
Soit la grammaire G0 suivante permettant de générer de telles expressions :

1) E → E + E 5) N → N C

2) E → N × E 6) N → C

3) E → (E) 7) C → 0 | 1 |2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

4) E → H |B |G |D

1°) Dessiner deux arbres de dérivation différents correspondant au mot D + D + D

2°) Ecrire une grammaire G1 non ambigüe telle que L(G1) = L(G0).

3°) Ecrire une grammaire G2 non récursive à gauche telle que L(G2) = L(G0).

4°) Ecrire une grammaire G3 factorisée à gauche telle que L(G3) = L(G0).

5°) Calculer les premiers et suivants des symboles de G3.

6°) Donner la table d’analyse de G3. Est-elle de type LL(1) ? (Justifier).

7°) Simuler le comportement d’une analyse prédictive sur le mot : 3 × (H + 5 × B)

Vous aimerez peut-être aussi