Vous êtes sur la page 1sur 32

Cours Compilation & Interprétation

Les grammaires
Wafa GABSI MASMOUDI

gabsi.wafa@gmail.com

2019-2020
Plan

1 Introduction

2 Définitions et exemples

3 Dérivation

4 Arbre de dérivation

5 Classification (de Chomsky) des grammaires


Plan

1 Introduction
Motivation
Exemples
Principe

2 Définitions et exemples

3 Dérivation

4 Arbre de dérivation

5 Classification (de Chomsky) des grammaires


Introduction
Définitions et exemples Motivation
Dérivation Exemples
Arbre de dérivation Principe
Classification (de Chomsky) des grammaires

Motivation
Tout langage possède des règles qui indiquent la
structure syntaxique d’un langage bien formé.
Les langages réguliers s’expriment à l’aide des
expressions régulières.
La plupart des langages ne peuvent pas s’exprimer par
une expression régulière.
Exp: systèmes des parenthèses bien formées.
Besoin d’un outil plus puissant ⇒ Les grammaires.
Les grammaires sont des outils pour décrire des
langages, inspirés des grammaires utilisées pour les
phrases du langage naturel.

W.GABSI Cours Théorie des langages 4 / 32


Introduction
Définitions et exemples Motivation
Dérivation Exemples
Arbre de dérivation Principe
Classification (de Chomsky) des grammaires

Exemple 1
Pour un langage naturel, une phrase (simple) est
composée d’un sujet suivi par un verbe suivi d’un
complément.
phrase → sujet verbe complement
Exp: L’étudiant va à la faculté.
Dans une deuxième étape, on doit expliquer ce que peut
être un sujet, un verbe et un complément.
phrase → sujet verbe complement
Sujet → article adjectif nom | article nom adjectif | article
nom
Article → le | la| les | l’ | un | une | des
Adjectif → couleur | beau | belle | grand
couleur → bleu | rouge | vert | jaune

W.GABSI Cours Théorie des langages 5 / 32


Introduction
Définitions et exemples Motivation
Dérivation Exemples
Arbre de dérivation Principe
Classification (de Chomsky) des grammaires

Exemple 2
Une expression conditionnelle en java s’écrit sous la
forme:
if (expression) instruction else instruction
Il faut alors définir ce qu’est une expression, une
instruction...

W.GABSI Cours Théorie des langages 6 / 32


Introduction
Définitions et exemples Motivation
Dérivation Exemples
Arbre de dérivation Principe
Classification (de Chomsky) des grammaires

Principe(1/2)
Une grammaire est un formalisme permettant de
spécifier des langages. Il s’agit d’un système de règles
permettant de réécrire un terme en un autre terme.
Les règles de la grammaires sont composée d’une partie
gauche et d’une partie droite reliées par une flèche ou
chacune est elle-même composée de symboles
terminaux et symboles non terminaux.
La réecriture d’un terme en un autre terme consiste à
appliquer une règle au terme original, càd à substituer la
partie gauche par la partie droite de la règle, et obtenir
ainsi un nouveau terme.

W.GABSI Cours Théorie des langages 7 / 32


Introduction
Définitions et exemples Motivation
Dérivation Exemples
Arbre de dérivation Principe
Classification (de Chomsky) des grammaires

Principe (2/2)
On commence la réecriture à partir d’une règle de départ
particuière appelée axiome et on applique
successivement des règles pou obtenir un terme auquel
aucune règle ne s’applique.
Ce terme (qui ne peut pas être réecrit) est ainsi obtenu
ne comportant aucun symbole non terminal est donc un
mot défini sur l’alphabet des symboles terminaux.
L’ensemble de ces mots forment alors un langage que
l’on appelle engendré par la grammaire.

W.GABSI Cours Théorie des langages 8 / 32


Plan

1 Introduction

2 Définitions et exemples
Symboles terminaux/non terminaux
Grammaire
Règles de production

3 Dérivation

4 Arbre de dérivation

5 Classification (de Chomsky) des grammaires


Introduction
Définitions et exemples Symboles terminaux/non terminaux
Dérivation Grammaire
Arbre de dérivation Règles de production
Classification (de Chomsky) des grammaires

Symboles terminaux/non terminaux


On distingue les symboles terminaux et les symboles
non-terminaux.
Les symboles terminaux : les « lettres » du langage. Ils
constituent les symboles qui forment les mots engendrés
par la grammaire. Ils sont habituellement représentés par
des chiffres ou des lettres en minuscules.
É le, la, les,..., dans l’exemple
Les symboles non-terminaux : les symboles qu’il faut
encore définir. Ils servent initialement à la réécriture. Ils
sont habituellement représentés par des lettres en
majuscules.
É phrase, adjectif, article,expression,...

W.GABSI Cours Théorie des langages 10 / 32


Introduction
Définitions et exemples Symboles terminaux/non terminaux
Dérivation Grammaire
Arbre de dérivation Règles de production
Classification (de Chomsky) des grammaires

Grammaire
Une grammaire formelle est un quadruplet G = (VT , VN ,
S, P) où:
VT est un ensemble non vide de symboles terminaux
(vocabulaire terminal).
VN est un ensemble fini de symboles non-terminaux, avec
VT ∩ VN = ∅ appelé vocabulaire (ou alphabet) non terminal
S est un symbole initial appartenant à VN appelé axiome
(ou start).
P est un ensemble de règles de production (règle de
réécriture)
Un élément de P est une règle de production.

W.GABSI Cours Théorie des langages 11 / 32


Introduction
Définitions et exemples Symboles terminaux/non terminaux
Dérivation Grammaire
Arbre de dérivation Règles de production
Classification (de Chomsky) des grammaires

Règles de production
Une règle de production α → β précise que la séquence α
peut être remplacée par la séquence β avec:
α ∈ (VT ∪ VN )+
β ∈ (VT ∪ VN )∗
α est appelée la partie gauche de la production et β est
appelée la partie droite de la production
Exemple: Soit la grammaire G = (X, N, S, P) tels que:
X = {, b} L’ensemble des symboles terminaux
N = {S}: L’ensemble des symboles non terminaux.
S = S: L’axiome
S → ϵ|Sb qui peut être écrite autrement:

S → Sb
§
P=
S→ϵ

W.GABSI Cours Théorie des langages 12 / 32


Plan

1 Introduction

2 Définitions et exemples

3 Dérivation
Dérivation en une/plusieurs étape(s)
Squelette
Langage engendré
Dérivation à gauche/à droite

4 Arbre de dérivation

5 Classification (de Chomsky) des grammaires


Introduction
Dérivation en une/plusieurs étape(s)
Définitions et exemples
Squelette
Dérivation
Langage engendré
Arbre de dérivation
Dérivation à gauche/à droite
Classification (de Chomsky) des grammaires

Dérivation en une étape


On appelle dérivation l’application d’une ou de plusieurs
règles de production à partir d’un mot de (VT ∪ VN )+
On notera:
−→ : une dérivation obtenue par application d’une seule
règle de production. Il s’agit d’une dérivation en une étape.
Étant données deux mots f et g de (VT ∪ VN )∗ . f se dérive
directement en g pour la grammaire G, noté ƒ → g s’il
existe z1 , z2 ∈ (VT ∪ VN )∗ ,  ∈ (VT ∪ VN )+ et  ∈ (VT ∪ VN )∗
tels que f=z1 ..z2 , g= z1 ..z2 et ( → ) ∈ P
S → Sb
§
Exemple: Sur la grammaire
S→ϵ
S → ϵ, S → Sb et S → Sbb sont toutes des dérivations
en une étape.

W.GABSI Cours Théorie des langages 14 / 32


Introduction
Dérivation en une/plusieurs étape(s)
Définitions et exemples
Squelette
Dérivation
Langage engendré
Arbre de dérivation
Dérivation à gauche/à droite
Classification (de Chomsky) des grammaires

Dérivation en plusieurs étapes


On notera:

−→: une dérivation obtenue par l’application de n règles
de production ou n ≥0. Il s’agit d’une dérivation en
plusieurs étapes.
Étant données f et g deux mots de (VT ∪ VN )∗ . g dérive
de f à l’ordre k si et seulement si:
k=0 alors g=f
∃ƒ 0 ∈ (VT ∪ VN )∗ \ƒ → ƒ 0 (f’ dérive directement de f) et g
k
dérive de f’ à l’ordre k-1. On note f −→ g
∃ƒ0 , ƒ1 , ..., ƒk ∈ (VT ∪ VN )∗ \ƒ0 = ƒ , ƒk = g et
∀ ∈ {1, ..., k − 1}; ƒ(  − 1) → ƒ
S → Sb
§
Exemple: Sur la grammaire
S→ϵ
∗ ∗ ∗
S −→ b, S −→ bbb et S −→ Sbb sont toutes des
dérivations en plusieurs étapes.
W.GABSI Cours Théorie des langages 15 / 32
Introduction
Dérivation en une/plusieurs étape(s)
Définitions et exemples
Squelette
Dérivation
Langage engendré
Arbre de dérivation
Dérivation à gauche/à droite
Classification (de Chomsky) des grammaires

Squelette de dérivation
Le squelette de dérivation décrit la suite des règles
utilisées. Il s’agit de numéroter toutes les règles de
grammaires et d’utiliser ces numéros pour décrire les
dérivations successives en une étape.
S → Sb 1
§
Exemple: Sur la grammaire
S→ϵ 2

1 1 2
S −→ Sb −→ Sbb −→ bb est la squelette de
dérivation du mot aabb.

W.GABSI Cours Théorie des langages 16 / 32


Introduction
Dérivation en une/plusieurs étape(s)
Définitions et exemples
Squelette
Dérivation
Langage engendré
Arbre de dérivation
Dérivation à gauche/à droite
Classification (de Chomsky) des grammaires

Langage engendré
Étant donnée une grammaire G, on note L(G) le langage

généré par G et défini par { ∈ (VT )∗ \S −→ }
L contient tous les mots composés uniquement de
symboles terminaux (de lettres de l’alphabet) que l’on
peut former à partir de S.
Exemple:Le langage engendré par la grammaire
S → Sb 1
§
S→ϵ 2

est L = {n bn , n ≥ 0}

W.GABSI Cours Théorie des langages 17 / 32


Introduction
Dérivation en une/plusieurs étape(s)
Définitions et exemples
Squelette
Dérivation
Langage engendré
Arbre de dérivation
Dérivation à gauche/à droite
Classification (de Chomsky) des grammaires

Exemple
Soit la grammaire G ayant§ S pour axiome et P pour
S → Tb|c
règles de production P =
T → cSS|S
Soit le mot m = accacbb.
Deux dérivations permettent de construire le mot m.
Dérivation à gauche:
S → Tb → cSSb → ccSb → ccTbb → ccSbb →
cccbb
Dérivation à droite:
S → Tb → cSSb → cSTbb → cSSbb → cScbb →
cccbb
Ces deux dérivations sont identiques à l’ordre près de
dérivations.

W.GABSI Cours Théorie des langages 18 / 32


Introduction
Dérivation en une/plusieurs étape(s)
Définitions et exemples
Squelette
Dérivation
Langage engendré
Arbre de dérivation
Dérivation à gauche/à droite
Classification (de Chomsky) des grammaires

Dérivation à gauche/à droite


Deux dérivations sont possibles:
On peut dériver systématiquement le symbole non
terminal le plus à gauche du mot. On parle alors de
dérivation à gauche.
On peut dériver systématiquement le symbole non
terminal le plus à droite du mot. On parle alors de
dérivation à droite.
Les deux dérivations diffèrent uniquement par l’ordre
dans lequel on dérive les non terminaux. Par contre,
dans les deux cas, les symboles non terminaux sont
remplacés par les mêmes dérivations.

W.GABSI Cours Théorie des langages 19 / 32


Plan

1 Introduction

2 Définitions et exemples

3 Dérivation

4 Arbre de dérivation
Définition et exemple
Arbre ascendant/descendant
Grammaire ambigue

5 Classification (de Chomsky) des grammaires


Introduction
Définitions et exemples Définition et exemple
Dérivation Arbre ascendant/descendant
Arbre de dérivation Grammaire ambigue
Classification (de Chomsky) des grammaires

Définition
On appelle arbre de dérivation ou arbre syntaxique tout
arbre tel que:
La racine est l’axiome
Les feuilles sont des symboles terminaux ou ϵ
Les nœuds sont des symboles non terminaux
Les fils d’un nœud α sont β0 , ..., βn si seulement
α → β0 , ..., βn est une production
On essaie de construire l’arbre de dérivation d’un mot:
Si on y arrive, le mot appartient au langage généré par la
grammaire
Sinon, le mot n’appartient pas au langage généré par la
grammaire

W.GABSI Cours Théorie des langages 21 / 32


Introduction
Définitions et exemples Définition et exemple
Dérivation Arbre ascendant/descendant
Arbre de dérivation Grammaire ambigue
Classification (de Chomsky) des grammaires

Exemple
Soit la grammaire G ayant§ S pour axiome et P pour
S → Tb|c
règles de production P =
T → cSS|S
Soit le mot m = accacbb.
L’arbre de dérivation du mot m est le suivant:

W.GABSI Cours Théorie des langages 22 / 32


Introduction
Définitions et exemples Définition et exemple
Dérivation Arbre ascendant/descendant
Arbre de dérivation Grammaire ambigue
Classification (de Chomsky) des grammaires

Arbre ascendant/descendant
Ils existent deux approches pour la constructions des
arbres de dérivation:
Approche ascendante qui construit des arbres d’analyse en
partant des feuilles vers la racine.
Approche descendante qui construit des arbres d’analyse
en partant de la racine vers les feuilles
Exemple:

W.GABSI Cours Théorie des langages 23 / 32


Introduction
Définitions et exemples Définition et exemple
Dérivation Arbre ascendant/descendant
Arbre de dérivation Grammaire ambigue
Classification (de Chomsky) des grammaires
..
Grammaire ambige (1/3)
..
Définition: Une grammaire G est dite ambige s’il existe
au moins un mot de L(G) auquel on peut associer au
moins deux arbres de dérivation distincts.
Exemple: Soit la grammaire
nstr → if (expr) instr else instr


nstr → if (expr) instr

G=
 nstr → ...
epr → ...

Soit le mot m = if (x≥10) if (y≤0) a = 1 else a = 0


Pour le mot m, il existe deux arbres syntaxiques.

W.GABSI Cours Théorie des langages 24 / 32


Introduction
Définitions et exemples Définition et exemple
Dérivation Arbre ascendant/descendant
Arbre de dérivation Grammaire ambigue
Classification (de Chomsky) des grammaires
..
Grammaire ambige (2/3)
Première interprétation :

W.GABSI Cours Théorie des langages 25 / 32


Introduction
Définitions et exemples Définition et exemple
Dérivation Arbre ascendant/descendant
Arbre de dérivation Grammaire ambigue
Classification (de Chomsky) des grammaires
..
Grammaire ambige (3/3)
Deuxième interprétation :

..
⇒ G est donc ambige puisque le mot m possède deux
arbres de dérivation différents
W.GABSI Cours Théorie des langages 26 / 32
Plan

1 Introduction

2 Définitions et exemples

3 Dérivation

4 Arbre de dérivation

5 Classification (de Chomsky) des grammaires


Types de grammaires
Grammaire de type 3
Grammaire de type 2
Grammaire de type 1
Grammaire de type 0
Introduction Types de grammaires
Définitions et exemples Grammaire de type 3
Dérivation Grammaire de type 2
Arbre de dérivation Grammaire de type 1
Classification (de Chomsky) des grammaires Grammaire de type 0

Types de grammaire
On définit quatre types de grammaires.
Grammaire de type 3, dite encore grammaire régulière ou
rationnelle
Grammaire de type 2, dite encore grammaire hors
contexte ou encore grammaire algèbrique
Grammaire de type 1, dite encore grammaire contextuelle
Grammaire de type 0
Ces différentes formes dépendent de la forme des
productions.

W.GABSI Cours Théorie des langages 28 / 32


Introduction Types de grammaires
Définitions et exemples Grammaire de type 3
Dérivation Grammaire de type 2
Arbre de dérivation Grammaire de type 1
Classification (de Chomsky) des grammaires Grammaire de type 0

Grammaire de type 3
Une grammaire est dite régulière ou de type 3 si toutes
ses productions sont de la forme : A → wB ou A→ w
avec:
A appartient à VN (un seul non terminal)
B appartient à VN
w appartient à VT∗ (une chaine de symboles terminaux)
Exemple:

 S → S|T|bU|cc
G= T → cT|ϵ
 U → bS

W.GABSI Cours Théorie des langages 29 / 32


Introduction Types de grammaires
Définitions et exemples Grammaire de type 3
Dérivation Grammaire de type 2
Arbre de dérivation Grammaire de type 1
Classification (de Chomsky) des grammaires Grammaire de type 0

Grammaire de type 2
Une grammaire est dite hors contexte ou de type 2 si
toutes ses productions sont de la forme : A → B avec:
A appartient à VN (un seul non terminal)
B appartient à (VN UVT )∗
Exemples:
Exemple1: S → (S)S |ϵ
Exemple2: S → ϵ|Sb

W.GABSI Cours Théorie des langages 30 / 32


Introduction Types de grammaires
Définitions et exemples Grammaire de type 3
Dérivation Grammaire de type 2
Arbre de dérivation Grammaire de type 1
Classification (de Chomsky) des grammaires Grammaire de type 0

Grammaire de type 1
Une grammaire est dite contextuelle ou de type 1 si
toutes ses productions sont de la forme : A → B avec:
A appartient à (VN UVT )+
B appartient à (VN UVT )∗
|A| ≤ |B|
Les productions S → ϵ sont autorisées si S n’apparait pas
dans la partie droite d’une production de la grammaire

 ...
Exemple: G = ...
 Ab → trcb

Le remplacement de A par truc ne se fait que dans le


contexte ou A est etouré par a et b.

W.GABSI Cours Théorie des langages 31 / 32


Introduction Types de grammaires
Définitions et exemples Grammaire de type 3
Dérivation Grammaire de type 2
Arbre de dérivation Grammaire de type 1
Classification (de Chomsky) des grammaires Grammaire de type 0

Grammaire de type 0
Une grammaire est dite de type de 0 si aucune
restriction sur ses règles de production existe. Ses règles
sont de la forme : A → B avec:
A appartient à (VN UVT )+
B appartient à (VN UVT )∗

Les grammaires de type 0 englobent les grammaires de type1 qui


englobent les grammaires de type 2 qui englobent les grammaires de
type 3

W.GABSI Cours Théorie des langages 32 / 32