Vous êtes sur la page 1sur 4

Université de Ngaoundéré Année Académique 2021/2022

Faculté des Sciences Master 1 / Semestre 2


Département de Mathématiques et Informatique

TD Compilation (INF-412)
I. REVISIONS DE THEORIE DES LANGAGES
Exercice 1: Grammaires
Q-1) Soit G la grammaire définie comme suit :
G : S → bA | aB ; A → bAA | aS | a; B → aBB | bS | b
Examiner si les mots suivants appartiennent à L(G), et si oui, donner une dérivation droite,
une dérivation gauche, et l'arbre syntaxique correspondants :
ω1 = bbaaba ; ω2 = babbab ; ω3 = bbaaba
Q-2) Montrer que la grammaire : S → aS | Sa |a est ambiguë et trouver une grammaire
équivalente G' non-ambiguë.
Q-3) Soit G la grammaire sur {a,b} définie comme suit : S → SS | XaXaXa | ε ; X →bX | ε
Montrer que le mot ω = abbaba est dans L(G).
Q-4) On considère la grammaire définie par :
S → aB | bA ; A → a | aS | bAA; B → b | bS | aBB
Examiner si les mots suivants appartiennent à L(G), et si oui, donner une dérivation
droite, une dérivation gauche, et l'arbre syntaxique correspondant :
ω1 = aaabbabbba ω2 = babbab. Existe-t-il une expression régulière décrivant le langage
engendré par G ? Pourquoi ? Si oui, donner cette expression régulière.
Q-5) Quel est le langage engendré par la grammaire :
G : S → AA; A → AAA; A → bA | Ab | a
Déterminer si ce langage est rationnel et si oui, donner un automate d'états finis, une
expression régulière et une grammaire régulière correspondants.

Exercice 2: Expressions régulières

Q-1) Montrer que les deux expressions régulières r et s sont équivalentes :


r = (a+b)*a(a+b)*a(a+b)* et s = b*ab*a(a+b)*
Q-2) Donner une grammaire engendrant le langage des mots sur {a,b}comportant au moins
une occurrence de 'a' et au moins une occurrence de 'b', ainsi qu'une expression
régulière correspondante.
Q-3) Trouver une grammaire G engendrant le langage décrit par l'expression régulière
r = ab*ab(a+b)*
Q-4) Donner une expression régulière décrivant le même langage que la grammaire :
S → AaB; A → bA | ε ; B → aB | bB | ε

Exercice 3: Automates à pile


Q-1) Donner une grammaire et un automate à pile pour le langage des mots «bien
parenthésée» sur {a,b}.
Q-2) Donner une grammaire et un automate à pile pour le langage des palindromes sur {a,b}.

Exercice 4: Récursivité et factorisation


Q-1) Éliminer la récursivité à gauche de : A → Ba ; B →Ab ; B →c
Q-2) Factorisation gauche de : I →if C then I else I fi ; I →if C then I fi ; I →a

Page 1
Université de Ngaoundéré Année Académique 2021/2022
Faculté des Sciences Master 1 / Semestre 2
Département de Mathématiques et Informatique

TD Compilation (INF-412)
II. ANALYSE ET GRAMMAIRES LL(k)
Exercice -1 Calculer la table d'analyse LL(1) pour :
S → iBae
B → TB | ε
T → [eD] | di
D → ed | ε

Exercice -2 Calculer la table d'analyse LL(1) pour (après avoir factorisé) :


S → aB | bA
A → a | aS | bAA
B → b | bS | aBB

Exercice -3 Considérons la grammaire G2 :


E → E+E | E*E | (E) | n
a) Montrer que G2 est récursive à gauche et non factorisée à gauche.
b) Réécrire G2 en commençant par la factoriser, puis en traitant la récursivité, obtenant la
grammaire G'2.
c) Réécrire G2 en commençant par traiter la récursivité, puis en factorisant, obtenant la
grammaire G”2.
d) Construire les deux tables d'analyse. G'2 et G”2 sont-elles LL(1)?
e) Procéder à l'analyse du mot ω = 4+5 pour les deux grammaires.

Exercice -4 Soit la grammaire G1= {S → A | B ; A → 0A1 | a ; B → 0B1 | b}


a) L(G1) ∈ RAT ? G1 est elle récursive gauche ? est elle factorisable à gauche ?
b) Utiliser la définition du cours (Vue) pour déterminer son caractère LL(1), LL(k) ?
c) Donner une grammaire G1’ ∈ LL(1) telle que L(G1’) =L(G1)

Exercice -5 Soit la grammaire suivante G2= { S → abT , T → S | aa | b }


a) G2 est elle LL(1), LL(2) ?
b) Utiliser la définition du cours (Vue) pour déterminer son caractère LL(1), LL(k) ?
c) Effectuer la construction de la table LL(1). Expliquer les conflits.
d) Effectuer la construction de la table LL(2).
e) L(G2) ∈ RAT ?

Exercice -6 RAT ⊂ LL(1)


a) Montrer que pour tout langage rationnel L, il existe une grammaire G LL(1), telle que
L = L(G)
b) Appliquer à L(G2) pour trouver une grammaire G2’ ∈ LL(1)

Exercice -7 Soit la grammaire G3= {S → SA | BA ; A → Ab | B | ε ; B → aA |c}


a) Calculer Premiers et Suivants pour la grammaire ;
b) G3 est elle LL(k) ?
c) Effectuer la construction de la table LL(1). Expliquer les conflits.
Page 2
Université de Ngaoundéré Année Académique 2021/2022
Faculté des Sciences Master 1 / Semestre 2
Département de Mathématiques et Informatique

TD Compilation (INF-412)
Exercice -8 Itinéraire et analyse syntaxique descendante
On s'intéresse à une grammaire GI des instructions (très simplifiées) délivrées par un
logiciel de calcul d'itinéraire, du style « avancer_100m, au_panneau_Lille_tourner_à_gauche,
avancer_20m, tourner_à_droite ».
On utilise pour ce faire les symboles GO (avancer X_m), TL (turn left), TR (turn right) et PAN
(panneau).
On a GI = {VT ; VN ; route ; P} avec VT = {GO, TL, TR, PAN}, VN = {route , inst , panneau,
turn } et P contient les productions :
route → inst | inst route
inst → GO | panneau turn
turn →TL | TR
panneau →ε | PAN
a) Cette grammaire n'est pas LL(1) : pourquoi ?
b) Donner une grammaire G0 équivalente a GI et qui vous semble LL(1).
c) Calculer les ensembles Premier et Suivant pour G0.
d) Donner la table d'analyse LL(1) de G0. Justifier en utilisant cette table que G0 est une
grammaire LL(1).
e) En suivant les conventions du cours, donner les méthodes (signature et corps) de
l'analyseur récursif descendant qui reconnaissent respectivement le non-terminal
panneau et le non-terminal inst.
f) G0 est-elle une grammaire ambigüe ? Le langage L(G0) est-il algébrique ? régulier ?
Justifier vos réponses.

III. Analyse Ascendante LR(0)/SLR(1) / LALR (1)

Exercice -1 Montrer que la grammaire suivante est une grammaire LR(0) en construisant
l'analyseur :
Z → S$; S → A; A → ab; S → SA; A → aSb
Donner une trace de l'analyse de la chaîne "ababab$"

Exercice -2 On considère les grammaires G1 et G2 suivantes :


G1: Z →S$; S → S + A; S → A; A → ( S ); A → a (S) ; A→a
G2: S →X$; X →Xb; X → aXbaXb; X →
Sont-elles LR(0) ? SLR(1) ? Justifier.

Exercice -3 Même questions pour les trois grammaires suivantes :


G1: Z → A $; A → a D d; D → Db; D → ε
G2: Z → c A c$; A → C a B c; A → B b C c; B → ε ; C → b C; C → ε
G3: Z → E $ ; E → E + T ; E → T ; T → T * F ; T → F ; F → idf ; F → (E )

Page 3
Université de Ngaoundéré Année Académique 2021/2022
Faculté des Sciences Master 1 / Semestre 2
Département de Mathématiques et Informatique

TD Compilation (INF-412)
Exercice -4 On souhaite écrire un analyseur ascendant pour reconnaitre le langage ab*c.
Faut-il mieux choisir une grammaire récursive à gauche ou récursive à droite ?

Exercice -5 Analyseur SLR(1)


On se donne un langage de types permettant de d’écrire le type des entiers ou celui de
fonctions à valeur entière, prenant en argument des entiers ou d'autres fonctions de même
nature. Un type est donc soit la constante int soit de la forme  1  2  ...* n  int avec  i des
types. Pour reconnaître ce langage de types, on se donne la grammaire suivante avec comme
ensemble de terminaux # ,  , *, int  et comme ensemble de non-terminaux {S, A, T} avec S
le symbole de départ. G : ST# ; Tint ; T A   int ; A T ; A T *A

1. Donner les étapes de l'analyse ascendante du mot int   int* int   int# . Construire l'arbre
de dérivation syntaxique correspondant.
2. Quels terminaux peuvent suivre les symboles non-terminaux T et A dans une dérivation.
3. Les états de l'analyse SLR(1) de cette grammaire sont les suivants:

I1 S  T# I3 S  T# I5 A  T * A I7 A T


T   int A T T   int A  T  *A
T  A  int A  T  *A T  A  int
A  T A  T I8 A  T*A 
A  T * A I4 T  A    int A  T * A T  A    int
I2 T  int  I6 T  A   int I9 T  A  int 
3.1. Construire la table de transitions. Pour chaque symbole x terminal ou non, un état qui
contient un ensemble d'items X  m1  xm2 évolue vers un état qui contient tous les
items X  m1 x  m2 par une transition étiquetée par x.
3.2. On notera que si m2 commence par un symbole non terminal Y, l'état d'arrivée contient
également les items Y  m pour chaque règle de production Y  m . Indiquer les
états présentant des conflits et dans ces états, les différentes actions possible.
4. Expliquer la nature du conflit obtenu en donnant un exemple d'entrée où ce conflit se
produit. La grammaire donnée est-elle ambigüe ?
5. Que suggérez-vous pour remédier à ce problème ?

Exercice -6 Construire les tables LALR(1) pour les langages :


 
1) Le langage a nb n : S → aSb | ab
2) Le langage S → iSeS | iS | a
3) Le langage des mots bien parenthésés S → aSb | SS | ε

Exercice -7 Soit G1 : S → aA|bB A → aS|aB → bS|b


Tracer le graphe de transitions LALR(1) de G1 :

Page 4

Vous aimerez peut-être aussi