partie 1 langages et grammaires -...
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