Académique Documents
Professionnel Documents
Culture Documents
EXERCICE I : (7 points)
Soit la grammaire suivante, d’axiome S.
S → S + S | S S | S* | ( S ) | a
3) Cette grammaire est-elle récursive à gauche ? Si oui lever la récursivité gauche. (0,5+0,5) pt
Oui la grammaire est récursive à gauche
Pour lever la récursivité gauche, nous allons définir une nouvelle grammaire G’ dont les règles de
production sont les suivantes :
S → ( S ) S’ | a S’
S’ → T S’| є
T→+S | S|*
EXERCICE II : (7 points)
P⟶SS
S⟶cS│d
Partant de l’item – 0, I0 = {[P’→ .P, #], [P → .SS, #], [S → .cS, c], [S → .cS, d], [S → .d, c], [S → .d, d]}
Explications : comme I0 contient l’item LR(1) [S’ → .P, #] on ajoute tous les items LR(1) avec S en partie gauche
et qui ont pour symbole de prévision un élément de First (𝝐 #) = {#}. On ajoute [P → . SS, #].
Comme I0 contient [P → .SS, #] on ajoute maintenant tous les items LR(1) avec S en partie gauche et qui ont
comme symbole de prévision un terminal de First (S #) = {c, d}. On ajoute [S → .cS, c], [S → .cS, d] et [S → .d,
c], [S → .d, d].
Calcul des autres états de l’automate LR(1) : I1 = Transition (I0, P) = {[S’ → P., $]}
I3 = Transition (I0, c) = {[S → c.S, {c, d}], [S → .cS, {c, d}], [S → .d, {c, d}]}
La construction de l’automate LR(1) se fait par application de l’algorithme d’obtention de l’automate LR(0) avec
I0 = fermeture {[P’ → .P, $]}. Ici, il faut
Comme l’automate a été déjà construit, il revient de remplir la table LR(1) question de savoir si on admet au
maximum une seule règle de production par case.
Il peut exister plusieurs décompositions lexicales/syntaxiques en fonction des lexèmes que l'analyse lexicale
reconnaît.
Ici, on suppose que les lexèmes reconnus par l'analyse lexicale sont: identificateur, nombre, litteral, operateur
numérique, concaténation et affectation.
L'analyse lexicale
Les phrases suivantes définissent les règles pour fabriquer les lexèmes.
• 01) L'alphabet Alp du langage L est formé des lettres {a, ..., z, A, ..., Z}, des chiffres {0, ..., 9}, du
point {.}, de la quote {'} et les caractères {+, -, *, /, =}.
• 02) Un identificateur est composé de lettres et de chiffres et commence par une lettre.
• 03) Un nombre peut être un entier (composé de chiffres) ou un décimal (composé d'une partie
entière et d'une partie fractionnaire séparées par un point).
• 04) Un opérateur est l'une des 4 opérations arithmétiques.
• 07) Un littéral est une suite de symboles entre simple quotes.
Il faut également ajouter des règles permettant de reconnaître les lexèmes de concaténation et d'affectation.
Le vocabulaire est formé des lexèmes obtenus après l'analyse lexicale. Ces lexèmes sont ceux décrits précédemment
: identificateur, nombre, litteral, operateur numérique, plus et affectation.
Les phrases suivantes définissent les règles pour valider la suite de catégories de lexèmes obtenue après l'analyse
lexicale.
✓ Une expression numérique est une suite de nombres ou d'identificateurs reliés par des opérateurs.
✓ Une affectation numérique associe un identificateur à une expression numérique (par le symbole =).
✓ Une expression alphanumérique est une suite de littéraux ou d'identificateurs reliés par l'opérateur
de concaténation (symbole &).
✓ Une affectation alphanumérique associe un identificateur à une expression alphanumérique.
✓ Une expression syntaxiquement correcte du langage défini sur Alp est une affectation numérique
ou alphanumérique.