Vous êtes sur la page 1sur 32

Les grammaires

Cours 2
Théorie des langages

W. Saadi
Introduction
Un langage peut être décrit par un certain nombre de
règles. Cette vue du concept de langage a son origine
dans des essais de formalisation du langage naturel. Le but
était de donner une description précise des règles
permettant de construire les phrases correctes d’une
langue.

2 W.SAADI
Exemple 1
Prenons par exemple le sous-ensemble suivant de la grammaire
françaises :
le vocabulaire est défini par l’ensemble :
T = { le, la, fille, jouet, regarde }
Une phrase simple peut être définie par:
Phrase groupe nominal verbe groupe nominal
les catégories syntaxiques sont :
la phrase, notée PH
le groupe nominal, noté GN
le verbe, noté V
le déterminant, noté D
le nom, noté N

3 W.SAADI
Les règles
Les règles permettant de combiner des éléments du vocabulaire
et des catégories syntaxiques pour construire des catégories
syntaxiques sont les suivantes :
PH GN V GN N fille
GN D N N jouet
D le V regarde
D la
Remarque
le symbole est une abréviation de “peut être composé de”.
la catégorie syntaxique de départ est la phrase PH.

4 W.SAADI
Les phrases
La phrase “la fille regarde le jouet” est une phrase
correcte pour la grammaire envisagée, comme le montre
l’analyse suivante :

PH ⇒ GN V GN ⇒ D N V GN ⇒ la N V GN ⇒ la fille
V GN ⇒ la fille regarde GN ⇒ la fille regarde D N ⇒ la
fille regarde le N ⇒ la fille regarde le jouet

où le symbole ⇒ est une abréviation de “se dérive en”.

5 W.SAADI
Remarque
1. La grammaire considérée si dessus ne prend pas en
compte certains aspects du français, comme les accords
de genre.

2. “le jouet regarde la fille” est aussi une phrase


syntaxiquement correcte, mais dont la sémantique n’est
pas assurée.

6 W.SAADI
Rôle d’une grammaire
La fonction d’une grammaire telle que celle de l’exemple1
est double :

la grammaire indique comment construire des phrases


appartenant au langage (fonctionnement en production) ;

la grammaire permet également de décider si une phrase


donnée appartient ou non au langage (fonctionnement en
reconnaissance).

7 W.SAADI
Définition formelle d’une grammaire (1)
On appelle grammaire G le quadruplet (V, N, S, R)

V est un ensemble fini de symboles dits terminaux, on


l’appelle également vocabulaire terminal ;

N est un ensemble fini (disjoint de V) de symboles dits non-


terminaux ou encore concepts ;

S un non-terminal particulier appelé axiome (point de


départ de la dérivation) ;

8 W.SAADI
Définition formelle d’une grammaire (2)
R est un ensemble de règles de productions (réécriture)
de la forme g → d tel que g ∈ (V + N)+ et d ∈ (V + N)∗.

La notation g → d est appelée règle de production ou


règle de réécriture et signifie que g peut être remplacé
(substitué) par d.

g est appelé partie gauche de la règle, d est appelé partie


droite de la règle

9 W.SAADI
Terminologie (1)
on utilisera les lettres majuscules pour les non-terminaux.

les lettres minuscules pour représenter les terminaux.

les règles de la forme ε → d sont interdites . Pourquoi ?

une suite de symboles terminaux et non terminaux (un élément


de (N +V)*) est appelée une forme.

une règle w1 → w2 telle que w2 ∈ V * est appelée une règle


terminale.

10 W.SAADI
Notation
Lorsque plusieurs règles de production d’une grammaire
ont une même forme en partie gauche, on pourra les
factoriser en séparant les parties droites par des traits
verticaux.

Exemple

On peut écrire les deux règles : A → aA et A → ε


directement A → aA |ε.

11 W.SAADI
Dérivation directe (dérivation en une étape)
Soient une grammaire G = (V, N, S, R), une forme non vide
w1∈(N∪ V)+ et une forme éventuellement vide w2 ∈(N∪ V)*.
La grammaire G permet de dériver w2 de w1 en une étape
(noté w1 ⇒ w2 ) si et seulement si :
w1= x u y (w1 peut être décomposé en x, u et y ; x et y
peuvent être vides),
w2= x v y (w2 peut être décomposé en x, v et y),
u → v est une règle de R.

12 W.SAADI
Dérivation indirecte (dérivation en plusieurs
étapes)
Un mot w2 peut être dérivé d’un mot w1 si et seulement si
w2 peut être obtenu à partir de w1 en 0, 1 ou plusieurs
dérivations directes.

Soit une suite de dérivations : w1 ⇒ w2 ⇒ w3 ⇒ ... ⇒ wn


*
alors on écrira : w1 ⇒ wn. On dit alors qu’il y a une
chaîne de dérivation qui mène de w1 vers wn .

13 W.SAADI
Remarque
k
On note w1 ⇒ w2 pour indiquer que w2 se dérive de w1 en k
étapes.
+ *
On définit aussi les deux notations ⇒ et ⇒ de la façon
suivante :
+ k
w1 ⇒ w2 ≡ w1 ⇒ w2 avec k >0
* k
w1 ⇒ w2 ≡ w1 ⇒ w2 avec k ≥ 0

Attention

Les symboles → et ⇒ ne représentent pas la même chose.


14 W.SAADI
Exemple 2

Soit la grammaire G = ({a}, {S}, S, {S → aS|ε}). On peut

construire la chaîne de dérivation suivante :

S ⇒ aS ⇒ aaS ⇒ aaaS...

15 W.SAADI
Mot généré (dérivé)
Soit une grammaire G = (V, N, S, R). On dit que le mot w
appartenant à V∗ est dérivé (ou bien généré) à partir de
G s’il existe une suite de dérivation qui a partir de
*
l’axiome S permet d’obtenir w : S ⇒ w.

16 W.SAADI
Langage engendré (généré) par une
grammaire
Le langage défini( dérivé ou généré) par une grammaire est
l’ensemble des mots pouvant être dérivés depuis l’axiome.
Définition formelle
Soit une grammaire G=(V,N,S,R), le langage L(G) généré par la
* w, w ∈ V*}.
grammaire G est défini par : L(G) = {w / S ⇒
Le langage généré par G contient exactement les mots
dérivables à partir de l’axiome S par les règles de R et qui ne
contiennent que des éléments de V.
On dit que le langage L(G) est le langage engendré par la
grammaire G.
17 W.SAADI
Remarques

Une grammaire définit un seul langage.

Par contre, un même langage peut être engendré par

plusieurs grammaires différentes.

18 W.SAADI
Exemple 3
Soit la grammaire G = ({a, b}, {S, T}, S, { S → aS | aT,
T→bT|b}).

Elle génère les mots : abb et aab parceque S ⇒ aT ⇒ abT


⇒ abb et S ⇒ aS ⇒ aaT ⇒ aab. On peut facilement
voir alors que le langage généré par cette grammaire
est: tous les mots sur {a, b} de la forme ambn avec
m,n>0.

19 W.SAADI
Équivalence entre grammaires
Deux grammaires G1 et G2 sont équivalentes si et
seulement si elles engendrent exactement le même
langage.

20 W.SAADI
Arbre de syntaxe
Étant donnée une grammaire G = (V, N, S, R), les arbres de
syntaxe de G sont des arbres où les nœuds internes sont
étiquetés par des symboles de N, et les feuilles étiquetés
par des symboles de V, tels que, si le nœud p apparaît dans
l’arbre et si la règle p → a1...an (ai terminal ou non
terminal) est utilisée dans la dérivation, alors le nœud p
possède n fils correspondant aux symboles ai.

21 W.SAADI
Arbre de dérivation
Si l’arbre syntaxique a comme racine S, alors il est dit arbre
de dérivation du mot w tel que w est le mot obtenu en
prenant les feuilles de l’arbre dans le sens :
gauche → droite et bas → haut.
Remarque
Un arbre de dérivation indique les règles qui ont été
utilisées dans une dérivation, mais pas l’ordre dans lequel
elles ont été utilisées.

22 W.SAADI
L’arbre de dérivation de l’exemple 3 :
Le mot abb : Le mot aab :
S ⇒ aT ⇒ abT ⇒ abb S ⇒ aS ⇒ aaT ⇒ aab.

23 W.SAADI
Types de grammaires
La classification des grammaires définie en 1957 par
Noam CHOMSKY, distingue quatre classes de
grammaires hiérarchisées, ordonnées par inclusion.
Chomsky a ainsi proposé quatre classes (hiérarchiques)
de grammaires (et de langages) de sorte qu’une
grammaire de type i génère un langage de type j tel que
j> i.

24 W.SAADI
Classification de Chomsky (1)
Soit G = (V, N, S, R) une grammaire, les classes de grammaires de
Chomsky sont :
Type 0 : pas de restriction sur les règles. Toutes les règles sont de la
forme : g → d , g ∈ (V + N)+, d ∈ (V + N)∗
Type 1 ou grammaire contextuelle : toutes les règles sont de la
forme g → d tel que g ∈ (N + V)+, d ∈ (V+N)∗ et |g| ≤ |d|. De plus,
si ε apparaît à droite alors la partie gauche doit seulement contenir
S (l’axiome). On peut aussi trouver la définition suivante des
grammaires de type 1 : toutes les règles sont de la forme:

αBβ → αωβ tel que , α,β∈ (V + N)∗, B ∈ N et ω ∈ (V + N)+ ;


25 W.SAADI
Classification de Chomsky (2)
Type 2 ou grammaire hors-contexte : toutes les règles de
production sont de la forme g → d où g ∈ N et d ∈ (V + N)∗ ;
Autrement dit, le membre de gauche de chaque règle est constitué
d’un seul symbole non terminal.
Type 3 ou grammaire régulière :
à droite : toutes les règles de production sont de la forme g → d
où g ∈ N et d = aB tel que a ∈ V∗ et B ∈ N ∪ {ε}
à gauche : toutes les règles de production sont de la forme g → d
où g ∈ N et d = Ba tel que a ∈ V∗ et B ∈ N ∪ {ε}
26 W.SAADI
Classification de Chomsky (3)

27 W.SAADI
Types de langage
A chaque type de grammaire est associé un type de langage :

les grammaires de type 3 génèrent les langages réguliers,

les grammaires de type 2 génèrent les langages hors-


contexte,

les grammaires de type 1 génèrent les langages


contextuels,
les grammaires de type 0 permettent de générer tous les
langages “décidables”, autrement dit, tous les langages qui
peuvent être reconnus en un temps fini par une machine.
28 W.SAADI
Remarques
Un langage pouvant être engendré par une grammaire
de type i et pas par une grammaire d’un type
supérieur dans la hiérarchie, est appelé un langage de
type i.

Les langages qui ne peuvent pas être générés par une


grammaire de type 0 sont dits “indécidables”.

29 W.SAADI
Langages et automates
(Reconnaisseurs de langages)
A chaque type de grammaire est associé un type d’automate
qui permet de reconnaître les langages de sa classe (c’est-à-
dire de déterminer si un mot donné appartient au langage) :
Les langages réguliers sont reconnus par des automates
finis.

les langages hors-contexte sont reconnus par des


automates à pile.

les autres langages, décrits par des grammaires de type 1 ou


0, sont reconnus par des machines de Turing.
30 W.SAADI
Remarque :
La machine de Turing peut être considérée comme le
modèle de machine le plus puissant dans la mesure
où tout langage qui ne peut pas être traité par une
machine de Turing, ne pourra pas être traité par une
autre machine.

31 W.SAADI
Exercice
On considère la grammaire G = (V, N, S, R) où

V = {a, b, c, d }

N ={S, U}

R = {S → aU | c
U → Sb | d }
Donner le type de G et déterminer L(G).

32 W.SAADI