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