Analyseurs syntaxiques
Damien Nouvel
Automates à pile
Plan
1. Automates à pile
2. Analyse syntaxique LL 3. Analyse syntaxique LR
Damien Nouvel (Inalco) Analyseurs 2 / 28
Automates à pile
Machine de Turing
Alan Turing (UK, 1912 - 1954)
§ Machine de Turing
‚ Ruban : suite de cases mémoire
‚ Tête de lecture / écriture
‚ Ensemble d’états
‚ Configurations et actions
Automates à pile
Machine de Turing
§ Formellement, heptuplet :(Q,Σ,Γ,$, δ,q0,F)
‚ Q: ensemble des états
‚ ΣĎΓzt$u : symboles terminaux
‚ Γ: symboles terminaux et non-terminaux
‚ $PΓ: symbole de fin de chaîne (blanc)
‚ δ:QˆΓÑQˆΓˆ tG,Du : fonction de transition
‚ q0 PQ: état initial
‚ FĎQ: ensemble de états finaux
ñ Automate avec non-terminaux, écriture et déplacement
§ Configuration
‚ Symboles sur le ruban
‚ Position de la tête de lecture
‚ État courant
Damien Nouvel (Inalco) Analyseurs 4 / 28
Automates à pile
Machine de Turing
§ Formellement, heptuplet :(Q,Σ,Γ,$, δ,q0,F)
‚ Q: ensemble des états
‚ ΣĎΓzt$u : symboles terminaux
‚ Γ: symboles terminaux et non-terminaux
‚ $PΓ: symbole de fin de chaîne (blanc)
‚ δ:QˆΓÑQˆΓˆ tG,Du: fonction de transition
‚ q0 PQ: état initial
‚ FĎQ: ensemble de états finaux
ñ Automate avec non-terminaux, écriture et déplacement
§ Configuration
‚ Symboles sur le ruban
‚ Position de la tête de lecture
‚ État courant
Automates à pile
Machine de Turing
§ Formellement, heptuplet :(Q,Σ,Γ,$, δ,q0,F)
‚ Q: ensemble des états
‚ ΣĎΓzt$u : symboles terminaux
‚ Γ: symboles terminaux et non-terminaux
‚ $PΓ: symbole de fin de chaîne (blanc)
‚ δ:QˆΓÑQˆΓˆ tG,Du: fonction de transition
‚ q0 PQ: état initial
‚ FĎQ: ensemble de états finaux
ñ Automate avec non-terminaux, écriture et déplacement
§ Configuration
‚ Symboles sur le ruban
‚ Position de la tête de lecture
‚ État courant
Damien Nouvel (Inalco) Analyseurs 4 / 28
Automates à pile
Machine de Turing
§ Formellement, heptuplet :(Q,Σ,Γ,$, δ,q0,F)
‚ Q: ensemble des états
‚ ΣĎΓzt$u : symboles terminaux
‚ Γ: symboles terminaux et non-terminaux
‚ $PΓ: symbole de fin de chaîne (blanc)
‚ δ:QˆΓÑQˆΓˆ tG,Du: fonction de transition
‚ q0 PQ: état initial
‚ FĎQ: ensemble de états finaux
ñ Automate avec non-terminaux, écriture et déplacement
§ Configuration
‚ Symboles sur le ruban
‚ Position de la tête de lecture
‚ État courant
Automates à pile
Automate à pile
§ À mi-chemin entre l’automate et la machine de Turing
§ Formellement, heptuplet :(Q,Σ,Γ,K, δ,q0,F)
‚ Par défaut, mêmes symboles que pour la machine de Turing
‚ δ:QˆΣˆΓÑQˆΓ˚ : fonction de transition
‚ K PΓ : symbole de fond de pile
ñ Reconnaissance de grammaires hors-contexte
§ Configuration
‚ Symboles sur le ruban à analyser
‚ Symboles sur la pile
‚ État courant
Damien Nouvel (Inalco) Analyseurs 5 / 28
Automates à pile
Automate à pile
§ À mi-chemin entre l’automate et la machine de Turing
§ Formellement, heptuplet :(Q,Σ,Γ,K, δ,q0,F)
‚ Par défaut, mêmes symboles que pour la machine de Turing
‚ δ:QˆΣˆΓÑQˆΓ˚ : fonction de transition
‚ K PΓ : symbole de fond de pile
ñ Reconnaissance de grammaires hors-contexte
§ Configuration
‚ Symboles sur le ruban à analyser
‚ Symboles sur la pile
‚ État courant
Automates à pile
Automate à pile
§ À mi-chemin entre l’automate et la machine de Turing
§ Formellement, heptuplet :(Q,Σ,Γ,K, δ,q0,F)
‚ Par défaut, mêmes symboles que pour la machine de Turing
‚ δ:QˆΣˆΓÑQˆΓ˚ : fonction de transition
‚ K PΓ : symbole de fond de pile
ñ Reconnaissance de grammaires hors-contexte
§ Configuration
‚ Symboles sur le ruban à analyser
‚ Symboles sur la pile
‚ État courant
Damien Nouvel (Inalco) Analyseurs 5 / 28
Automates à pile
Automate à pile
§ À mi-chemin entre l’automate et la machine de Turing
§ Formellement, heptuplet :(Q,Σ,Γ,K, δ,q0,F)
‚ Par défaut, mêmes symboles que pour la machine de Turing
‚ δ:QˆΣˆΓÑQˆΓ˚ : fonction de transition
‚ K PΓ : symbole de fond de pile
ñ Reconnaissance de grammaires hors-contexte
§ Configuration
‚ Symboles sur le ruban à analyser
‚ Symboles sur la pile
‚ État courant
Automates à pile
Automate à pile
§ À mi-chemin entre l’automate et la machine de Turing
§ Formellement, heptuplet :(Q,Σ,Γ,K, δ,q0,F)
‚ Par défaut, mêmes symboles que pour la machine de Turing
‚ δ:QˆΣˆΓÑQˆΓ˚ : fonction de transition
‚ K PΓ : symbole de fond de pile
ñ Reconnaissance de grammaires hors-contexte
§ Configuration
‚ Symboles sur le ruban à analyser
‚ Symboles sur la pile
‚ État courant
Damien Nouvel (Inalco) Analyseurs 5 / 28
Automates à pile
Reconnaissance de langage
§ Transition
‚ Entrée
‚ qPQ: état courant
‚ aPΣ: symbole sur le ruban
‚ γPΓ : symbole à dépiler (ouϵ)
‚ Action
‚ qPQ: état dans lequel basculer
‚ γPΓ : symbole à empiler (ouϵ)
‚ Consommer un symbole (déplacer la tête de lecture à droite)
§ Une transition change la configuration
‚ Transition :δ(qi,a, γi) = (qj, γj)
‚ Symbole asur le ruban
‚ Dérivation :(qi,aw, γiα)Ñ(qj,w, γjα)
ñ Objectif :état final et pile vide etentrée vide
Automates à pile
Reconnaissance de langage
§ Transition
‚ Entrée
‚ qPQ: état courant
‚ aPΣ: symbole sur le ruban
‚ γPΓ : symbole à dépiler (ouϵ)
‚ Action
‚ qPQ: état dans lequel basculer
‚ γPΓ : symbole à empiler (ouϵ)
‚ Consommer un symbole (déplacer la tête de lecture à droite)
§ Une transition change la configuration
‚ Transition :δ(qi,a, γi) = (qj, γj)
‚ Symbole asur le ruban
‚ Dérivation :(qi,aw, γiα)Ñ(qj,w, γjα)
ñ Objectif :état final et pile vide etentrée vide
Damien Nouvel (Inalco) Analyseurs 6 / 28
Automates à pile
Reconnaissance de langage
§ Transition
‚ Entrée
‚ qPQ: état courant
‚ aPΣ: symbole sur le ruban
‚ γPΓ : symbole à dépiler (ouϵ)
‚ Action
‚ qPQ: état dans lequel basculer
‚ γPΓ : symbole à empiler (ouϵ)
‚ Consommer un symbole (déplacer la tête de lecture à droite)
§ Une transition change la configuration
‚ Transition :δ(qi,a, γi) = (qj, γj)
‚ Symbole asur le ruban
‚ Dérivation :(qi,aw, γiα)Ñ(qj,w, γjα)
ñ Objectif :état final et pile vide etentrée vide
Automates à pile
Reconnaissance de langage
§ Transition
‚ Entrée
‚ qPQ: état courant
‚ aPΣ: symbole sur le ruban
‚ γPΓ : symbole à dépiler (ouϵ)
‚ Action
‚ qPQ: état dans lequel basculer
‚ γPΓ : symbole à empiler (ouϵ)
‚ Consommer un symbole (déplacer la tête de lecture à droite)
§ Une transition change la configuration
‚ Transition :δ(qi,a, γi) = (qj, γj)
‚ Symbole asur le ruban
‚ Dérivation :(qi,aw, γiα)Ñ(qj,w, γjα)
ñ Objectif :état final et pile vide etentrée vide
Damien Nouvel (Inalco) Analyseurs 6 / 28
Automates à pile
Reconnaissance de langage
§ Transition
‚ Entrée
‚ qPQ: état courant
‚ aPΣ: symbole sur le ruban
‚ γPΓ : symbole à dépiler (ouϵ)
‚ Action
‚ qPQ: état dans lequel basculer
‚ γPΓ : symbole à empiler (ouϵ)
‚ Consommer un symbole (déplacer la tête de lecture à droite)
§ Une transition change la configuration
‚ Transition :δ(qi,a, γi) = (qj, γj)
‚ Symbole asur le ruban
‚ Dérivation :(qi,aw, γiα)Ñ(qj,w, γjα)
ñ Objectif :état final et pile vide etentrée vide
Automates à pile
Exemple
§ Reconnaissance de tanbn,ną0u
‚ Q=tq0,q1,q2u
‚ Γ =tPu
‚ Σ =ta,bu
‚ F=tq2u
‚ δ définie par la table
Q Γ Σ Q Γ
q0 ϵ a q1 P q1 ϵ a q1 P q1 P b q2 ϵ q2 P b q2 ϵ
Damien Nouvel (Inalco) Analyseurs 7 / 28
Automates à pile
Exemple
§ Reconnaissance de tanbn,ną0u
‚ Q=tq0,q1,q2u
‚ Γ =tPu
‚ Σ =ta,bu
‚ F=tq2u
‚ δ définie par la table
Q Γ Σ Q Γ
q0 ϵ a q1 P q1 ϵ a q1 P q1 P b q2 ϵ q2 P b q2 ϵ
Automates à pile
Exemple
§ Reconnaissance des imbrications correctement formées
‚ Uniquement parenthèses et crochets, par exemple [([][()])()]
‚ Définition formelle de l’automate
‚ Configurations pour le mot()[()([])]
‚ Q=tq0u
‚ Γ =tP,Cu
‚ Σ =t(,),[,]u
‚ F=tq0u
‚ δ définie par la table
Q Γ Σ Q Γ
q0 ϵ ( q0 P q0 ϵ [ q0 C q0 P ) q0 ϵ q0 C ] q0 ϵ
Damien Nouvel (Inalco) Analyseurs 8 / 28
Automates à pile
Exemple
§ Reconnaissance des imbrications correctement formées
‚ Uniquement parenthèses et crochets, par exemple [([][()])()]
‚ Définition formelle de l’automate
‚ Configurations pour le mot()[()([])]
‚ Q=tq0u
‚ Γ =tP,Cu
‚ Σ =t(,),[,]u
‚ F=tq0u
‚ δ définie par la table
Q Γ Σ Q Γ
q0 ϵ ( q0 P q0 ϵ [ q0 C q0 P ) q0 ϵ q0 C ] q0 ϵ
Analyse syntaxique LL
Plan
1. Automates à pile 2. Analyse syntaxique LL 3. Analyse syntaxique LR
Damien Nouvel (Inalco) Analyseurs 9 / 28
Analyse syntaxique LL
Analyseur LL : Premiers et Suivants
ñ Analyseur descendant (ou prédictif) ñ LL Left-to-right Leftmost derivation
§ Détermination des non-terminaux annulables
§ Détermination de Premiers(X) =taPΣ|XÑÝ˚ aαu
‚ Initialiser pour tout terminalPremiers(a) =tau
‚ Pour chaque règleXÑX1X2. . .Xn
‚ AjoutPremiers(Xi) à Premiers(X) si X1. . .Xi´1 annulables
§ Détermination de Suivants(X) = taPΣ|SÝÑ˚ αXaβu
‚ InitialiserSuivants(S) =t$u
‚ Pour chaque règleXÑX1X2. . .Xn
‚ AjoutPremiers(Xj) à Suivants(Xi) siXi+1. . .Xj´1 annul.
‚ AjoutSuivants(X) àSuivants(Xi)si Xi+1. . .Xn annulables
Analyse syntaxique LL
Analyseur LL : Premiers et Suivants
ñ Analyseur descendant (ou prédictif) ñ LL Left-to-right Leftmost derivation
§ Détermination des non-terminaux annulables
§ Détermination de Premiers(X) =taPΣ|XÑÝ˚ aαu
‚ Initialiser pour tout terminalPremiers(a) =tau
‚ Pour chaque règleXÑX1X2. . .Xn
‚ AjoutPremiers(Xi) à Premiers(X) si X1. . .Xi´1 annulables
§ Détermination de Suivants(X) = taPΣ|SÝÑ˚ αXaβu
‚ InitialiserSuivants(S) =t$u
‚ Pour chaque règleXÑX1X2. . .Xn
‚ AjoutPremiers(Xj) à Suivants(Xi) siXi+1. . .Xj´1 annul.
‚ AjoutSuivants(X) àSuivants(Xi)si Xi+1. . .Xn annulables
Damien Nouvel (Inalco) Analyseurs 10 / 28
Analyse syntaxique LL
Analyseur LL : Premiers et Suivants
ñ Analyseur descendant (ou prédictif) ñ LL Left-to-right Leftmost derivation
§ Détermination des non-terminaux annulables
§ Détermination de Premiers(X) =taPΣ|XÑÝ˚ aαu
‚ Initialiser pour tout terminalPremiers(a) =tau
‚ Pour chaque règleXÑX1X2. . .Xn
‚ AjoutPremiers(Xi) à Premiers(X) si X1. . .Xi´1 annulables
§ Détermination de Suivants(X) = taPΣ|SÝÑ˚ αXaβu
‚ InitialiserSuivants(S) =t$u
‚ Pour chaque règleXÑX1X2. . .Xn
‚ AjoutPremiers(Xj) à Suivants(Xi) siXi+1. . .Xj´1 annul.
‚ AjoutSuivants(X) àSuivants(Xi)si Xi+1. . .Xn annulables
Analyse syntaxique LL
Analyseur LL : Premiers et Suivants
ñ Analyseur descendant (ou prédictif) ñ LL Left-to-right Leftmost derivation
§ Détermination des non-terminaux annulables
§ Détermination de Premiers(X) =taPΣ|XÑÝ˚ aαu
‚ Initialiser pour tout terminalPremiers(a) =tau
‚ Pour chaque règleXÑX1X2. . .Xn
‚ AjoutPremiers(Xi) à Premiers(X) si X1. . .Xi´1 annulables
§ Détermination de Suivants(X) = taPΣ|SÝÑ˚ αXaβu
‚ InitialiserSuivants(S) =t$u
‚ Pour chaque règleXÑX1X2. . .Xn
‚ AjoutPremiers(Xj) à Suivants(Xi) siXi+1. . .Xj´1 annul.
‚ AjoutSuivants(X) àSuivants(Xi)si Xi+1. . .Xn annulables
Damien Nouvel (Inalco) Analyseurs 10 / 28
Analyse syntaxique LL
Analyseur LL : table et analyse
§ Création d’une table T dansΓˆΣ
‚ Pour chaque règleXÑα
‚ Pour chaqueaPPremiers(α)ajouterXÑαàT[X,a]
‚ Siαannulable, pouraPSuivants(X)ajouterXÑαàT[X,a]
§ Fonctionnement de l’automate à pile
‚ Au départ : la pile contientSK, ajouter$ à la chaîne
‚ Pour chaque configuration avecasur le ruban etXsur la pile ñ SiXest un terminal et que X=a
‚ DépilerXet avancer sur l’entrée
‚ Sia=Kl’analyse est terminée ñ SiXest un non-terminal
‚ TrouverT[X,a] =XÑα
‚ DépilerX
‚ Empilerα(dont le premier élément est en haut de pile)
Analyse syntaxique LL
Analyseur LL : table et analyse
§ Création d’une table T dansΓˆΣ
‚ Pour chaque règleXÑα
‚ Pour chaqueaPPremiers(α)ajouterXÑαàT[X,a]
‚ Siαannulable, pouraPSuivants(X)ajouterXÑαàT[X,a]
§ Fonctionnement de l’automate à pile
‚ Au départ : la pile contientSK, ajouter$ à la chaîne
‚ Pour chaque configuration avecasur le ruban etXsur la pile ñ SiXest un terminal et que X=a
‚ DépilerXet avancer sur l’entrée
‚ Sia=Kl’analyse est terminée ñ SiXest un non-terminal
‚ TrouverT[X,a] =XÑα
‚ DépilerX
‚ Empilerα(dont le premier élément est en haut de pile)
Damien Nouvel (Inalco) Analyseurs 11 / 28
Analyse syntaxique LL
Analyseur LL : table et analyse
§ Création d’une table T dansΓˆΣ
‚ Pour chaque règleXÑα
‚ Pour chaqueaPPremiers(α)ajouterXÑαàT[X,a]
‚ Siαannulable, pouraPSuivants(X)ajouterXÑαàT[X,a]
§ Fonctionnement de l’automate à pile
‚ Au départ : la pile contientSK, ajouter$ à la chaîne
‚ Pour chaque configuration avecasur le ruban etXsur la pile ñ SiXest un terminal et que X=a
‚ DépilerXet avancer sur l’entrée
‚ Sia=Kl’analyse est terminée ñ SiXest un non-terminal
‚ TrouverT[X,a] =XÑα
‚ DépilerX
‚ Empilerα(dont le premier élément est en haut de pile)
Analyse syntaxique LL
Analyseur LL : table et analyse
§ Création d’une table T dansΓˆΣ
‚ Pour chaque règleXÑα
‚ Pour chaqueaPPremiers(α)ajouterXÑαàT[X,a]
‚ Siαannulable, pouraPSuivants(X)ajouterXÑαàT[X,a]
§ Fonctionnement de l’automate à pile
‚ Au départ : la pile contientSK, ajouter$ à la chaîne
‚ Pour chaque configuration avecasur le ruban etXsur la pile ñ SiXest un terminal et que X=a
‚ DépilerXet avancer sur l’entrée
‚ Sia=Kl’analyse est terminée ñ SiXest un non-terminal
‚ TrouverT[X,a] =XÑα
‚ DépilerX
‚ Empilerα(dont le premier élément est en haut de pile)
Damien Nouvel (Inalco) Analyseurs 11 / 28
Analyse syntaxique LL
Analyseur LL : table et analyse
§ Création d’une table T dansΓˆΣ
‚ Pour chaque règleXÑα
‚ Pour chaqueaPPremiers(α)ajouterXÑαàT[X,a]
‚ Siαannulable, pouraPSuivants(X)ajouterXÑαàT[X,a]
§ Fonctionnement de l’automate à pile
‚ Au départ : la pile contientSK, ajouter$ à la chaîne
‚ Pour chaque configuration avecasur le ruban etXsur la pile
ñ SiXest un terminal et que X=a
‚ DépilerXet avancer sur l’entrée
‚ Sia=Kl’analyse est terminée ñ SiXest un non-terminal
‚ TrouverT[X,a] =XÑα
‚ DépilerX
‚ Empilerα(dont le premier élément est en haut de pile)
Analyse syntaxique LL
Analyseur LL : table et analyse
§ Création d’une table T dansΓˆΣ
‚ Pour chaque règleXÑα
‚ Pour chaqueaPPremiers(α)ajouterXÑαàT[X,a]
‚ Siαannulable, pouraPSuivants(X)ajouterXÑαàT[X,a]
§ Fonctionnement de l’automate à pile
‚ Au départ : la pile contientSK, ajouter$ à la chaîne
‚ Pour chaque configuration avecasur le ruban etXsur la pile ñ SiXest un terminal et que X=a
‚ DépilerXet avancer sur l’entrée
‚ Sia=Kl’analyse est terminée
ñ SiXest un non-terminal
‚ TrouverT[X,a] =XÑα
‚ DépilerX
‚ Empilerα(dont le premier élément est en haut de pile)
Damien Nouvel (Inalco) Analyseurs 11 / 28
Analyse syntaxique LL
Analyseur LL : table et analyse
§ Création d’une table T dansΓˆΣ
‚ Pour chaque règleXÑα
‚ Pour chaqueaPPremiers(α)ajouterXÑαàT[X,a]
‚ Siαannulable, pouraPSuivants(X)ajouterXÑαàT[X,a]
§ Fonctionnement de l’automate à pile
‚ Au départ : la pile contientSK, ajouter$ à la chaîne
‚ Pour chaque configuration avecasur le ruban etXsur la pile ñ SiXest un terminal et que X=a
‚ DépilerXet avancer sur l’entrée
‚ Sia=Kl’analyse est terminée ñ SiXest un non-terminal
‚ TrouverT[X,a] =XÑα
‚ DépilerX
‚ Empilerα(dont le premier élément est en haut de pile)
Analyse syntaxique LL
Exercice
§ Grammaire des fonctions mathématiques (virgule notée v)
‚ SÑN(P)
‚ NÑf|g
‚ PÑVA
‚ VÑx|y
‚ AÑvP|ϵ
§ Annulables :tAu
§ Premiers et suivants
‚ Premiers(S) =tf,gu,Suivants(S) =t$u
‚ Premiers(N) =tf,gu,Suivants(N) =t(u
‚ Premiers(P) =tx,yu,Suivants(P) =t)u
‚ Premiers(V) =tx,yu,Suivants(V) =tv,)u
‚ Premiers(A) =tvu,Suivants(A) =t)u
Damien Nouvel (Inalco) Analyseurs 12 / 28
Analyse syntaxique LL
Exercice
§ Grammaire des fonctions mathématiques (virgule notée v)
‚ SÑN(P)
‚ NÑf|g
‚ PÑVA
‚ VÑx|y
‚ AÑvP|ϵ
§ Annulables :tAu
§ Premiers et suivants
‚ Premiers(S) =tf,gu,Suivants(S) =t$u
‚ Premiers(N) =tf,gu,Suivants(N) =t(u
‚ Premiers(P) =tx,yu,Suivants(P) =t)u
‚ Premiers(V) =tx,yu,Suivants(V) =tv,)u
‚ Premiers(A) =tvu,Suivants(A) =t)u
Analyse syntaxique LL
Exercice
§ Grammaire des fonctions mathématiques (virgule notée v)
‚ SÑN(P)
‚ NÑf|g
‚ PÑVA
‚ VÑx|y
‚ AÑvP|ϵ
§ Annulables :tAu
§ Premiers et suivants
‚ Premiers(S) =tf,gu,Suivants(S) =t$u
‚ Premiers(N) =tf,gu,Suivants(N) =t(u
‚ Premiers(P) =tx,yu,Suivants(P) =t)u
‚ Premiers(V) =tx,yu,Suivants(V) =tv,)u
‚ Premiers(A) =tvu,Suivants(A) =t)u
Damien Nouvel (Inalco) Analyseurs 12 / 28
Analyse syntaxique LL
Exercice
§ Table LL
( ) f g x y , $
S SÑN(P) SÑN(P)
N NÑf NÑg
P PÑVA PÑVA
V VÑx VÑy
A AÑϵ AÑ,P
§ Faire les analyses pour
‚ f(x)
‚ f(xvyvx) (ouf(x,y,x)
Analyse syntaxique LL
Exercice
§ Chiffres binaires positifs ou négatifs à décimales
‚ Grammaire
‚ SÑTCNV
‚ TÑ+| ´ |ϵ
‚ NÑCN|ϵ
‚ CÑ0|1
‚ VÑ.N|ϵ
‚ Annulables :tT,N,Vu
‚ Premiers et suivants
‚ Premiers(S) =t+,´,0,1u,Suivants(S) =t$u
‚ Premiers(T) =t+,´u, Suivants(T) =t0,1u
‚ Premiers(N) =t0,1u,Suivants(N) =t.,$u
‚ Premiers(C) =t0,1u,Suivants(C) =t0,1, .,$u
‚ Premiers(V) =t.u,Suivants(V) =t$u
Damien Nouvel (Inalco) Analyseurs 14 / 28
Analyse syntaxique LL
Exercice
§ Chiffres binaires positifs ou négatifs à décimales
‚ Grammaire
‚ SÑTCNV
‚ TÑ+| ´ |ϵ
‚ NÑCN|ϵ
‚ CÑ0|1
‚ VÑ.N|ϵ
‚ Annulables :tT,N,Vu
‚ Premiers et suivants
‚ Premiers(S) =t+,´,0,1u,Suivants(S) =t$u
‚ Premiers(T) =t+,´u, Suivants(T) =t0,1u
‚ Premiers(N) =t0,1u,Suivants(N) =t.,$u
‚ Premiers(C) =t0,1u,Suivants(C) =t0,1, .,$u
‚ Premiers(V) =t.u,Suivants(V) =t$u
Analyse syntaxique LL
Exercice
§ Chiffres binaires positifs ou négatifs à décimales
‚ Grammaire
‚ SÑTCNV
‚ TÑ+| ´ |ϵ
‚ NÑCN|ϵ
‚ CÑ0|1
‚ VÑ.N|ϵ
‚ Annulables :tT,N,Vu
‚ Premiers et suivants
‚ Premiers(S) =t+,´,0,1u,Suivants(S) =t$u
‚ Premiers(T) =t+,´u, Suivants(T) =t0,1u
‚ Premiers(N) =t0,1u,Suivants(N) =t.,$u
‚ Premiers(C) =t0,1u,Suivants(C) =t0,1, .,$u
‚ Premiers(V) =t.u,Suivants(V) =t$u
Damien Nouvel (Inalco) Analyseurs 14 / 28
Analyse syntaxique LL
Exercice
§ Chiffres binaires positifs ou négatifs à décimales
‚ Grammaire
‚ SÑTCNV
‚ TÑ+| ´ |ϵ
‚ NÑCN|ϵ
‚ CÑ0|1
‚ VÑ.N|ϵ
‚ Annulables :tT,N,Vu
‚ Premiers et suivants
‚ Premiers(S) =t+,´,0,1u,Suivants(S) =t$u
‚ Premiers(T) =t+,´u,Suivants(T) =t0,1u
‚ Premiers(N) =t0,1u, Suivants(N) =t.,$u
‚ Premiers(C) =t0,1u,Suivants(C) =t0,1, .,$u
‚ Premiers(V) =t.u,Suivants(V) =t$u
Analyse syntaxique LL
Exercice
§ Table LL
+ ´ 0 1 . $
S SÑTCNV SÑTCNV SÑTCNV SÑTCNV
T TÑ+ TÑ ´ TÑϵ TÑϵ
N NÑCN NÑCN NÑϵ NÑϵ
C CÑ0 CÑ1
V VÑ.N VÑϵ
§ Faire les analyses pour
‚ ´1001
‚ 110.110
‚ +0.01
‚ 1.001
Damien Nouvel (Inalco) Analyseurs 15 / 28
Analyse syntaxique LL
Inconvénients de l’analyse LL
§ Déterministe
‚ Selon la pile et le ruban, un ou plusieurs choix
‚ Comment choisir une règle s’il y a plusieurs choix ?
ñ Analyses LL(k) pour déterminer selonkterminaux
Analyse syntaxique LL
Inconvénients de l’analyse LL
§ Déterministe
‚ Selon la pile et le ruban, un ou plusieurs choix
‚ Comment choisir une règle s’il y a plusieurs choix ? ñ Analyses LL(k) pour déterminer selonkterminaux
Damien Nouvel (Inalco) Analyseurs 16 / 28
Analyse syntaxique LR
Plan
1. Automates à pile 2. Analyse syntaxique LL 3. Analyse syntaxique LR
Analyse syntaxique LR
Principes généraux
ñ Analyseur ascendant
ñ LR Left-to-right Rightmost derivation
§ Étatsde l’automate
‚ Avancement dans l’analyse
‚ Simultané pour plusieurs règles
§ Actions possibles
‚ Shift (décalage)s
ñ Un symbole d’entrée est consommé
‚ Reduce (réduction)r
ñ Une règle de grammaire a été utilisée
‚ Accepter la chaîne en entréeacc
Damien Nouvel (Inalco) Analyseurs 18 / 28
Analyse syntaxique LR
Principes généraux
ñ Analyseur ascendant
ñ LR Left-to-right Rightmost derivation
§ Étatsde l’automate
‚ Avancement dans l’analyse
‚ Simultané pour plusieurs règles
§ Actions possibles
‚ Shift (décalage)s
ñ Un symbole d’entrée est consommé
‚ Reduce (réduction)r
ñ Une règle de grammaire a été utilisée
‚ Accepter la chaîne en entréeacc
Analyse syntaxique LR
Principes généraux
ñ Analyseur ascendant
ñ LR Left-to-right Rightmost derivation
§ Étatsde l’automate
‚ Avancement dans l’analyse
‚ Simultané pour plusieurs règles
§ Actions possibles
‚ Shift (décalage)s
ñ Un symbole d’entrée est consommé
‚ Reduce (réduction)r
ñ Une règle de grammaire a été utilisée
‚ Accepter la chaîne en entréeacc
Damien Nouvel (Inalco) Analyseurs 18 / 28
Analyse syntaxique LR
Principes généraux
ñ Analyseur ascendant
ñ LR Left-to-right Rightmost derivation
§ Étatsde l’automate
‚ Avancement dans l’analyse
‚ Simultané pour plusieurs règles
§ Actions possibles
‚ Shift (décalage)s
ñ Un symbole d’entrée est consommé
‚ Reduce (réduction)r
ñ Une règle de grammaire a été utilisée
‚ Accepter la chaîne en entréeacc
Analyse syntaxique LR
Principes généraux
ñ Analyseur ascendant
ñ LR Left-to-right Rightmost derivation
§ Étatsde l’automate
‚ Avancement dans l’analyse
‚ Simultané pour plusieurs règles
§ Actions possibles
‚ Shift (décalage)s
ñ Un symbole d’entrée est consommé
‚ Reduce (réduction)r
ñ Une règle de grammaire a été utilisée
‚ Accepter la chaîne en entréeacc
Damien Nouvel (Inalco) Analyseurs 18 / 28
Analyse syntaxique LR
Items et ensembles d’items
§ Augmentation de grammaire (nouveau symbole de départ)
§ Item
‚ Une règle et l’état d’avancement pour cette règle
‚ Utilisation du point ¨
‚ Exemple :XÑα¨β
§ Détermination d’ ensemble d’items
‚ Noyau: ce que l’analyseur doit consommer
‚ Exemple :XÑα¨Yβ
‚ Fermeture: règles commençant par Y (non-terminal)
‚ Exemple :YÑ ¨γ
‚ Transition: avancée dans l’analyse
‚ Exemple :Transition(XÑα¨Yβ,Y) =XÑαY¨β ñ Numérotation des ensembles :Transition(i,Y) =j
ñ Calcul de toutes les possibilités par fermeture et transition
Analyse syntaxique LR
Items et ensembles d’items
§ Augmentation de grammaire (nouveau symbole de départ)
§ Item
‚ Une règle et l’état d’avancement pour cette règle
‚ Utilisation du point ¨
‚ Exemple :XÑα¨β
§ Détermination d’ ensemble d’items
‚ Noyau: ce que l’analyseur doit consommer
‚ Exemple :XÑα¨Yβ
‚ Fermeture: règles commençant par Y (non-terminal)
‚ Exemple :YÑ ¨γ
‚ Transition: avancée dans l’analyse
‚ Exemple :Transition(XÑα¨Yβ,Y) =XÑαY¨β ñ Numérotation des ensembles :Transition(i,Y) =j
ñ Calcul de toutes les possibilités par fermeture et transition
Damien Nouvel (Inalco) Analyseurs 19 / 28
Analyse syntaxique LR
Items et ensembles d’items
§ Augmentation de grammaire (nouveau symbole de départ)
§ Item
‚ Une règle et l’état d’avancement pour cette règle
‚ Utilisation du point ¨
‚ Exemple :XÑα¨β
§ Détermination d’ ensemble d’items
‚ Noyau: ce que l’analyseur doit consommer
‚ Exemple :XÑα¨Yβ
‚ Fermeture: règles commençant par Y (non-terminal)
‚ Exemple :YÑ ¨γ
‚ Transition: avancée dans l’analyse
‚ Exemple :Transition(XÑα¨Yβ,Y) =XÑαY¨β ñ Numérotation des ensembles :Transition(i,Y) =j
ñ Calcul de toutes les possibilités par fermeture et transition
Analyse syntaxique LR
Items et ensembles d’items
§ Augmentation de grammaire (nouveau symbole de départ)
§ Item
‚ Une règle et l’état d’avancement pour cette règle
‚ Utilisation du point ¨
‚ Exemple :XÑα¨β
§ Détermination d’ ensemble d’items
‚ Noyau: ce que l’analyseur doit consommer
‚ Exemple :XÑα¨Yβ
‚ Fermeture: règles commençant par Y (non-terminal)
‚ Exemple :YÑ ¨γ
‚ Transition: avancée dans l’analyse
‚ Exemple :Transition(XÑα¨Yβ,Y) =XÑαY¨β ñ Numérotation des ensembles :Transition(i,Y) =j
ñ Calcul de toutes les possibilités par fermeture et transition
Damien Nouvel (Inalco) Analyseurs 19 / 28
Analyse syntaxique LR
Items et ensembles d’items
§ Augmentation de grammaire (nouveau symbole de départ)
§ Item
‚ Une règle et l’état d’avancement pour cette règle
‚ Utilisation du point ¨
‚ Exemple :XÑα¨β
§ Détermination d’ ensemble d’items
‚ Noyau: ce que l’analyseur doit consommer
‚ Exemple :XÑα¨Yβ
‚ Fermeture: règles commençant par Y (non-terminal)
‚ Exemple :YÑ ¨γ
‚ Transition: avancée dans l’analyse
‚ Exemple :Transition(XÑα¨Yβ,Y) =XÑαY¨β ñ Numérotation des ensembles :Transition(i,Y) =j
ñ Calcul de toutes les possibilités par fermeture et transition
Analyse syntaxique LR
Items et ensembles d’items
§ Augmentation de grammaire (nouveau symbole de départ)
§ Item
‚ Une règle et l’état d’avancement pour cette règle
‚ Utilisation du point ¨
‚ Exemple :XÑα¨β
§ Détermination d’ ensemble d’items
‚ Noyau: ce que l’analyseur doit consommer
‚ Exemple :XÑα¨Yβ
‚ Fermeture: règles commençant par Y (non-terminal)
‚ Exemple :YÑ ¨γ
‚ Transition: avancée dans l’analyse
‚ Exemple :Transition(XÑα¨Yβ,Y) =XÑαY¨β
ñ Numérotation des ensembles :Transition(i,Y) =j
ñ Calcul de toutes les possibilités par fermeture et transition
Damien Nouvel (Inalco) Analyseurs 19 / 28
Analyse syntaxique LR
Items et ensembles d’items
§ Augmentation de grammaire (nouveau symbole de départ)
§ Item
‚ Une règle et l’état d’avancement pour cette règle
‚ Utilisation du point ¨
‚ Exemple :XÑα¨β
§ Détermination d’ ensemble d’items
‚ Noyau: ce que l’analyseur doit consommer
‚ Exemple :XÑα¨Yβ
‚ Fermeture: règles commençant par Y (non-terminal)
‚ Exemple :YÑ ¨γ
‚ Transition: avancée dans l’analyse
‚ Exemple :Transition(XÑα¨Yβ,Y) =XÑαY¨β ñ Numérotation des ensembles :Transition(i,Y) =j
ñ Calcul de toutes les possibilités par fermeture et transition
Analyse syntaxique LR
Items et ensembles d’items
§ Augmentation de grammaire (nouveau symbole de départ)
§ Item
‚ Une règle et l’état d’avancement pour cette règle
‚ Utilisation du point ¨
‚ Exemple :XÑα¨β
§ Détermination d’ ensemble d’items
‚ Noyau: ce que l’analyseur doit consommer
‚ Exemple :XÑα¨Yβ
‚ Fermeture: règles commençant par Y (non-terminal)
‚ Exemple :YÑ ¨γ
‚ Transition: avancée dans l’analyse
‚ Exemple :Transition(XÑα¨Yβ,Y) =XÑαY¨β ñ Numérotation des ensembles :Transition(i,Y) =j
ñ Calcul de toutes les possibilités par fermeture et transition
Damien Nouvel (Inalco) Analyseurs 19 / 28
Analyse syntaxique LR
Exemple : fermeture et transition
§ Fonctions récursives (n un nom de fonction,c un chiffre)
‚ FÑn(E)
‚ EÑE+c|F|c
§ Augmentation (SÑF)
§ Ensembles d’items
‚ 0 :tSÑ ¨Fu Y tFÑ ¨n(E)u
‚ 1 :tSÑF¨u
‚ 2 :tFÑn¨(E)u
‚ 3 :tFÑn(¨E)u Y tEÑ ¨E+c,EÑ ¨F,FÑ ¨n(E),EÑ ¨cu
‚ 4 :tFÑn(E¨),EÑE¨+cu
‚ 5 :tEÑF¨u
‚ 6 :tEÑc¨u
‚ 7 :tFÑn(E)¨u
‚ 8 :tEÑE+¨cu
‚ 9 :tEÑE+c¨u
Analyse syntaxique LR
Exemple : fermeture et transition
§ Fonctions récursives (n un nom de fonction,c un chiffre)
‚ FÑn(E)
‚ EÑE+c|F|c
§ Augmentation (SÑF)
§ Ensembles d’items
‚ 0 :tSÑ ¨Fu Y tFÑ ¨n(E)u
‚ 1 :tSÑF¨u
‚ 2 :tFÑn¨(E)u
‚ 3 :tFÑn(¨E)u Y tEÑ ¨E+c,EÑ ¨F,FÑ ¨n(E),EÑ ¨cu
‚ 4 :tFÑn(E¨),EÑE¨+cu
‚ 5 :tEÑF¨u
‚ 6 :tEÑc¨u
‚ 7 :tFÑn(E)¨u
‚ 8 :tEÑE+¨cu
‚ 9 :tEÑE+c¨u
Damien Nouvel (Inalco) Analyseurs 20 / 28
Analyse syntaxique LR
Exemple : fermeture et transition
§ Fonctions récursives (n un nom de fonction,c un chiffre)
‚ FÑn(E)
‚ EÑE+c|F|c
§ Augmentation (SÑF)
§ Ensembles d’items
‚ 0 :tSÑ ¨Fu Y tFÑ ¨n(E)u
‚ 1 :tSÑF¨u
‚ 2 :tFÑn¨(E)u
‚ 3 :tFÑn(¨E)u Y tEÑ ¨E+c,EÑ ¨F,FÑ ¨n(E),EÑ ¨cu
‚ 4 :tFÑn(E¨),EÑE¨+cu
‚ 5 :tEÑF¨u
‚ 6 :tEÑc¨u
‚ 7 :tFÑn(E)¨u
‚ 8 :tEÑE+¨cu
‚ 9 :tEÑE+c¨u
Analyse syntaxique LR
Construction de la table LR
§ Attribution d’un état (entier) pour chaque ensemble d’items
§ Création d’une table Action dans CˆΣ
§ Pour chaque item de l’ensemble d’itemsi
‚ Si l’item est de la forme XÑα¨Yβ (Yterminal ou non) et queTransition(i,Y) =j
ñ Ajouters:j dans la tableAction[i,Y]
‚ Si l’item est de la forme XÑα¨ ñ Ajouterr:XÑα sur la ligne i
‚ Si l’item est de la forme SÑα¨ ñ Ajouteracc dansAction[i,$]
Damien Nouvel (Inalco) Analyseurs 21 / 28
Analyse syntaxique LR
Construction de la table LR
§ Attribution d’un état (entier) pour chaque ensemble d’items
§ Création d’une table Action dans CˆΣ
§ Pour chaque item de l’ensemble d’itemsi
‚ Si l’item est de la forme XÑα¨Yβ (Yterminal ou non) et queTransition(i,Y) =j
ñ Ajouters:j dans la tableAction[i,Y]
‚ Si l’item est de la forme XÑα¨ ñ Ajouterr:XÑα sur la ligne i
‚ Si l’item est de la forme SÑα¨ ñ Ajouteracc dansAction[i,$]
Analyse syntaxique LR
Construction de la table LR
§ Attribution d’un état (entier) pour chaque ensemble d’items
§ Création d’une table Action dans CˆΣ
§ Pour chaque item de l’ensemble d’itemsi
‚ Si l’item est de la forme XÑα¨Yβ (Yterminal ou non) et queTransition(i,Y) =j
ñ Ajouters:j dans la tableAction[i,Y]
‚ Si l’item est de la forme XÑα¨
ñ Ajouterr:XÑα sur la ligne i
‚ Si l’item est de la forme SÑα¨ ñ Ajouteracc dansAction[i,$]
Damien Nouvel (Inalco) Analyseurs 21 / 28
Analyse syntaxique LR
Construction de la table LR
§ Attribution d’un état (entier) pour chaque ensemble d’items
§ Création d’une table Action dans CˆΣ
§ Pour chaque item de l’ensemble d’itemsi
‚ Si l’item est de la forme XÑα¨Yβ (Yterminal ou non) et queTransition(i,Y) =j
ñ Ajouters:j dans la tableAction[i,Y]
‚ Si l’item est de la forme XÑα¨
ñ Ajouterr:XÑα sur la ligne i
‚ Si l’item est de la forme SÑα¨
ñ Ajouteracc dansAction[i,$]
Analyse syntaxique LR
Exemple : construction de la table
§ Table LR
n ( ) + c $ E F
0 s: 2 1
1 r:SÑF acc
2 s: 3
3 s: 2 s: 6 4 5
4 s: 7 s: 8
5 r:EÑF
6 r:EÑc
7 r:FÑn(E)
8 s: 9
9 r:EÑE+c
Damien Nouvel (Inalco) Analyseurs 22 / 28
Analyse syntaxique LR
Déroulement de l’analyse
§ Initialisation
‚ Calculer les ensembles d’items
‚ Construire la table LR
‚ Ajouter$à la fin de la chaîne sur le ruban
‚ Initialiser la pile àK0(avec 0 l’état de SÑ ¨α)
§ Analyseselon l’état courant et le symbole sur le ruban
‚ s:i
‚ Empiler l’état courant
‚ Consommer un symbole
‚ EmpilerAction[i,a](ihaut de pile, aprochain symbole)
‚ r:R
‚ Dépiler le nombre de symboles de la partie droite deR
‚ EmpilerAction[i,X]avecihaut de pile etR:XÑα)
‚ acc
‚ Accepter la chaîne
Analyse syntaxique LR
Déroulement de l’analyse
§ Initialisation
‚ Calculer les ensembles d’items
‚ Construire la table LR
‚ Ajouter$à la fin de la chaîne sur le ruban
‚ Initialiser la pile àK0(avec 0 l’état de SÑ ¨α)
§ Analyseselon l’état courant et le symbole sur le ruban
‚ s:i
‚ Empiler l’état courant
‚ Consommer un symbole
‚ EmpilerAction[i,a](ihaut de pile, aprochain symbole)
‚ r:R
‚ Dépiler le nombre de symboles de la partie droite deR
‚ EmpilerAction[i,X]avecihaut de pile etR:XÑα)
‚ acc
‚ Accepter la chaîne
Damien Nouvel (Inalco) Analyseurs 23 / 28
Analyse syntaxique LR
Déroulement de l’analyse
§ Initialisation
‚ Calculer les ensembles d’items
‚ Construire la table LR
‚ Ajouter$à la fin de la chaîne sur le ruban
‚ Initialiser la pile àK0(avec 0 l’état de SÑ ¨α)
§ Analyseselon l’état courant et le symbole sur le ruban
‚ s:i
‚ Empiler l’état courant
‚ Consommer un symbole
‚ EmpilerAction[i,a](ihaut de pile, aprochain symbole)
‚ r:R
‚ Dépiler le nombre de symboles de la partie droite deR
‚ EmpilerAction[i,X]avecihaut de pile etR:XÑα)
‚ acc
‚ Accepter la chaîne
Analyse syntaxique LR
Déroulement de l’analyse
§ Initialisation
‚ Calculer les ensembles d’items
‚ Construire la table LR
‚ Ajouter$à la fin de la chaîne sur le ruban
‚ Initialiser la pile àK0(avec 0 l’état de SÑ ¨α)
§ Analyseselon l’état courant et le symbole sur le ruban
‚ s:i
‚ Empiler l’état courant
‚ Consommer un symbole
‚ EmpilerAction[i,a](ihaut de pile, aprochain symbole)
‚ r:R
‚ Dépiler le nombre de symboles de la partie droite deR
‚ EmpilerAction[i,X]avecihaut de pile etR:XÑα)
‚ acc
‚ Accepter la chaîne
Damien Nouvel (Inalco) Analyseurs 23 / 28