0% ont trouvé ce document utile (0 vote)
30 vues19 pages

Analyse Syntaxique et Grammaires

Transféré par

fifir211
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues19 pages

Analyse Syntaxique et Grammaires

Transféré par

fifir211
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

UNIVERSITE FERHAT ABBES – SETIF 1

FACULTE DES SCIENCES


DEPARTEMENT D’INFORMATIQUE

Chapitre 3
Analyse Syntaxique
1

HAMMOUCHE Yassine

Compilation L/Ing 3A 15/10/2024


Plan
2

Grammaires
Dérivations
Ambiguïté
Analyse syntaxique

Compilation L/Ing 3A 15/10/2024


Plan
3

Grammaires
Dérivations
Ambiguïté
Analyse syntaxique

Compilation L/Ing 3A 15/10/2024


Grammaires
4
 Un automate peut être vu comme une machine permettant de reconnaître
des mots. On fait entrer un mot dans la machine, et en résultat, on a comme
réponse “le mot appartient au langage” ou “le mot n’appartient pas au
langage”.
 Avec une grammaire, on s’intéresse plus à la structure des mots du langage
pour expliquer comment ils se fabriquent. Une fois qu’on a les “règles de
fabrication” (appelées "règles de production"), on peut engendrer tel ou tel
mot.
 Exemple: Par exemple, si on prend le ‘if ’ du C :
 if ( expression ) statement else statement alors on peut exprimer ce fait a l’aide
d’une règle:
 stmt → if ( expr ) stmt else stmt

Compilation L/Ing 3A 15/10/2024


Grammaires
5
 Une grammaire algébrique (hors contexte) est un quadruplet G =
(Σ;N; P; S) où :
 Σ est un alphabet, dit alphabet des terminaux ; les terminaux sont les
symboles de base à partir desquels les chaînes sont formées (unités
lexicales)
 N est un alphabet, dit alphabet des non-terminaux ou des variables, (disjoint
de Σ)
 P est un ensemble de règles de production où chaque règle est constituée
d’un non-terminal, appelé partie gauche, d’une flèche appelée partie
droite de la forme A → β avec A ϵ Σ et β ϵ (Σ U N)*
 S est un élément de N appelé axiome de G (symbole initial). L'ensemble des
chaînes que l'on peut obtenir à partir de l'axiome est le langage défini par
la grammaire.

Compilation L/Ing 3A 15/10/2024


Grammaires
6

Toutes les chaines de la grammaire (mots) peuvent être


obtenues en appliquant des règles de production
successivement à partir de l’axiome.
Exemple:
 les mots bien parenthésés
un mot sans parenthèse (le mot vide ε puisqu’on ne considère que le
langage des parenthèses),
la concaténation de deux mots bien parenthésés : ( ) ( ),
une parenthèse ouvrante, un mot bien parenthésé, une parenthèse
fermante : ( ( ) ).
 S →ε , S → SS et S → (S)

Compilation L/Ing 3A 15/10/2024


Grammaires
7

La grammaire qui permet de définir le langage des “suites de chiffres


séparés par des signes d’addition ou de soustraction”, tels que 9-5+2,
3-1 et 7.
list → list + digit
list → list - digit
list → digit
digit → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Compilation L/Ing 3A 15/10/2024


Grammaires
8

Une grammaire régulière est une classe de grammaires


formées des 2 sous-classes suivantes :

les grammaires linéaires droites, où toutes les règles sont


de la forme
A → wB A→w

les grammaires linéaires gauches, où toutes les règles


sont de la forme
A → Bw A→w

Compilation L/Ing 3A 15/10/2024


Plan
9

Grammaires
Dérivations
Ambiguïté
Analyse syntaxique

Compilation L/Ing 3A 15/10/2024


Dérivations
10
 Mot dérivé directement. Soient u et v deux mots sur Σ U N. Le mot v se
dérive directement de u par la grammaire algébrique G = (Σ;N; P; S) s’il
existe des mots u1 et u2 et une règle de production X → w tels que u =
u1Xu2 et v = u1wu2.
 Les mots ε, (S) et SS sont les seuls mots qui se dérivent directement de S par la grammaire bien
parenthésés
 Mot dérivé. Soient u et v deux mots sur Σ U N. Le mot v se dérive de u par
la grammaire algébrique G = (Σ;N; P; S) s’il existe des mots w0;w1; … ;wn
tels que u = w0, v = wn et pour tout entier i (0 <= i < n), wi+1 se dérive
directement de wi .
 Les mots (((S)S)(S)S), (S)(S)S, (S)S et S se dérivent de S par la grammaire des mots bien
parenthésés
 Une dérivation s’écrit souvent : u = w0 → w1 → w2 → : : : → wn = v

Compilation L/Ing 3A 15/10/2024


Dérivations
11
 Pour montrer qu’un mot appartient au langage, il faut et il suffit de
montrer qu’il s’obtient à partir d’une application de suite finie de
règles de production de la grammaire (en commençant par
l’axiome).

 Une dérivation est dite a gauche si le non-terminal le plus a gauche


est remplacé
 Une dérivation est dite a droite si le non-terminal le plus a droite est
remplacé

Compilation L/Ing 3A 15/10/2024


Dérivations
12
 Chaque dérivation peut être représentée sous la forme d’un arbre
de dérivation.
 Un arbre de dérivation est défini de la manière suivante :
 Racine étiquetée par le symbole initial S
 Feuilles étiquetées par les éléments de T U {ε} (les terminaux + ε)
 Noeuds internes etiquetes par les elements de N (les non-terminaux). un
sommet interne étiqueté X a pour fils (dans cet ordre) x1; …; xn avec xi ϵ Σ U N,
si X → x1 … xn est une règle de production de la grammaire.
 Un arbre de dérivation est traditionnellement dessiné la racine en haut
(parcours en profondeur). Sur un tel arbre dessiné, le mot dérivé s’obtient en
concaténant les étiquettes des feuilles de gauche à droite.

Compilation L/Ing 3A 15/10/2024


Dérivations
13
 Arbre de dérivation du mot (())()

Compilation L/Ing 3A 15/10/2024


Plan
14

Grammaires
Dérivations
Ambiguïté
Analyse syntaxique

Compilation L/Ing 3A 15/10/2024


Ambiguïté
15
 Une grammaire est ambiguë s’il existe un mot qui admet deux
arbres de dérivations distincts.
 Théorème : Le problème de déterminer si une grammaire est
ambiguë est indécidable (i.e. il n’est pas possible d’élaborer un
algorithme qui soit capable de dire, après un temps fini, si une
grammaire est ambiguë ou non.).
 on peut toutefois montrer qu’une grammaire donnée est ambiguë
en donnant un mot engendré par cette grammaire admettant
deux arbres de dérivations distincts.

Compilation L/Ing 3A 15/10/2024


Ambiguïté
16
 Par exemple, on peut aussi bien générer les listes de chiffres séparés par des opérateurs `a l’aide de la
grammaire suivante:
 string → string + string
 string → string - string
 string → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
 Il existe deux arbres de dérivation pour la chaîne 9-5+2:

Compilation L/Ing 3A 15/10/2024


PlAN
17

Grammaires
Dérivations
Ambiguïté
Analyse syntaxique

Compilation L/Ing 3A 15/10/2024


Analyse syntaxique
18
 Donnes: grammaire G et un mot w (une suite de tokens)
 But: reconstruire l'arbre syntaxique de la phrase w a partir de la
grammaire G. L'analyse de la chaîne se fait toujours de la gauche
vers la droite.
 2 méthodes ou processus
 analyse descendante. Cette analyse correspond a un parcours descendant
gauche (on lit de gauche a droite). Il s'agit de deviner a chaque étape la
règle qui sert a engendrer le mot qu'on lit. On part de S pour atteindre w.
(grammaires LL(k))
 analyse ascendante. Dans cette analyse, on essaye d'appliquer le membre
droit d'une règle et a le remplacer par le non-terminal gauche correspondant.
On part de w pour atteindre S. (grammaires LR(k))

Compilation L/Ing 3A 15/10/2024


Analyse syntaxique
19

Pareil que l’analyse lexicale, des outil pour générer


directement un analyseur syntaxique.
Bison, ….

Compilation L/Ing 3A 15/10/2024

Vous aimerez peut-être aussi