CH 4 - Automates À Pile
CH 4 - Automates À Pile
CH 4 - Automates À Pile
automates
Olfa MOUELHI
olfa.mouelhi@esprit.tn
Généralités.
Définition.
Exemple introductif
Transitions dans un PDA
Configurations
Langage reconnu par un PDA
© Olfa MOUELHI 2
Automate à pile
L’approche pour analyser la syntaxe du code source d’un programme est de scanner le
programme de gauche à droite, en cherchant une dérivation qui génère ce programme.
Le modèle de base d’un programme qui fait une telle analyse est un automate à pile.
Comme expliqué auparavant, les automates finis peuvent analyser seulement la syntaxe
d’une grammaire régulière.
Pour analyser la syntaxe d’une grammaire hors-contexte, nous ajoutons une pile à un
automate fini pour obtenir un modèle de programmes plus puissant connu sous le nom de
“automate à pile”.
© Olfa MOUELHI 3
Limite des automates finis
Nous avons vu qu’un automate fini est un modèle de programme avec un nombre fini
d’états.
Comme il a un nombre fini d’états et de transitions, il est très simple à programmer et même
à visualiser graphiquement.
© Olfa MOUELHI 4
Automate à pile
Un automate à pile ressemble à un automate fini. Il a :
La différence est qu’un automate à pile a en plus une pile, initialement vide, mais
pouvant croître arbitrairement.
© Olfa MOUELHI 5
Automate à pile
Un automate à pile a :
$ entrée
Automate à pile
$
pile
© Olfa MOUELHI 6
Automate à pile
L’entrée est une chaîne de tokens scanné à partir du code source du programme à
analyser.
La pile contient une chaîne de symbole de la grammaire (terminaux et non-terminaux)
Les transitions indiquent comment mettre à jour le contenu de la pile en fonction du token
courant.
$ entrée
1
Automate à pile
3
2 4
$
pile
© Olfa MOUELHI 7
Automate à pile : définition
formelle
Un automate à piles A = E, , Π, , e0, z0, F
E : un ensemble fini d’états.
un ensemble de symboles (l’alphabet des symboles d’entrée).
Π est un alphabet fini dit l’alphabet de la pile.
: Π* E ( {ε}) P (Π* E), une fonction finie.
Un état e0 E : état de départ ou état initial.
z0 est le symbole initial de la pile.
Un ensemble d’états F E connus comme états d’acceptation
© Olfa MOUELHI 8
Exemple introductif
© Olfa MOUELHI 9
Exemple introductif
© Olfa MOUELHI 10
Transitions
Une transition de la forme (p, u, b)(q, g)signifie que l’automate peut passer de l’état p
à l’état q, pourvu que la chaîne d’entrée commence par le préfixe u et la chaîne b est au
sommet de la pile.
Après la transition, u est lu et consommé du mot d’entrée, b est enlevé de la pile et
remplacé par g,et le nouvel état devient q.
La chaîne b est lue de gauche à droite : son premier caractère doit donc être au
sommet de la pile.
La chaîne g est écrite de telle façon que son premier caractère soit au sommet de la
pile. u u
$ entrée $ entrée
p q p q
$ $
pile pile
b g
© Olfa MOUELHI 11
Configurations
La configuration d’un automate est défini comme suit: (u,q,x,g)
u: mot lu,
q: état courant,
x: le reste à lire,
g:contenu de la pile.
© Olfa MOUELHI 12
Automates à pile et automates traditionnels
Si (Z, e) est un élément de (Y, q, a), alors l’utilisation de cette transition conduira à :
Dépiler Y ; si Y = ε la transition a lieu indépendamment du symbole en haut de
pile, qui reste inchangée.
Transiter dans l’état r.
Empiler Z; si Z = ε, aucun symbole n’est empilé.
© Olfa MOUELHI 13
Automates à pile et automates traditionnels
Un automate à pile admet une représentation graphique sur laquelle les modifications
de la pile sont représentées sous la forme Y/Z. La Figure suivante représente ainsi un
automate à pile reconnaissant le langage {anbn}.
a ε/Z b Z/ε
a ε/ε b ε/ε
0 1 2
© Olfa MOUELHI 14
Langage reconnu par un PDA
Le langage L(A) ⊆ * reconnu par A, par état final est défini par : u ∈ L(A) si et
seulement si il existe ∈ Π* et s ∈ F tels que :
(ε ,q0, w, Z0) *
A (w ,qf, ε, Z0 )
Le langage Lε(A) ⊆ * reconnu par A, par pile vide est défini par : u ∈ Lε(A) si et
seulement si il existe q ∈ E :
(ε ,q0, w, Z0) A* (w, q, ε, ε)
© Olfa MOUELHI 15
Au delà des langages hors-
contexte
Bien qu’un automate à pile peut avoir un nombre infini d’états (configurations), il
existe des langages qui ne sont pas acceptés par un automate à pile, c-à-d., des
langages qui ne sont pas hors-contextes.
Exemple:
© Olfa MOUELHI 16