Vous êtes sur la page 1sur 9

14/12/2021

Chapitre 3: Langages
hors-contexte et
automates à piles
Enseignant: Manel Ben Salem

Niveau: 2ième Licence SI

2021-2022

Plan du cour Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
2
automates à piles

1. Grammaires hors-contexte
2. Arbres syntaxiques
3. Automates à piles
4. Automates à piles déterministes

1
14/12/2021

1. Grammaire hors-contexte Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
3
automates à piles

• Certains langages ne peuvent pas être décrits par une grammaire régulière, et ne peuvent donc pas être reconnus
par un automate fini (par exemple le langage {anbn/n > 0}),
→ Appartiennent à une classe de langages plus générale que celle des langages réguliers : la classe des
langages hors-contexte, décrits par des grammaires hors-contextes et reconnus par des automates à pile.

• Définition (Grammaire hors-contexte) : G = (T, N, S, R) est une grammaire hors-contexte si toutes les règles
de R sont de la forme: A → w avec A ∈ N et w ∈ (N ∪ T)∗.
• Définition (Langage hors-contexte) : On appelle langage hors-contexte un langage généré par une
grammaire hors contexte.
• On rappelle qu’un ensemble est fermé relativement à une opération à n opérandes si tout résultat de cette
opération appliquée à n éléments de l’ensemble appartient encore à l’ensemble.

1. Grammaire hors-contexte Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
4
automates à piles

• Théorème :
− l’union de deux langages hors-contexte est un langage hors-contexte,
− le produit de deux langages hors-contexte est un langage hors-contexte,
− l’itéré d’un langage hors contexte est un langage hors contexte.
En effet, soient deux langages : L1 généré par la grammaire G1 = (T1, N1, S1, R1) et L2 généré par la
grammaire G2 = (T2, N2, S2, R2), tels que N1 ∩ N2 = ∅ (si tel n’est pas le cas, on renomme certains
éléments non-terminaux) alors :
− Le langage L1 ∪ L2 est généré par la grammaire hors contexte G = (T, N, S, R) telle que :
→ T = T1 ∪ T2,
→ S est un nouveau symbole non terminal (S ∈ N1 ∪ N2),
→ N = N1 ∪ N2 ∪ {S},
→ R = R1 ∪ R2 ∪ {S → S1, S → S2}.

2
14/12/2021

1. Grammaire hors-contexte Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
5
automates à piles

− Le langage L1.L2 est généré par la grammaire hors contexte G = (T, N, S, R) telle que:
→ T = T1 ∪ T2,
→ S est un nouveau symbole non terminal (S ∈ N1 ∪ N2),
→ N = N1 ∪ N2 ∪ {S},
→ R = R1 ∪ R2 ∪ {S → S1S2}.
− Le langage L1∗ est généré par la grammaire hors contexte G = (T1, N, S, R) telle que:
→ S est un nouveau symbole non terminal (S ∈ N1 ∪ N2),
→ N = N1 ∪ {S},
→ R = R1 ∪ {S → S1S, S →ε}.
En revanche, l’intersection de deux langages hors-contexte et le complémentaire d’un langage hors-contexte
ne sont pas nécessairement des langages hors-contexte.

2. Arbre syntaxique Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
6
automates à piles

• Dans le cas d’une grammaire hors-contexte G, on peut représenter la dérivation d’une phrase de L(G) à partir
de l’axiome à l’aide d’un arbre syntaxique (ou arbre d’analyse ou arbre de dérivation).
• Cette représentation fait abstraction de l’ordre d’application des règles de la grammaire et aide à la
compréhension de la syntaxe de la phrase considérée.
• Définition (Arbre syntaxique) : L’arbre syntaxique d’une phrase de la grammaire hors-contexte G = (T, N, S,
R) est un arbre tel que:
− la racine est étiquetée par le symbole de départ S,
− chaque nœud interne est étiqueté par un symbole non terminal de N,
− chaque feuille est étiquetée par un symbole terminal de T,
− pour tout nœud interne, si son étiquette est le symbole non terminal A, et si ses n fils ont respectivement
pour étiquettes X1, X2, ..., Xn, alors A → X1X2...Xn doit être une règle de R.

3
14/12/2021

2. Arbre syntaxique Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
7
automates à piles

• Remarques :
− La lecture de gauche à droite des feuilles de l’arbre reconstitue la phrase que l’arbre représente.
− Etant donnée une grammaire hors-contexte G, une phrase w est générée par G si et seulement si il existe
un arbre syntaxique pour G qui génère w.
• Exemple:
− Considérons la grammaire G dont les règles sont : PH → GN V GN; GN → D N; N → fille; N →
jouet; D → le; D → la; V → regarde.
− L’arbre syntaxique associé au mot « la fille regarde le jouet » est :

PH

GN V GN

D N D N

la fille regarde le jouet

2. Arbre syntaxique Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
8
automates à piles

• Définition (Phrase ambigüe) : Une phrase, générée par une grammaire, est ambigüe si elle admet plus d’un
arbre syntaxique pour cette grammaire.
• Définition (Grammaire ambigüe) : Une grammaire est ambigüe si elle génère au moins une phrase ambigüe.
• Exemple: Considérons par exemple la grammaire G = (T, N, E, R) avec : T = { Id, +, -, *, /, (, ) } (où Id
signifie identificateur); N = { E, Op }; R = { E → Id | ( E ) | E Op E ; Op → + | - | * | / } et considérons
les deux arbres suivants :

E E

E Op E E Op E

E Op E * Id Id + E Op E

Id + Id Id * Id

4
14/12/2021

2. Arbre syntaxique Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
9
automates à piles

• Dans les deux cas, la phrase associée est « Id + Id * Id ».


• On a donc deux arbres de dérivation pour une même phrase, et la grammaire G est ambigüe.
• En l’occurrence, on ne peut pas savoir si l’on commence par l’addition ((Id+Id)*Id) ou la multiplication
(Id+(Id*Id)).
• Remarques :
− Le terme "ambigu" est appliqué à la grammaire et non au langage : il est souvent possible de transformer
une grammaire ambigüe en une grammaire non ambigüe générant le même langage. Cependant, il existe
des langages pour lesquels il n’existe pas de grammaire non ambigüe ; de tels langages sont dits
intrinsèquement ambigus.
− La propriété d’ambigüité est indécidable : cela signifie qu’il n’existe pas – et ne peut pas exister –
d’algorithme général qui, étant donnée une grammaire hors-contexte, puisse déterminer en un temps fini si
la grammaire est ambigüe ou non. Seules peuvent être déterminées des conditions suffisantes assurant la
non-ambigüité.

3. Automates à pile Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
10
automates à piles

• Les langages hors-contexte mais non régulier ne sont pas reconnaissables par un automate à états finis,
• Par exemple, il n’existe pas d’automate à états finis ni d’expression régulière reconnaissant le langage{anbn,
n>=0} → pour les reconnaitre on a besoin d’un outils plus puissant: les automates à piles.

• Définition (Automate à pile) : Un automate à pile est un quintuplet A = (T, P, Q, M, S0) tel que :
− T est le vocabulaire terminal,
− P est le vocabulaire de pile (contenant en particulier un symbole initial de pile vide, noté ⊥),
− Q est un ensemble fini d’états,
− M est un ensemble de transitions,
− S0 ∈ Q est l’état initial.

5
14/12/2021

3. Automates à pile Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
11
automates à piles

• Le vocabulaire de pile contient l’ensemble des symboles qui pourront apparaître sur la pile, et n’est pas
nécessairement distinct du vocabulaire terminal (on peut avoir T ∩ P ≠ ∅).
• Une transition de l’automate à pile est semblable à celle d’un automate fini, à part qu’elle spécifie en plus la
manipulation de la pile.
• Une transition de M est de la forme (état, symbole_lu, sommet_pile) → (nouvel_état, action_sur_pile) tel que:
− Etat et nouvel_état sont des états de Q,
− symbole_lu est soit un symbole terminal de T, soit , signifiant que l’automate ne regarde pas le mot,
− sommet_pile est soit un symbole de P, soit , signifiant que l’automate ne regarde pas le sommet de la pile,
− action_sur_pile est soit : “dépiler le symbole au sommet de la pile”, ou “dépiler le symbole au sommet de
la pile puis empiler une suite de symboles” ou “empiler une suite de symboles”, ou “ne rien faire”.
• De façon informelle, la transition (Si , u, v) → (Sk, action_sur_pile) signifie que l’automate peut passer de l’état
Si à l’état Sk, pour autant que le mot à analyser commence par le symbole u et que la pile ait en sommet le
symbole v.

3. Automates à pile Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
12
automates à piles

• Après la transition, l’automate a consommé le symbole u du mot à analyser et a effectué l’action spécifiée dans
action_sur_pile.
• Un triplet (Si , u, v) est appelé une situation.
• Les automates à pile que nous avons définis acceptent un mot lorsqu’il existe une dérivation menant à une
configuration où la pile est vide et le mot entièrement lu. Pour cette raison, ils sont appelés automates à pile
acceptant sur pile vide.
• Une autre définition des automates à pile est celle des automates à pile acceptant sur état final. Un tel automate
spécifie en plus un ensemble F ⊆ Q d’états finaux. Un mot est accepté s’il existe une dérivation menant à une

configuration où l’état est final (la pile n’étant pas nécessairement vide) : (S0, w, ⊥) ⇒ (S,ε , p) avec S ∈ F.
• On accède à la pile uniquement par le sommet.
• Le nombre de symboles utilisés par la pile est fini.
• La pile vide peut être un critère d’acceptation des mot.

6
14/12/2021

3. Automates à pile Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
13
automates à piles

• Définition: les langages reconnus par un automate à pile est l’ensemble de chaines qui permettent de passer
d’un état initial à l’état final (terminal) en démarrant et en finissant avec le symbole de fond de pile (pile vide ⊥),

• Exemple:
Soit l’automate à pile reconnaissant le langage des mots formés sur {a, b}∗ et contenant le même nombre de a et
de b : A = (T, P, Q, M, q) tel que : T = {a, b}; P = {a, b}; Q = {q}
a, ⊥: ⊥A
b, ⊥: ⊥B
Etat Symbole Sommet Nouvel Action sur
lu de pile état pile
q a ⊥ q Empiler (a)
q a, A: AA
q b ⊥ q Empiler(b) b, B: BB
• M= q a a q Empiler(a)
q b b q Empiler(b)
a, B: ε
q a b q Dépiler (b)
b, A: ε
q b a q Dépiler (a)

3. Automates à pile Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
14
automates à piles

• Exemple:
Vérifiant la fonctionnement de cet automate sur le mot w=aabbabba

Mot Etat Pile


Etat Symbole Sommet Nouvel Action sur aabbabba q ⊥
lu de pile état pile abbabba q a⊥
q a ⊥ q Empiler (a) bbabba q aa⊥
q b ⊥ q Empiler(b) babba q a⊥
q a a q Empiler(a) abba q ⊥
q b b q Empiler(b) bba q a⊥
q a b q Dépiler (b) ba q ⊥
q b a q Dépiler (a) a q b⊥
Automate ε q ⊥

Vérification du mot

7
14/12/2021

3. Automates à pile Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
15
automates à piles

Théorème :
Mot état Pile
• Les automates à piles sont des reconnaisses pour les langages hors-contexte.
aaabbb S ⏊
• Exemple: Soit l’automate reconnaissant {anbn, n>=0} avec : aabbb S a⏊
− E={S, P, Q}, e0=S, F={Q}, T={a, b}, Γ={A, ⏊}, abbb S aa⏊

− Les transitions M: bbb S aaa⏊


a, ⏊: ⏊A bb P aa⏊
→ (S, a, ⏊) → (S, ⏊A)
a, A: AA b P a⏊
→ (S, a, A) → (S, AA) ε P ⏊
ε, ⏊: ⏊
→ (S, ε, ⏊) → (Q, ⏊) S U
Q ε Q ⏊
→ (S, b, A) → (P, ε)
→ (P, b, A) → (P, ε) b, A: ε ε, ⏊: ⏊
→ (P, ε, ⏊) → (Q, ⏊) P

b, A: ε

4. Automates à pile déterministes Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
16
automates à piles

• Un automate à pile est déterministe si:


− Pour un état Q, un symbole d’entrée a et un sommet de pile A données, il existe au plus une transition
partant de (Q, a, A) .
− Pour un état Q, et un sommet de pile A données, s’il existe une transition sur (Q, ε, A), elle est unique et
pour toute lettre a il n’y a pas de transition sur (Q, a, A).

• Dans le cas d’un automate déterministe, si un mot est accepté par le langage, alors il existe une seule
dérivation possible pour ce mot.
• Si un automate n’est pas déterministe, il peut y avoir des configurations pour lesquelles plusieurs transitions
différentes sont possibles. Certaines de ces transitions peuvent amener à des échecs (l’automate est bloqué
dans une configuration qui n’est pas d’acceptation) tandis que d’autres peuvent amener à une dérivation
succès.
• Il est nécessaire d’examiner toutes les transitions possibles jusqu’à en trouver une qui réussisse.

8
14/12/2021

4. Automates à pile déterministes Théorie des langages et des automates


Chapitre 3: Langages hors-contexte et
17
automates à piles

• → le temps nécessaire à un automate non déterministe pour reconnaître un mot est généralement bien plus
long que pour un automate déterministe.

• Il existe des langages hors-contexte qui ne sont acceptés par aucun automate à pile déterministe.
• Les langages acceptés par les automates à piles déterministes forment donc une sous-classe des langages hors-
contexte : la classe des langages hors-contexte déterministes.
• L’application principale des langages hors-contexte est la description de la syntaxe des langages de
programmation.
• Pour obtenir des compilateurs efficaces (pouvant être appliqués à de très longs programmes), il est intéressant
de se limiter à des grammaires décrivant des langages hors-contexte déterministes.

Merci de votre
attention

18

Vous aimerez peut-être aussi