• Aucun résultat trouvé

Analyseurs syntaxiques

N/A
N/A
Protected

Academic year: 2022

Partager "Analyseurs syntaxiques"

Copied!
76
0
0

Texte intégral

(1)

Analyseurs syntaxiques

Damien Nouvel

(2)

Automates à pile

Plan

1. Automates à pile

2. Analyse syntaxique LL 3. Analyse syntaxique LR

Damien Nouvel (Inalco) Analyseurs 2 / 28

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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 ϵ

(20)

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

(21)

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 ϵ

(22)

Analyse syntaxique LL

Plan

1. Automates à pile 2. Analyse syntaxique LL 3. Analyse syntaxique LR

Damien Nouvel (Inalco) Analyseurs 9 / 28

(23)

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ÑÝ˚ 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

(24)

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ÑÝ˚ 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

(25)

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ÑÝ˚ 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

(26)

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ÑÝ˚ 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

(27)

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)

(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)

Damien Nouvel (Inalco) Analyseurs 11 / 28

(29)

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)

(30)

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

(31)

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)

(32)

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

(33)

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)

(34)

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

(35)

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

(36)

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

(37)

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)

(38)

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

(39)

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

(40)

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

(41)

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

(42)

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

(43)

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

(44)

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

(45)

Analyse syntaxique LR

Plan

1. Automates à pile 2. Analyse syntaxique LL 3. Analyse syntaxique LR

(46)

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

(47)

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

(48)

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

(49)

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

(50)

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

(51)

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Ñα¨

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

(52)

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Ñα¨

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

(53)

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Ñα¨

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

(54)

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Ñα¨

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

(55)

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Ñα¨

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

(56)

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Ñα¨

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

(57)

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Ñα¨

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

(58)

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Ñα¨

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

(59)

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

(60)

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

(61)

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

(62)

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Ñα¨ (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

(63)

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Ñα¨ (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,$]

(64)

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Ñα¨ (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

(65)

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Ñα¨ (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,$]

(66)

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

(67)

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

(68)

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

(69)

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

(70)

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

Références

Documents relatifs

Analyse syntaxique LR.1. Analyse

La pile est form ´ee de paires d’un ´etat et d’une valeur s ´emantique dont le type d ´epend du non-terminal auquel elle est associ ´ee... Introduction Un automate Implantation en

- Il est possible de généraliser l’analyse LL(1) à l’analyse LL(k), pour un entier k fixé : un analyseur LL(k) prédit une production en se basant sur le symbole au sommet de

une part des classes moyennes voient les lieux de consommation privés comme des îlots de sécurité, les autres classes moyennes et les classes modestes également

Pour un processus de combustion optimisé, la mesure fiable de lʼoxygène est tout aussi impor- tante que la surveillance des émissions.. Dans lʼune des applications les plus rudes

Plusieurs raisons sont avancées dans cet article pour défendre l’hypothèse que les langues des signes sont des objets linguistiques du plus haut intérêt pour appréhender et

Les analyseurs de métaux traces en ligne de la série EZ6000 sont basés sur la technologie de voltamétrie par redissolution, une technique analytique sensible qui peut

On remar- quera qu'un analyseur est engendré par ses éléments multilinéaires si et seulement si toute fonction r admet une multilinéarisée (déf.. LOIS DE GROUPES ET ANALYSEURS.