Vous êtes sur la page 1sur 30

Théorie des

langages et des
automates

ines.channoufi@esprit.tn 2013-2014
PLAN
Les grammaires

Langage engendré par une grammaire

Types de grammaires

Grammaires et dérivation

Transformation d'une grammaire régulière en un automate fini

Transformation d’automate fini en une grammaire régulière

2
LES GRAMMAIRES

Une grammaire G est un système de réécriture dans un alphabet Vn Vt formé de
deux alphabets disjoints (Vn ∩ Vt = Ø):
Vt l'alphabet terminal, celui des mots engendrés
Vn l'alphabet non terminal, ou alphabet des variables, contenant un élément
particulier : l'axiome, et dont la partie gauche de chaque règle contient au moins
une variable.

V = Vn Vt est appelé le vocabulaire de la grammaire G.

3
LES GRAMMAIRES
Exemple :
Vt = {chat, chien, le, mord, voit}
Vn = {phrase, verbe, groupe_nominal, article, nom}

phrase → groupe_nominal verbe groupe_nominal


groupe_nominal → article nom
article → le
nom → chat
nom → chien
verbe → mord
verbe → voit
4
LES GRAMMAIRES
On va pouvoir engendrer ("dériver") huit phrases différentes :
* le chat voit le chien
phrase ⇒
* le chat voit le chat
phrase ⇒
* le chien mord le chat
phrase ⇒
etc.
On a donc besoin de quatre choses différentes pour définir une grammaire :
Vt : est un ensemble fini de symboles dits terminaux, appelé vocabulaire terminal.
Vn : est un ensemble fini (disjoint de Vt) de symboles dits non-terminaux, appelé
vocabulaire non terminal.
L’axiome : est un non-terminal particulier appelé aussi source.
Les règles : R ⊆ (V* \ Vt ) * × V* est un ensemble fini de règles de grammaire
notées g → d si (g, d) ∈ R. 5
LES GRAMMAIRES
Une grammaire est une machine à réécrire c’est–à–dire, une machine à faire des
substitutions.

Une règle de production (l, r) ∈ P est notée l → r : l est la partie gauche, contenant
au moins une variable, r est la partie droite.

Pour les grammaires, on dit dérivation plutôt que réécriture, et on note + au lieu de ∪
pour décrire l'union de deux langages : X + V = X V est l'alphabet de la grammaire.

6
DÉFINITION

Étant donnée une grammaire G = {Vt, Vn, S, R}, on dit que le mot u ∈ V* se réécrit
en le mot v ∈ V* dans G avec la règle g → d, et l’on note :
g→d
u → v
Si :
1) u = w1gw2, où w1 ∈ V* et w2 ∈ V*.
2) v = w1dw2
On dit que le mot u ∈ V* se réécrit en le mot v ∈ V* dans la grammaire G s’il existe
une règle g → d ∈ R telle que u se récrit en v dans G.
Enfin, on dit que le mot v ∈ V* dérive du mot u ∈ V*, dans la grammaire G, ce que
l’on note par u →* v, s’il existe une suite finie w , w , . . . , w de mots de V* telle que
0 1 n
w0 = u, wi → wi+1 pour tout i ∈ [0, n − 1], et wn = v.

7
EXEMPLE
Les deux grammaires décrivent les entiers écrits en binaire
N → 0
N → 1 N → 0
N → 1M N → 1M
M → 0 M → ε
M → 1 M → 0M
M → 0M M → 1M
M → 1M

Les grammaires de l’exemple précédent peuvent aussi être spécifiées de la manière


suivante :

N → 0 | 1 | 1M N → 0 | 1M
M → 0 | 1 | 0M | 1M M → ε | 0M | 1M

8
EXEMPLE

N → 0
N → 1
N → 1M
M → 0
M → 1
M → 0M
M → 1M

En utilisant la première grammaire :


N → 1M → 11M → 110M → 1101M → 11010 N → 0
N → 1M
En utilisant la deuxième grammaire : M → ε
N → 1M → 11M → 110M → 1101M → 11010M → 11010 M → 0M

M → 1M
Le mot 11010M dérive du mot 1M
1M → 11M → 110M → 1101M → 11010M
9
LANGAGE ENGENDRÉ PAR UNE GRAMMAIRE

Le langage engendré par la grammaire G est l’ensemble des mots de Vt qui dérivent
de l’axiome de G, que l’on note par L (G).

Une grammaire est un mécanisme permettant d’engendrer les phrases du langage, en


récrivant un mot u ∈ V en un nouveau mot v ∈ V.

L’opération de réécriture consiste à remplacer une occurrence (quelconque) d’un non-


terminal N (quelconque) de Vn présent dans u par un membre droit de règle dont N
est membre gauche.

Ce processus est itéré à partir de la source jusqu’à l’élimination complète des non-
terminaux.

10
GRAMMAIRE CONTEXTUELLE

La grammaire suivante décrit le langage {anbncn | n ≥ 0}. Ses règles ont la particularité
d’avoir un membre droit de taille supérieure ou égale à celle de leur membre gauche.
S → aSBC|ε
CB → BC
aB → ab
bB → bb
bC → bc
cC → cc

11
GRAMMAIRE CONTEXTUELLE

Définition
Étant donnée une grammaire G = {Vt, Vn, S, R}, une règle de R est dite contextuelle
si elle est de la forme g → d avec |g| ≤ |d|. Une grammaire est contextuelle si toutes
ses règles le sont, et le langage engendré est alors dit contextuel.

Les langages de type sont reconnus par des machines de Turing particulières utilisant
un espace mémoire borné.

12
GRAMMAIRE CONTEXTUELLE

a3b3c3
S → aSBC
→ a(aSBC)BC
→ a(a(aSBC)BC)BC S→ε → aaabbbccC cC → cc
→ aaaBCBCBC CB → BC → aaabbbccc
→ aaaBBCCBC CB → BC
→ aaaBBCBCC CB → BC
→ aaaBBBCCC
aaaBBBCCC aB → ab
→ aaabBBCCC
aaabBBCCC bB → bb
→ aaabbBCCC
aaabbBCCC bB → bb
→ aaabbbCCC bC → bc
→ aaabbbcCC cC → cc

13
GRAMMAIRE HORS-CONTEXTE
La grammaire suivante décrit le langage {anbn | n ≥ 0}. Cette grammaire a une
particularité : le membre gauche de chaque règle est un non-terminal..
S → aSb|ε
Définition
Étant donnée une grammaire G = {Vt, Vn, S, R}, une règle de R est dite hors-contexte
si elle est de la forme N → u où u ∈ V* . Une grammaire est hors-contexte si toutes
ses règles le sont, et le langage engendré est alors dit hors-contexte. On note par
LHC la classe des langage hors-contexte.

Les langages hors-contexte sont reconnus par des machines de Turing particulières,
les automates à pile, que nous découvrirons plus loin dans ce cours.
14
GRAMMAIRES RÉGULIÈRES

Les grammaires de l’exemple suivant sont hors-contexte, mais elles ont une
particularité supplémentaire : le membre droit possède au plus une occurrence de
symbole non terminal, située à l’extrémité droite.

N → 0 | 1 | 1M N → 0 | 1M
M → 0 | 1 | 0M | 1M M → ε | 0M | 1M

15
GRAMMAIRES RÉGULIÈRES

Définition
Étant donnée une grammaire G = {Vt, Vn, S, R}, une règle de R est dite régulière si
elle est de la forme N → u ou N → uM, où M, N ∈ Vn et u ∈ Vt* . Une grammaire
est régulière si toutes ses règles le sont, et un langage engendré par une telle
grammaire est alors dit régulier ou de type 3.

Les langages réguliers sont bien sûr reconnus par des machines de Turing
particulières.

Un langage est dit régulier si et seulement si il est reconnaissable


reconnaissable.

16
GRAMMAIRES ET DÉRIVATION
Une dérivation est l'application répétée de règles qui commence avec le symbole de
départ et se termine avec une séquence de terminaux.

Une phrase doit contenir uniquement des terminaux.

Les dérivations dans G = (V, S, R) sont des suites de réécritures que l’on peut opérer
sur les éléments de (Σ + V)∗ par application de ses règles.

Une dérivation élémentaire est l’application d’une règle de la grammaire.

Une dérivation élémentaire se définit pour β1 ∈ (Σ + V)∗, β2 ∈ (Σ + V)∗, X ∈ V par:


β1Xβ2 ⇒ β1αβ2
pour toute règle X → α de la grammaire.
17
GRAMMAIRES ET DÉRIVATION

Une dérivation de longueur i notée : β ⇒ γ est une suite de i dérivations


élémentaires qui s’enchaînent, qui se définit par récurrence sur i :

0: β⇒ β Pas d’application de règle.

i→i+1: β⇒δ⇒γ Une application de plus

On notera β ⇒ γ pour signifier qu’il existe une dérivation β ⇒ γ.

18
GRAMMAIRES ET DÉRIVATION
Considérons le langage des expressions arithmétiques. Cette grammaire aura alors
pour symboles terminaux Vt = {+, ×, (, ), Id, Cte} et pour non-terminaux l’unique
symbole E qui sera donc la source :

E → Id | Cte | E + E | E × E | (E)

Cette grammaire permet d’engendrer l’expression arithmétique x + 2.5 × 4 + (y + z),


en supposant que les mots 2.5 et 4 font partie du langage engendré par la grammaire
des constantes, et que x, y, z font partie du langage engendré par la grammaire des
variables.

19
GRAMMAIRE ET DÉRIVATION
E → Id | Cte | E + E | E × E | (E) x + 2.5 × 4 + (y + z)
E→E+E
E → Id
Id ++ EE
E → Id + E × E
E → Id + Cte
Cte ×× EE
Chaque fois on prend le terminal le plus
E → Id + Cte × E + E à gauche ⇒ dérivation à gauche.
E → Id + Cte × Cte
Cte ++ EE
E → Id + Cte × Cte + (E)
E → Id + Cte × Cte + (E + E)
E → Id + Cte × Cte + (Id(Id ++ E)
E)
E → Id + Cte × Cte + (Id + Id) Id)
20
x 2.5 4 y z
GRAMMAIRE ET DÉRIVATION
E → Id | Cte | E + E | E × E | (E) x + 2.5 × 4 + (y + z)
E→E+E
E → E + (E)
E → E + (E + E)
E → E + (E + Id)
Id)
Chaque fois on prend le terminal le plus
E → E + (Id
(Id ++ Id)
Id) à droite ⇒ dérivation à droite.
E → E × E + (Id + Id)
E → E × Cte
Cte ++ (Id
(Id ++ Id)
Id)
E → E + E × Cte + (Id + Id)
E → E + Cte
Cte ×× Cte
Cte ++ (Id
(Id ++ Id)
Id)
E → Id Cte ×× Cte
Id ++ Cte Cte ++ (Id
(Id ++ Id)
Id)
21
x 2.5 4 y z
GRAMMAIRE ET DÉRIVATION

Étant donné la grammaire des expressions arithmétiques :


E → Id | Cte | E + E | E × E | (E)
Considérons la phrase Id + Id × Id.
La dérivation à gauche de cette phrase est :

E→ E+E E →E × E
→ Id + E →E + E × E
→ Id + E + E → Id
Id ++ EE ×× EE
→ Id + Id × E → Id + Id
Id ×× EE
→ Id + Id × Id → Id + Id × Id

22
GRAMMAIRE AMBIGÜE
Une grammaire G est ambiguë s’il existe un mot w ∈ L(G) qui possède plusieurs
dérivations gauches (droites) dans G.

Exemple:

E → E+E|E*E| (E)| x1| x2

Soit w = x1+x1*x2

Cette grammaire est ambiguë car la chaîne w a plus d'une dérivation gauche:

E → E+E → x1+E→ x1 +E*E → x1+x1*E → x1+x1*x2

E → E*E→ E+E*E→ x1+E*E → x1+x1*E → x1+x1*x2

De même on peut trouver deux dérivations droites 23


REPRÉSENTATION ARBORESCENTE
Une dérivation est l’enchaînement séquentiel de dérivations élémentaires, mais ceci
est généralement obtenu au prix de choix qui, en réalité, sont arbitraires.

Soient Y → β et Y’ → β’ deux règles de G. Elles sont applicables à tout mot de la


forme α1Y α2Y α3 pour produire les deux dérivations :

D1 : α1Yα2Y’α3 ⇒ α1βα2Y’α3 ⇒ α1βα2β’α3


D2 : α1Yα2Y’α3 ⇒ α1Yα2β’α3 ⇒ α1βα2β’α3
La commutation de règles dans une dérivation est le remplacement de D1 par D2 ou
celui de D2 par D1 : une telle opération ne modifie pas la nature d’une dérivation mais
seulement la façon de la décrire.

24
REPRÉSENTATION ARBORESCENTE

Définition
Deux dérivations sont dites équivalentes si et seulement si on peut transformer l’une
en l’autre par une suite de commutations de règles.
Arbre de dérivation d’une grammaire
L’idée est simplement d’arborer chaque règle X → ε, X → ξ1 ... ξm de G, en la
représentant sous la forme d’un embranchement ordonné, sur le modèle ci–dessous :

X X

25

ε ξ1 ξm
REPRÉSENTATION ARBORESCENTE

Exemple : id + id × id

E ⇒ E+E E ⇒ E×E
⇒ id + E ⇒ E+E×E
⇒ id + E × E ⇒ id + E × E
⇒ id + id × E ⇒ id + id × E
⇒ id + id × id ⇒ id + id × id

E E
E + E E × E
id E × E E + E id
id id id id

26
TRANSFORMATION D'UNE GRAMMAIRE
RÉGULIÈRE EN UN AUTOMATE FINI :
Soit G=(V,T,S,R) une grammaire régulières, on peut construire un automate fini A=(
Q,Σ,δ,q0,F) qui accepte les mots engendrés par G:

Pour toutes les productions B→α de P, on ajoute un nouveau symbole non terminal X
et on remplace ces productions par B→αX et X→ε

L’ensemble des états Q de l’automate est celui des non-terminaux. Q=V

L’alphabet Σ est égal à l’ensemble T des terminaux. Σ=T

L’état q0 correspond à l’axiome A de la grammaire. q0 =S

δ= {(p,x,q)/ il existe une règle de la forme p→xq}

F={X/ X→ε} 27
Exemple

G=(V,T,A,R) une grammaire régulière


b
V={A,B} axiome A
B
T={a,b,c} b a
a

R={A→aA A X
A→bB
A→c (devient A→cX et X→ε) c
B→bB
B→a(devient B→aX)
B→ε

28
TRANSFORMATION D'UN AUTOMATE FINI
EN UNE GRAMMAIRE RÉGULIÈRE:
Soit un automate fini donné M=(Q,Σ,δ, q0,F)

La grammaire G=(V,T,S,R) équivalente est définie comme suit :

V=Q

T= Σ

S= q0

R={p→xq/(p,x,q) ∈ δ }∪{Q→ε /Q∈F}


29
Exemple :

A=(Q,Σ,δ, q0=A,F)
b a
Σ={a,b},Q={A,B,C,D},F={D} B a,b
b
A D
G=(V,T,A,R) b

V ={A,B,C,D},T={a,b}, axiome A a C a

R={A→aC, A→bB, B→aD, B→bA, C→aD, C→bB, D→aD, D→bD, D→ε}

30

Vous aimerez peut-être aussi