Académique Documents
Professionnel Documents
Culture Documents
1. introduction
Gestion des
Erreurs
Table des
symboles
-L'analyse lexicale a pour but à partir du Programme source qui est une suite de caractère de
former des entités lexicale.
- L'analyse syntaxique a pour rôle la vérification de la forme ou encore la bonne disposition de
de la suite des entités lexicale, on parlera alors de la syntaxe du langage.
La vérification est faite à l'aide de la grammaire spécifique au langage appelée grammaire
syntaxique.
2. Rappels
Exemple :
Bloc Début LD ; LI Fin .
G LD d/d , LD.
LI i /i , LI.
La chaîne à analyser est : début d , d, i , i fin.
Solution :(en cours)
S# S# S#
c # c A # c A
(1,2)
c # b c #
Avancer blocage blocage Chaîne acceptée
Exemple :( en cours )
Remaques :
1. chaque entrée de la table contient une règle de la grammaire, si elle est vide elle correspond
à une erreur syntaxique.
2. pour construire la table d’analyse LL(1) on procède comme suit :
a) on vérifie que la grammaire est LL(1)
b) on calcule des débuts et les suivant
c) on construit la table LL(1).
c).4 Fonctionnement de l'analyseur :
Nous disposons de la chaîne d'entrée d'une table d'analyse la chaîne d'entrée comporte une
marque de fin ().
La pile à un instant donné contient des symboles de la grammaire avec comme marque du Fin
de la pile.
Initialement la pile contient l'Axiome de la grammaire au dessus de : ( z).
La table d'analyse est à 2 dimensions. Les lignes contiennent les non terminaux, les colonnes
contiennent les terminaux.
Case T[A,a] de la table contient le MDP à appliquer à la vue de a.
Exemple
On utilisant la table d’analyse de exemple précédant analyser la chaîne : i * ( i + i ) # ?
Remarque :
1. la production A donne l' item [ A . ]
2. intuitivement la partie droite du point (.) d’un item désigne la chaîne qui a été reconnue à
un moment donné au cours de l'analyse.
Par exemple l’item [E E.+T] signifie que l'on a reconnu une chaîne dérivable de E et que
l'on espère voir en entrée un "+" suivi d'une chaîne dérivable de "T" .
3. Le but d’items est de construite à partir des productions de la grammaire, et non des calculs
des contextes gauche et doit , un automate déterministe pour reconnaître les chaînes
4. les items sont regroupés en ensemble qui vont constituer les états de l'automate
Calcule de l’ensemble d’items :
On définit 2 opérations sur un ensemble d'items la fermeture et le successeur
a) L'opération fermeture d'item
Définition :
Soit I un ensemble d'items d’une un Grammaire G on appel fermeture de l’ensemble I et on
note fermeture( I ) , l'ensemble d'items construit à partir de I par les 2 règles suivants:
Exemple :
Soit la grammaire d’expression arithmétique suivante :
ZE
G EE+T/T/E–T
T i / ( E)
Remarques
1. Cela signifie que l'analyseur dans l'état [ Z . E ] s'attend à reconnaître une chaîne dérivable
de E , les chaînes dérivable de E sont celle qui sont produite de E soit de T , E+ T ou E- T; et
les chaînes dérivable de T commencer soit par un i ,soit par '(' .
2. L'item [Z . E] et l'item de base.
b) L'opération Successeur :
Elle permet la reconnaissance de symboles.
Définition :
Etant données une Grammaire G et un ensemble d'items
I = [ A . X] X TUN : on appel successeur de I par le symbole X et on note goto(I,X )
l’ensemble I’
I’=GOTO ( I, X) = fermeture ( J) et J = [ A X.]
Exemple :
I1 = GOTO ( I, E) = [ Z E.], [ E E. + T] , [ E E. - T].
c) Construction des ensemble d'item LR [ 0]
1.On démarre le processus avec l'item [ Z . S] ( S étant l'axiome)
2. on associe à chaque ensemble des items un état de l'automate.
3.un état final contient un item de réduction (contenant au moins un
item dont le point est eu fin de règle).
Exemple :
Soit la grammaire G suivante :
Z E
G= E E – T / T.
T F T/ F.
F i / ( E )
Calculer les ensembles d’item associés à cette grammaire ?
d) construction de la table d’analyse SLR
La table d’analyse SLR est une table de deux dimensions, les linges représentent les ensemble
d’items de la grammaire et les colonne représentent les symboles de la grammaire (T N)
La construction de la table d’analyse est relativement simple elle est réaliser par l’algorithme
suivant :
Exemple :
Soit la grammaire G suivante
Z E
E E – T / T.
T F T/ F.
F i
Sp : le sommet de la pile.
Tc : pointeur de la chaîne.
1. SI T[Sp,Tc] = Dj alors
Empiler Tc
Empiler j
Avancer dans la chaîne
2. SI T[Sp,Tc] = R A α alors
Dépiler 2* | α | (| α | : désigne la taille de α)
Empiler A
Empiler T[A,Sp]
1. SI T[Sp,Tc]= accepter alors
Chaîne syntaxiquement correcte
2. SI T[Sp,Tc]= alors
Erreur syntaxique (chaîne non acceptée)
3. Analyse LR ( 1) canonique:
3.1 introduction :
Dans cette analyse, l'information de prévision est calculée comme partie de l'automate. Ceci
va nous permettre d’analyser un espace plus large de grammaires.
On étend la notion d’item LR(0) pour prendre en charge l’information de prévision.
3.2 Définition
Un item LR(1) est un items à deux composantes de la forme: A . ,
Ou la première composante est une production marquée et est un symbole de prévision
appartenant à T U
3.3 Construction de l’analyseur LR(1)
Un analyseur LR (1) peut être généré de manière similaire à celle utiliser pour l'analyseur SLR
(1). La différence essentielle est que pour l'analyseur LR (1) les symboles de prévisions de l'item
doivent être aussi déterminés.
a) calcule de l’ensemble des items LR(1) :
Pour le calcul des items LR (1).
L'opération successeur est la même que celle pour les items LR (o).
L'opération fermeture est un peu plus complexe elle est calculée par l’algorithme suivant :
Exemple:
Soit la grammaire G suivante
ZS
G= S AA
AaA/b
Remarques
a) les entrées indéfinies sont des erreurs.
b) l'état initial de l'analyseur est I0.
Exemple :
Construction de la table LR(0) de la grammaire précédente ?