partie 1 langages et grammaires -...

26
Chapitre 2 Les grammaires et les langages Théorie des langages Partie 1 Langages et grammaires Théorie des langages

Upload: hathu

Post on 22-Feb-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

Chapitre 2 Les grammaires et les langages

Théorie des langages

Partie 1Langages et grammaires

Théorie des langages

Définitions de langages

Si un langage est fini: on peut le définir en énumérant tous ces mots. On dit qu’il est défini par extension.

Si un langage est infini: on peut le définir à travers les propriétés de ces mots. On dit qu’il est défini par compréhension. Ce langage peut être décrit par un ensemble de règles qui décrivent la manière de générer ces mots.

Chapitre 2 Les grammaires

Théorie des langages

Définition

Exemple1 Soit le vocabulaire V={A,B,...,Z,a,b,...,z,0,1,...,9}

A partir de V, on veut définir l’ensemble des identificateurs. Soit L cet ensemble.

L ={ident ∈V*/ ident commence par une lettre suivie d’une chaine de chiffres et de lettres éventuellement vide}

Théorie des langages

Chapitre 2 Les grammaires

Exemple1

ident se compose de lettre concaténée chaine_lettres_chiffres

lettre se compose de a ou b ou ……ou z ou A ou B ou ….ou Z

chaine_lettres_chiffres se compose de lettre concaténée chaine_lettres_chiffres

chaine_lettres_chiffres se compose de chiffre concaténée chaine_lettres_chiffres

chaine_lettres_chiffres se compose du mot vide

chiffre se compose de 0 ou 1 ou ……ou 9

Théorie des langages

Chapitre 2 Les grammaires

Définition

concaténée est remplacée par . ou est remplacé par /

Exemple1 version 1

ident lettre . chaine_lettres_chiffres

lettre a/b/………./z/A/B/……/Z

chaine_lettres_chiffres lettre . chaine_lettres_chiffres

chaine_lettres_chiffres chiffre . chaine_lettres_chiffres

chaine_lettres_chiffres ε

chiffre 0 / 1 / ……/ 9

Théorie des langages

Chapitre 2 Les grammaires

Définition

nb_dec partie_entière . partie_décimale

partie_entière chiffre . chaine_chiffres

chiffre 0 / 1 / ……/ 9

chaine_chiffres chiffre . chaine_chiffres / ε

partie_décimale . chiffre . chaine_lettres_chiffres

Théorie des langages

Chapitre 2 Les grammaires

Définition

Exemple2 le langage des nombres décimaux

Soit le vocabulaire V={0,1,...,9,.}L est le langage des nombres décimaux.

Point décimal

Définition formelleUne grammaire est un quadruplet: G = <VT, VN, S, R>VT: Vocabulaire terminal (en minuscule): alphabet du langage VN : Vocabulaire non-terminal (en majuscule); (VN ∩ VT = ∅)

S: Axiome ou symbole de départ. S∈ VN

R: Ensemble de règles de la grammaire

Théorie des langages

Chapitre 2 Les grammaires

R={ u → v / u ∈ (VTUVN) + et v ∈ (VTUVN)*}• Une règle u → v , u ∈ (VTUVN) + et v ∈∈∈∈ VT*

est appelée règle terminale.•Si plusieurs règles ont la même partie gauche, on peut factoriser leurs parties droites en utilisant ‘|’S → ab, S → aSb, S → c S → ab|aSb|c

Théorie des langages

Chapitre 2 Les grammaires

Pour l’exemple 1: G1 = <VT, VN, S, R>VT={A,B,...,Z,a,b,...,z,0,1,...,9}VN={ IDENT, LETTRE, CHIFFRE, CHAINE_LETTRE_CHIFFRE}S=IDENT

R={IDENT LETTRE CHAINE_LETTRES_CHIFFRES

LETTRE a/b/………./z/A/B/……/ZCHAINE_LETTRES_CHIFFRES LETTRE CHAINE_LETTRES_CHIFFRES/

CHIFFRE CHAINE_LETTRES_CHIFFRES/ε

CHIFFRE 0 / 1 / ……/ 9 }

Théorie des langages

Chapitre 2 Les grammaires

Pour l’exemple 2 G2 = <VT, VN, S, R>VT={0,1,...,9,.}VN={ NB_DEC, CHIFFRE, CHAINE_CHIFFRE,PARTIE_ENTIÈRE,

PARTIE_DÉCIMALE}S=NB_DEC

R={NB_DEC PARTIE_ENTIÈRE PARTIE_DECIMALE

PARTIE_ENTIÈRE CHIFFRE CHAINE_CHIFFRESCHIFFRE 0 / 1 / ……/ 9CHAINE_CHIFFRES CHIFFRE CHAINE_CHIFFRES / εPARTIE_DÉCIMALE . CHIFFRE CHAINE_CHIFFRES}

Dérivation

Théorie des langages

La notation u ⇒ v est appelée une dérivation et signifie que:

v dérive de u dans la grammaire Gou bien

u est remplacé par v dans la grammaire G.

Chapitre 2 Les grammaires

G

Étapes de dérivation

Théorie des langages

Soit une grammaire G = < VT, VN, S, R > Soient u ∈ V+ et v ∈ V* avec V= VTUVN

G permet de dériver v de u en une étape (u ⇒ v) ssi:u = xu’y (x, y peuvent être vides)v = xv’y (x, v’, y peuvent être vides)u’ → v’ est une règle de R

Chapitre 2 Les grammaires

G permet de dériver v de u en plusieurs étapes (u ⇒ v) ssi ∃k ≥ 0 et ∃v0, . . . , vk ∈ V ∗ tels queu = v0 , v = v

kvi

vi +1

pour 0 ≤ i < k est une règle de R

Dans le cas général, on écrit: (u ⇒ v) ssi ∃vi ∈ V ∗ i ∈ [0, k[

tels que u = v0 , v = vk et vi ⇒ vi+1

G

* G

* G

G

Exemples de dérivation

Théorie des langages

ε. NB_DEC . ε ε.PARTIE_ENTIÈRE PARTIE_DECIMALE.ε⇒

x.u’.y x. v’.yEt NB_DEC PARTIE_ENTIÈRE PARTIE_DECIMALE ∈ R

ε. PARTIE_ENTIÈRE PARTIE_DECIMALE ε.CHIFFRE CHAINECHIFFRE PARTIE_DECIMALE

x.u’.y x. v’.yEt PARTIE_ENTIÈRE

CHIFFRE CHAINECHIFFRE ∈ R

Chapitre 2 Les grammaires

NB_DEC CHIFFRE CHAINECHIFFRE PARTIE_DECIMALE*⇒

G

G

* G

Théorie des langages

Soit G = (VT, VN, E, R)

VT = {a,+, *, (, )} , VN = {E,T,F}

R : ( )

Chapitre 2 Les grammaires

Exemples de dérivation

Exemple de dérivation

Exemple3

12

34

5 6

1

2

4

6

1

3

4

6

6

Théorie des langages

Mots générés avec une grammaireSoit G = <VT, VN, S, R> Les mots générés par G sont les mots v ∈ VT* qui sont dérivés à partir de l'axiome S donc S ⇒G v

Langage généré par une grammaireUn langage généré par G est l’ensemble des mots v ∈ VT* qui peuvent être dérivés à partir de S: L(G) = {v ∈ VT* | S ⇒G v}

Remarque:•Une grammaire définit un seul langage;•Un langage peut être définit par plusieurs grammaires

Chapitre 2 Les grammaires

*

*

S a∈L(G)

aaS1 ⇒ aa ∈L(G)2*

2

aanS1 ⇒ aan ∈ L(G)

Théorie des langages

Exemple4

G=(VT, VN, S, R)VT = {a}, VN = {S,S1}, R : (S����aS1, S1����aS1 , S1 ���� ε)

Chapitre 2 Les grammaires

L(G)={w ∈ VT* | w=aan n≥0}={w ∈ VT* | w=an n≥1}

S aS11 3

3

3

1 2 3

2

∉L(G)

S

aS ⇒ aa ∈L(G’)1*

2

anS

∉L(G)

⇒an ∈ L(G’)

Théorie des langages

Exemple5

G’=(VT, VN, S, R)VT = {a}, VN = {S}, R : (S����aS, S����a )

Chapitre 2 Les grammaires

L(G’)={w ∈ VT* | w=an n≥1}

S a∈L(G’)2

2

2

1 2

1

L(G)=L(G’) G et G’ sont équivalentes

Théorie des langages

Soit VT = {a,b} et soit L1=

Chapitre 2 Les grammaires

Exemple5

Trouver une grammaire G1 qui génère L1

{ (ab)n am , n≥0, m ≥0 }

Soit VT={a,b} et soit L2={ (ab)n am, n≥0, m <=n }

Exemple6

Trouver une grammaire G2 qui génère L2

Théorie des langages

Soit VT = {a,b} et L3={ abna , n≥0 }

Chapitre 2 Les grammaires

Exemple7

Trouver une grammaire G3 qui génère L3

Exemple8

Trouver une grammaire G4 qui génère L4

Soit VT = {a,b,c} et L4={an bncm , n,m≥0}

Hiérarchie de Chomsky

Théorie des langages

En 1957, Chomsky Noam propose de classer les grammaires en 4 classes.Grammaire générale (type 0)Une grammaire est dite générale si toutes ses règles sont du format u → v, tel que u, v ∈ (VTUVN) *, u ≠ ε

(Pas de restrictions sur la forme des règles)

Chapitre 2 Les grammaires

Grammaire sous-contexte (type 1)Une grammaire est dite sous-contexte si toutes ses règles sont du format u → v, tel que u ∈ (VTUVN)+, v ∈ (VTUVN) *, et |u| ≤ |v|

Théorie des langages

Grammaire algébrique(type 2)Une grammaire est dite algébrique si toutes ses règles sont du format u → v, tel que u ∈ VN, v ∈ (VTUVN) *Le membre gauche de chaque règle est un seul symbole non terminal.

Chapitre 2 Les grammaires

Grammaire régulière (type 3)Une grammaire est dite régulière si toutes ses règles sont de l’un des deux formats :

A → uB, tel que A,B ∈ VN, u ∈ VT

A → u, tel que A ∈ VN, u ∈ VT

ou (exclusif) toutes ses règles sont de l’un des deux formats: A → Bu, tel que A,B ∈ VN, u ∈ VT

A → u, tel que A ∈ VN, u ∈ VT

Hiérarchie de Chomsky

Le type d’une grammaire est le type min de ces règles

Régulière à droite

Régulière à gauche

Théorie des langages

Soit G=(VT, VN, S, R)VT = {a,b}, VN = {S,B}

R : (S�aSB, S�b, bB�bb )

Règle de type2 Règle de type 3 Règle de type 1

La grammaire G est de type 1

Chapitre 2 Les grammaires

Hiérarchie de Chomsky

Le type d’une grammaire est le type min de ces règles

Théorie des langages

Soit G=(VT, VN, S, R)VT = {a,b}, VN = {S,A}

R : (S�aS , S�ab )

Règle régulière à droite Règle de type 2

La grammaire G est de type 2

Chapitre 2 Les grammaires

Hiérarchie de Chomsky

Le type d’une grammaire est le type min de ces règles

Théorie des langages

Type du langage

Le type du langage est le type max des grammaires qui

le génèrent. Pour trouver le type du langage, il faut:

- Chercher une grammaire de type 3 qui le génère, si elle

existe, le langage est de type 3 (ou régulier)

- Sinon, chercher une grammaire de type 2 qui le génère, si elle existe, le langage est de type 2 (ou hors contexte)

- Sinon, chercher une grammaire de type 1 qui le génère, si elle existe, le langage est de type 1 (ou contextuel)

- Sinon, le langage est de type 0.

Chapitre 2 Les grammaires

Théorie des langages

Type du langage

Le langage L={an bm , n,m≥0} est un langage de type 3

Chapitre 2 Les grammaires

Le langage L={an bn , n≥0} est un langage de type 2

Le langage L={an bn cn , n≥0} est un langage de type 1

Types de grammaires

Une grammaire de type i est aussi de type i-1

Le type de la grammaire augmente avec l’augmentation des contraintes sur la forme de ces règles.

Théorie des langages

Chapitre 2 Les grammaires

Type du langage

Un langage L est de type i ssi L est généré par une grammaire de type i et qu’il n’existe pas de grammaire G de type >i tel que L(G)=L .

Le type du langage L diminue avec l’augmentation des contraintes sur la forme de ces mots.

Théorie des langages

Chapitre 2 Les grammaires