Analyseurs syntaxiques

Transcription

Analyseurs syntaxiques
Analyseurs syntaxiques
Damien Nouvel
Damien Nouvel (Inalco)
Analyseurs
1 / 28
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
Damien Nouvel (Inalco)
Analyseurs
3 / 28
Automates à pile
Machine de Turing
§
Formellement, heptuplet : (Q, Γ, b, Σ, δ, q0 , F)
•
•
•
•
•
•
•
Q : ensemble des états
Γ : symboles terminaux et non-terminaux
b P Γ : symbole blanc
Σ Ď Γztbu : symboles terminaux
δ : Q ˆ Γ Ñ Q ˆ Γ ˆ tG, Du : fonction de transition
q0 P Q : é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
Automate à pile
§
§
À mi-chemin entre l’automate et la machine de Turing
Formellement, heptuplet : (Q, Σ, Γ, δ, γ0 , q0 , F)
•
•
•
•
•
Γ : symboles de la pile
γ0 P Γ : symbole de fond de pile
δ : Q ˆ Σ ˆ Γ Ñ Q ˆ Γ˚ : fonction de transition
q0 P Q : état initial
F Ď Q : ensemble de états finaux
ñ Reconnaissance de grammaires hors-contexte
§ Configuration
•
•
•
•
Symboles sur le ruban
Position de la tête de lecture
État courant
Symboles sur la pile
Damien Nouvel (Inalco)
Analyseurs
5 / 28
Automates à pile
Reconnaissance de langage
§
Transition
• Entrée
• q P Q : état courant
• a P Σ : symbole sur le ruban
• γ P Γ : symbole à dépiler (ou ϵ)
• Action
• q P Q : état dans lequel basculer
• γ P Γ : symbole à empiler (ou ϵ)
• Déplacer la tête de lecture à droite
§
Une transition change la configuration
• Transition : δ(qi , a, γi ) = (qj , γj )
• Symbole a sur le ruban
• Dérivation : (qi , aw, γi α) Ñ (qj , w, γj α)
ñ État final et/ou pile vide et/ou entrée consommée
Damien Nouvel (Inalco)
Analyseurs
6 / 28
Automates à pile
Exemple
§
Reconnaissance de tan bn , n ą 0u
•
•
•
•
•
Q = tq0 , q1 , q2 u
Γ = tPu
Σ = ta, bu
F = tq2 u
δ définie par la table
Q
q0
q1
q1
q2
Damien Nouvel (Inalco)
Γ
ϵ
ϵ
P
P
Σ
a
a
b
b
Analyseurs
Q
q1
q1
q2
q2
Γ
P
P
ϵ
ϵ
7 / 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 = tq0 u
Γ = tP, Cu
Σ = t(, ), [, ]u
F = tq0 u
δ définie par la table
Q
q0
q0
q0
q0
Damien Nouvel (Inalco)
Γ
ϵ
ϵ
P
C
Σ
(
[
)
]
Analyseurs
Q
q0
q0
q0
q0
Γ
P
C
ϵ
ϵ
8 / 28
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) = ta P Σ|X Ñ
Ý aαu
• Initialiser pour tout terminal Premiers(a) = tau
• Pour chaque règle X Ñ X1 X2 . . . Xn
• Ajout Premiers(Xi ) à Premiers(X) si X1 . . . Xi´1 annulables
§
˚
Détermination de Suivants(X) = ta P Σ|S Ñ
Ý αXaβu
•
•
•
•
Initialiser Suivants(S) = t$u
Pour chaque règle X Ñ X1 X2 . . . Xn
Ajout Suivants(X) à Suivants(Xi ) si Xi+1 . . . Xn annulables
Ajout Premiers(Xj ) à Suivants(Xi ) si Xi+1 . . . Xj´1
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ègle X Ñ α
• Pour chaque a P Premiers(α) ajouter X Ñ α à T[X, a]
• Si α annulable, pour a P Suivants(X) ajouter X Ñ α à T[X, a]
§
Fonctionnement de l’automate à pile
• Au départ : la pile contient SK, ajouter $ à la chaîne
• Pour chaque configuration avec a sur le ruban et X sur la pile
ñ Si X est un terminal et que X = a
• Dépiler X et avancer sur l’entrée
• Si a = K l’analyse est terminée
ñ Si X est un non-terminal
• Trouver T[X, a] = X Ñ α
• Dépiler X
• Empiler α (dont le premier élément est en haut de pile)
Damien Nouvel (Inalco)
Analyseurs
11 / 28
Analyse syntaxique LL
Exercice
§
Grammaire des fonctions mathématiques
•
•
•
•
•
§
§
S Ñ N(P)
N Ñ f|g
P Ñ VA
V Ñ x|y
A Ñ, P|ϵ
Annulables : tAu
Premiers et suivants (le terminal , est noté virg)
•
•
•
•
•
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) = tvirg, )u
Premiers(A) = tvirgu, Suivants(A) = t)u
Damien Nouvel (Inalco)
Analyseurs
12 / 28
Analyse syntaxique LL
Exercice
§
Table LL
(
S
N
P
V
A
§
)
f
S Ñ N(P)
NÑf
g
S Ñ N(P)
NÑg
AÑϵ
x
y
P Ñ VA
VÑx
P Ñ VA
VÑy
,
$
A Ñ, P
Faire les analyses pour
• f(x)
• f(x, y, x)
Damien Nouvel (Inalco)
Analyseurs
13 / 28
Analyse syntaxique LL
Exercice
§
Chiffres binaires positifs ou négatifs à virgule
• 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
§
Table LL
S
T
N
C
V
§
+
S Ñ TCNV
TÑ+
´
S Ñ TCNV
TÑ´
0
S Ñ TCNV
TÑϵ
N Ñ CN
CÑ0
1
S Ñ TCNV
TÑϵ
N Ñ CN
CÑ1
.
$
NÑϵ
NÑϵ
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 selon k terminaux
Damien Nouvel (Inalco)
Analyseurs
16 / 28
Analyse syntaxique LR
Plan
1. Automates à pile
2. Analyse syntaxique LL
3. Analyse syntaxique LR
Damien Nouvel (Inalco)
Analyseurs
17 / 28
Analyse syntaxique LR
Principes généraux
ñ Analyseur ascendant
ñ LR Left-to-right Rightmost derivation
§ États de 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ée acc
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
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
1
2
3
4
5
6
7
8
9
:
:
:
:
:
:
:
:
:
:
tS Ñ ¨Fu Y tF Ñ ¨n(E)u
tS Ñ F¨u
tF Ñ n ¨ (E)u
tF Ñ n(¨E)u Y tE Ñ ¨E + c, E Ñ ¨F, F Ñ ¨n(E), E Ñ ¨cu
tF Ñ n(E¨), E Ñ E ¨ +cu
tE Ñ F¨u
tE Ñ c¨u
tF Ñ n(E)¨u
tE Ñ E + ¨cu
tE Ñ E + c¨u
Damien Nouvel (Inalco)
Analyseurs
20 / 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’items i
• Si l’item est de la forme X Ñ α ¨ Yβ (avec Y terminal ou non)
• et que Transition(i, Y) = j
ñ Ajouter s : j dans la table Action[i, a]
• Si l’item est de la forme X Ñ α¨ de la règle k
ñ Ajouter r : R sur la ligne i (avec R la règle)
• Si l’item est de la forme S Ñ α¨
ñ Ajouter acc dans Action[i, $]
Damien Nouvel (Inalco)
Analyseurs
21 / 28
Analyse syntaxique LR
Exemple : construction de la table
§
Table LR
0
1
2
3
4
5
6
7
8
9
Damien Nouvel (Inalco)
n
s:2
(
)
+
c
r:SÑF
$
E
F
1
4
5
acc
s:3
s:2
s:6
s:7
s:8
r:EÑF
r:EÑc
r : F Ñ n(E)
s:9
r:EÑE+c
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 l’état à celui de S Ñ ¨α
Analyse selon l’état courant et le symbole sur le ruban
• s:i
• Empiler l’état courant
• Avancer dans le ruban
• Changer l’état pour Action[i, a] (a le symbole sur le ruban)
• r:R
• Dépiler le nombre de symboles de la partie droite de R
• Changer l’état pour Action[i, X], avec i l’état en haut de la
pile
• acc
• Accepter la chaîne
Damien Nouvel (Inalco)
Analyseurs
23 / 28
Analyse syntaxique LR
Exemple : analyse
§
Entrée : n(c + c)
État
0
2
3
6
4
8
9
4
7
1
Damien Nouvel (Inalco)
Pile
K0
K02
K023
K0236
K0234
K02348
K023489
K0234
K02347
K01
Analyseurs
Entrée
n(c + c)$
(c + c)$
c + c)$
+c)$
+c)$
c)$
)$
)$
$
$
24 / 28
Analyse syntaxique LR
Exercice
§
Manche de tennis : jeux, services, échanges, points
•
•
•
•
§
§
§
M Ñ JM|Jm
J Ñ sEj
E Ñ EP|P
P Ñ c|letP
Calculer les ensembles d’items
Construire la table LR
Analyser les expressions : scjm, sletccjscjm …
Damien Nouvel (Inalco)
Analyseurs
25 / 28
Analyse syntaxique LR
Exercice : ensembles d’items
§
Ensembles
•
•
•
•
•
•
•
•
•
•
•
•
•
0 tS Ñ ¨Mu Y tM Ñ ¨JM, M Ñ ¨Jm, J Ñ ¨sEju
1 tS Ñ M¨u
2 tM Ñ J ¨ M, M Ñ J ¨ mu Y tM Ñ ¨JM, J Ñ ¨sEj, M Ñ ¨Jmu
3 tJ Ñ s ¨ Eju Y tE Ñ ¨EP, E Ñ ¨P, P Ñ ¨c, P Ñ ¨letPu
4 tM Ñ JM¨u
5 tM Ñ Jm¨u
6 tJ Ñ sE ¨ j, E Ñ E ¨ Pu Y tP Ñ ¨c, P Ñ ¨letPu
7 tE Ñ P¨u
8 tP Ñ c¨u
9 tP Ñ let ¨ Pu Y tP Ñ ¨c, P Ñ ¨letPu
10 tJ Ñ sEj¨u
11 tE Ñ EP¨u
12 tP Ñ letP¨u
Damien Nouvel (Inalco)
Analyseurs
26 / 28
Analyse syntaxique LR
Exercice : table LR
§
Table LR
0
1
2
3
4
5
6
7
8
9
10
11
12
m
s
s:3
s:5
s:3
j
c
let
r:SÑM
Damien Nouvel (Inalco)
s:8
r : M Ñ JM
r : M Ñ Jm
s : 10
s:8
r:EÑP
r:PÑc
s:8
r : J Ñ sEj
r : E Ñ EP
r : P Ñ letP
Analyseurs
$
M
1
J
2
4
2
E
P
6
7
acc
s:9
s:9
11
s:9
12
27 / 28
Analyse syntaxique LR
Exercice : analyse
§
Entrée : scjm
État
0
3
8
7
6
10
2
5
1
Damien Nouvel (Inalco)
Pile
K0
K03
K038
K037
K036
K03610
K02
K025
K01
Analyseurs
Entrée
scjm$
cjm$
jm$
jm$
jm$
m$
m$
$
$
28 / 28