• Aucun résultat trouvé

Analyseurs syntaxiques

N/A
N/A
Protected

Academic year: 2022

Partager "Analyseurs syntaxiques"

Copied!
28
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

(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

(5)

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

(6)

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

(7)

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 ϵ

(8)

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 ϵ

(9)

Analyse syntaxique LL

Plan

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

(10)

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

(11)

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)

(12)

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

(13)

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)

(14)

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

(15)

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

(16)

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

(17)

Analyse syntaxique LR

Plan

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

(18)

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

(19)

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

(20)

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

(21)

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,$]

(22)

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

(23)

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

(24)

Analyse syntaxique LR

Exemple : analyse

§ Entrée : n(c+c)

Pile Entrée

0K n(c+c)$

20K (c+c)$

320K c+c)$

6320K +c)$

4320K +c)$

84320K c)$

984320K )$

4320K )$

74320K $

10K $

(25)

Analyse syntaxique LR

Exercice

§ Manche de tennis : services, jeux, échanges, points, let

MÑJM|Jm

JÑsEj

EÑEP|P

PÑp|lP

§ Calculer les ensembles d’items

§ Construire la table LR

§ Analyser les expressions : spjm,slppjspjm

(26)

Analyse syntaxique LR

Exercice : ensembles d’items

§ Ensembles

‚ 0tSÑ ¨Mu Y tMÑ ¨JM,MÑ ¨Jm,JÑ ¨sEju

‚ 1tSÑM¨u

‚ 2tMÑJ¨M,MÑJ¨mu Y tMÑ ¨JM,JÑ ¨sEj,MÑ ¨Jmu

‚ 3tJÑs¨Eju Y tEÑ ¨EP,EÑ ¨P,PÑ ¨p,PÑ ¨lPu

‚ 4tMÑJM¨u

‚ 5tMÑJm¨u

‚ 6tJÑsE¨j,EÑE¨Pu Y tPÑ ¨p,PÑ ¨lPu

‚ 7tEÑP¨u

‚ 8tPÑp¨u

‚ 9tPÑl¨Pu Y tPÑ ¨p,PÑ ¨lPu

‚ 10tJÑsEj¨u

‚ 11tEÑEP¨u

‚ 12tPÑlP¨u

(27)

Analyse syntaxique LR

Exercice : table LR

§ Table LR

m s j p l $ M J E P

0 s: 3 1 2

1 r:SÑM acc

2 s: 5 s: 3 4 2

3 s: 8 s: 9 6 7

4 r:MÑJM

5 r:MÑJm

6 s: 10 s: 8 s: 9 11

7 r:EÑP

8 r:PÑc

9 s: 8 s: 9 12

10 r:JÑsEj

11 r:EÑEP

12 r:PÑlP

(28)

Analyse syntaxique LR

Exercice : analyse

§ Entrée : spjm

Pile Entrée

0K spjm$

30K pjm$

830K jm$

730K jm$

630K jm$

10630K m$

20K m$

520K $

10K $

Références

Documents relatifs

Cette infrastructure vise à fa- ciliter la réutilisation de l’analyseur stochastique MALT [11] pour le français parlé et comprend (i) la définition d’un schéma d’annotation

les cours Automates et Calculabilit´ e en majeure M1 pour les grammaires formelles, et Compilation en majeure M2 pour les analyseurs syntaxiques... Sch´ ema g´

Le treillis de la phrase représente sous la forme d'un graphe toutes les séquences d'étiquettes possibles, pour une séquence données de mots.. Un noeud correspond à une

Une autre, le statut du morphème lié et la chute de l'accent sur le premier terme (qui entraîne plusieurs processus phonologiques), ne semble pas être respectée du tout. Mais

Cet aspect est particulièrement important pour le problème qui nous intéresse ici : il s’agit d’une approche intrinsèquement robuste dans le sens où ce qui est construit n’est

Une fois ´etudi´ee la classe des groupes co-compacts ou convexe co-compacts il est naturel de poser la mˆeme question pour les r´eseaux non uniformes et leur g´en´eralisation

Based on our test, the negative sign of the interaction term between taxes and market concentration lets us conclude that excise taxes are undershifted in the Canadian retail

Pour d´eriver un analyseur syntaxique d’une grammaire non-contextuelle ´ecrite dans le style EBNF :.. Introduire une fonction def A: Unit pour chaque