Vous êtes sur la page 1sur 3

TDde Compilation TD n°2/2: Analyse syntaxique ascendante

USDB - Dept Informatique - Licence SI/S5 /2023-2024 Mr HAMMOUDA M.

Exercice 1
On considère la grammaire suivante extraite du langage C:

expression  unaire
unaire  *unaire | postfixe
postfixe  postfixe ++ | primaire
primaire  id | ( expression )

où {expression, unaire, postfixe, primaire} l'ensemble des non terminaux et {*, ++, id, (, )} des non
terminaux.
1. Donnez l'arbre de dérivation pour le mot *p++.
2. En déduire si dans le langage C, l'expression *i++ est équivalente à l'expression (*p)++ ou à l'expression *(p++).

(*p)++ signifie en C incrémentation de la valeur stockée à l'adresse indiquée par le pointeur p et *(p++)
incrémentation du pointeur p.

Exercice 2
Compléter les symboles de transition et de prévision de la collection LR(1) suivante:

I1={SE., } I3={EaE.b, } I5={EaEb., } I7={EaEb., }

I0={ I2={ I4={


S.E, Ea.Eb, Ea.Eb, I6={EaE.b,
E.aEb, E.aEb, E.aEb, }
E., } E., } E.,

1/4
Exercice 3
Soit la grammaire G des pointeurs et des tableaux du C:
S'  S
S  TN
T  int
N  N [ nb ]  *N  id
Avec S' l'axiome, {S, T, N} les non terminaux et {int, [, ], nb, *, id} les terminaux "* id [ ]"

1) Démontrer par un exemple l'ambiguïté de G


2) Comment lever le conflit de manière à ce que la priorité de l'opérateur * (pointeur) soit supérieur à [ ]
(tableau).

1
TDde Compilation TD n°2/2: Analyse syntaxique ascendante
USDB - Dept Informatique - Licence SI/S5 /2023-2024 Mr HAMMOUDA M.

Exercice 4
Soit la grammaire suivante où S' est l'axiome, {S,A} l'ensemble des non terminaux et {a,b} l'ensemble des
terminaux
(0) S'  S
(1) S  AA
(2) A  aA
(3) Ab

1. Calculer les ensembles PREMIER et SUIVANT.

2. Construire l'automate LR(1).

3. Construire la table d'analyse LALR(1)

Exercice 5
Considérons la grammaire augmentée suivante, où A est l'axiome et {e, i, x} est l'ensemble des symboles
terminaux:
(0) A → S
(1) S → i S
(2) S → i S e S
(3) S → x

(1) Construire la collection des items LR(1) (l'automate LR(1))

(2) Quels sont le ou les états qui présentent des conflits? Justifiez.

(3) Construire tous les arbres syntaxiques possibles du mot " i i x e x" et que peut-on déduire?
(4) On suppose que i, e et x signifient respectivement if, else et une instruction quelconque. Déduire comment
on peut résoudre les conflits éventuels de manière à associer chaque occurrence de e à l'occurrence de i la
plus proche.

2
TDde Compilation TD n°2/2: Analyse syntaxique ascendante
USDB - Dept Informatique - Licence SI/S5 /2023-2024 Mr HAMMOUDA M.

Exercice 6
Soit la grammaire suivante extraite de la grammaire engendrant le langage des expressions rationnelles
définie par G = (T, N,S, P)
avec T = {a, * }, N = {R} , S l'axiome et P l'ensemble des productions:

P={ S  R
R  RR (concaténation)
| R*
| a
}

On conviendra que * et la concaténation sont associatifs à gauche, et que la priorité de * est supérieure à
celle de la concaténation.

1. Construire la collection des items LR(1) (l'automate LR(1)

2. Construire la table d'analyse LR(1)

3. En donnant des exemples de longueur 3 (nombre de symboles "a" et "*" dans le mot), montrez
comment on peut résoudre les conflits de l'analyseur obtenu.

Exercice 7
Soit la grammaire G suivante:
(0) S  E
(1) E  E ∩ E
(2) E  E  E
(3) E  E+
(4) E  a

Questions:
a- Construire la table d'analyse LR(1)

b- Montrer comment on peut éliminer les conflits de la table d'analyse en adoptant les conventions que ∩ et
 associatifs à gauche, ∩ est plus prioritaire que + soit appliqué au "a" le plus proche.

c- Construire l'arbre syntaxique de la phrase "aa∩a∩a+"

Vous aimerez peut-être aussi