SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
Théorie des
langages
Présenté par Yann Caron
skyguide
ENSG Géomatique
Plan du cours
Grammaire formelle
Hierarchie de Chomsky
Automates
Grammaire formelle
Introduction
✔ Un langage de programmation est issue de
la théorie des langages formels
✔ Discipline entre les mathématiques et la
linguistique
✔ La syntaxe est la représentation (la forme)
✔ La sémantique en est le sens
✔ On distinguera donc la syntaxe du
langage (C# vs Java) et leurs paradigmes
(impératif, structuré, fonctionnel, objet,
concurrentiel)
4/53
Grammaire formelle
✔ Définition :
✔ Une grammaire formelle est constituée
d’un ensemble fini de règles de production
de forme A → B
✔ Où A et B sont constitués d’un ensemble
fini de symboles
✔ Des symboles non terminaux (nœuds)
✔ Des symboles terminaux (feuilles)
✔ Un symbole de départ (root)
5/53
Conventions
✔ Les symboles non terminaux sont en
majuscule
✔ Les symboles terminaux en minuscule
✔ Epsilon « ε » représente une chaîne vide
✔ Exemple de grammaire :
S → AB
S → ε
A → aS
B → b
6/53
Questions ?
✔ Pourquoi plusieurs règles S
✔ Peut-on réduire ?
✔ Quel est le symbole de départ ?
✔ Quel mots peut générer cette grammaire ?
✔ Et de quelle forme en général ?
7/53
Réponses
✔ Définir plusieurs fois la même règle revient
à appliquer une opération “ou” : S → AB | ε
✔ L’expression peut être réduite sous la
forme :
S → aSb
S → ε
✔ Les symboles de départ est S
✔ Peut générer : rien, ab, aabb, aaabbb …
✔ Les mots de la forme an
bn
(n lettre(s) ‘a’ suivit de n lettre(s) ‘b’ ou rien)
8/53
Exemple
✔ Éléments terminaux :
{ generate, hate, great, green, ideas,
linguists }
✔ Éléments non terminaux :
{ SENTENCE, NOUNPHRASE,
VERBPHRASE, NOUN, VERB, ADJ }
9/53
Exemple
✔ Règles de production
SENTENCE → NOUNPHRASE VERBPHRASE
NOUNPHRASE → ADJ NOUNPHRASE
NOUNPHRASE → NOUN
VERBPHRASE → VERB NOUNPHRASE
VERBPHRASE → VERB
NOUN → ideas
NOUN → linguists
VERB → generate
VERB → hate
ADJ → great
ADJ → green
10/53
Exemple
✔ Peut générer des phrases telles que :
✔ “ideas hate great linguists”
✔ “ideas generate”
✔ Mais ne peut pas générer des phrases
telles que :
✔ “ideas ideas great hate”
11/53
Hierarchie de Chomsky
Chomsky
✔ Classification inventée par
Noam Chomsky
✔ Né en 1928 à Philadelphie
✔ Linguiste théoricien
✔ Fondateur de la grammaire générative et
transformationnelle dans l’étude des
langages naturels
✔ Qualifié de “révolution Chomskienne”
✔ Anarchiste / Militant contre la guerre du
Vietnam
13/53
Noam Chomsky
1928
Hiérarchie de Chomsky
✔ Quatre classes de grammaires et de
langages formels
✔ Tel que :
✔ L3 ⊂ L2 ⊂ L1 ⊂ L0 ⊂ U
✔ Ou U est l’univers
des langages
14/53
Conventions mathématiques
✔ N est l’ensemble des éléments non
terminaux de la grammaire
✔ T est l’ensemble des éléments terminaux
de la grammaire
✔ V ∈ ( N ∪ T )
✔ ‘ε’ est le mot vide
✔ * est l’étoile de Kleene
tel que V* = Vn
 : n ≥ 0
15/53
Stephen Cole Kleene
1978 - 1994
Grammaire régulière L3
✔ Règle grammaire linéaire à gauche :
A → Ba, A → a ( A, B ∈ T : a ∈ T)
✔ Règle grammaire linéaire à droite :
A → aB, A → a ( A, B ∈ T : a ∈ T)
✔ Engendre des langages rationnels ou
réguliers
✔ Fonctionne avec des automates finis
✔ Exemples :
a, b, a*b*, ( aaab )*
16/53
Grammaire régulière L3
✔ Les règles à gauche et à droite ne peuvent
pas être autorisées simultanément :
A → aBb, A → a ( A, B ∈ N : a, b ∈ T ∪ ε )
✔ Sinon on obtient une grammaire linéaire
qui est intermédiaire entre L3 et L2
17/53
Grammaire non contextuelle
L2
✔ Les règles sont de la forme :
A → γ ( A ∈ N : γ ∈ V* )
✔ Engendre des langages algébriques
✔ Fonctionne avec des automates à pile
18/53
Grammaire non contextuelle
L2
✔ Sont des langages algébriques
✔ { an
bn
 : n ≥ 0 }
✔ Les langages de Dyck
langages bien parenthésés comme :
( ( ) ( ) ) ou ( [ ] { } ( [ ] ) )
couples de parenthèses (ouvrante
fermante)
✔ Les palindromes
✔ Plus généralement, il y a des règles qui
régissent b en fonction de a
19/53
Grammaire contextuelle L1
✔ Les règles sont de la forme :
α A β → α γ β ( A ∈ N : α, β, γ ∈ V* : γ ≠ ε )
✔ Toute règle comprenant un non terminal
entouré de deux mots ( son contexte )
✔ Engendre des langages contextuels
✔ Fonctionne avec des automates linéaires
bornés ( machine de Turing non
déterministe à mémoire linéaire)
✔ Exemples : ( an
bn
cn
 : n > 0)
✔ ( an
bm
cn
dm
 : n > 0 : m > 0)
20/53
Grammaire générale L0
✔ Les règles sont de la forme :
α → β ( α ∈ V*NV* : β ∈ V*)
✔ Aucunes restrictions
✔ Engendre des langages récursivement
énumérables
✔ Fonctionnent sur des machines de Turing
✔ Problème de l’appartenance d’un mot à un
langage de cette classe est indécidable
21/53
Automates
Automates
✔ Modèles mathématiques de calcul
✔ Modèle théorique d’ordinateur
23/53
Machine de Turing
Automate linéaire borné
Automate à pile
Automate
fini
Automate fini
✔ Possède un nombre fini d’état à un instant
donné
✔ Les transitions s’effectuent sous une
condition donnée
✔ Peu résoudre une sous classe de
problèmes en regards de la machine de
Turing
✔ Permet de reconnaître les langages
réguliers L3 - Lexer
24/53
Automate fini
✔ Possède un nombre fini d’état à un instant
donné
✔ Les transitions s’effectuent sous une
condition donnée
✔ Peu résoudre une sous classe de
problèmes en regards de la machine de
Turing
✔ Permet de résoudre les grammaires
formelles (langages réguliers L3)
25/53
Automate fini
✔ Représenté par un quintuplet (Q, Σ, δ, q0, T)
Où :
✔ Q est l’ensemble des états
✔ Σ est l’ensemble des symboles de
l’alphabet
✔ δ est l’ensemble des transitions
✔ q0 ∈ Q l’état initial
✔ T ⊂ Q l’ensemble des états terminaux
26/53
Exemple
✔ On veut reconnaître tous les mots qui
commencent par a, finissent par b et dont
le milieu est un nombre indéterminé de a
ou de b
✔ Soit l’expression suivante : a (a, b)* b
✔ Soit la grammaire suivante :
A → aB
B → aB
B → bB
B → b
27/53
Exemple
✔ Expression : { a ( a, b )n
b : n ≥ 0 }
✔ Σ = {a, b}
✔ Accepte : ab, aabab, abbb, aab
✔ N’accepte pas : a, b, abba, baba, bbbb
28/53
q0q0 q1q1 q2
a
b
a b
Exercice
✔ Existe-t-il un automate fini pour
l’expression : { an
bn
 : n ≥ 1 } ?
✔ Définir un automate qui accepte
l’expression : { a b cm
dn
 : m ≥ 0, n ≥ 1 }
✔ Quels mots accepte-t-il ?
✔ Quels mots n’accepte-t-il pas ?
29/53
Réponse
✔ Non il faut un automate à pile !
✔ DFA : { a b cm
dn
 : m ≥ 0, n ≥ 1 }
✔ Accepte : abd, abdd, abcd, abccd, abccdd
✔ N’accepte pas : bd, ab, abc, abcc, abdb
30/53
q0q0 q1q1 q3a
q2q2b
c d
d
Exemple concret
✔ Grammaire :
V → A AN*
AN = A | N
A → [a-Z]
N→ [0-9]
✔ Expression :
[a-Z] ( [a-Z] | [0-9] )n
 : n ≥ 0
31/53
q0q0 q1
[a-Z]
[0-9]
[a-Z]
DFA, NFA, NFA-ε
✔ Un automate fini est déterministe SSI :
✔ Il ne possède qu’un état initial
✔ Pour tout état q et alphabet a, il n’existe
qu’une seule transition de q par
l’alphabet a
✔ Par opposition un automate fini est non-
déterministe quand une transition peut
mener à des états différents
32/53
DFA, NFA, NFA-ε
✔ Un automate fini est déterministe SSI :
✔ Il ne possède qu’un état initiale q0
✔ Pour tout état q et alphabet a, il n’existe
qu’une seule transition de q vers q+1 par
mot de a
✔ Par opposition un automate fini est non-
déterministe quand une transition peut
mener à des états différents
✔ Le NFA supporte les transition ε (mot vide)
33/53
DFA, NFA, NFA-ε
✔ Est non déterministe car la transition b
peut mener ver q0 ou q1
✔ NFA et DFA supporte les mêmes langages
✔ NFA est une généralisation de DFA
✔ Une algorithme permet de transformer un
NFA en NFA-ε puis en DFA
34/53
q0q0 q1
a, b
b
Lemme de la pompe
✔ Certains langages ne sont pas
reconnaissables par un automate fini
{ an
bn
 : n ≥ 0 }
✔ Le Lemme de la pompe permet de le
démontrer mathématiquement (par
l’absurde) si un langage est rationnel ou
non
35/53
Automate à pile
✔ Généralisation de l’automate fini mais
dispose d’une mémoire infinie sous forme
d’une pile
✔ Les transitions s’effectuent sous une
condition donnée en input et selon l’état
de la pile ( vide, non vide, dernier état = x )
✔ Chaque transition peu empiler un état
✔ Permet de reconnaître les langages non
contextuels L2 - Parser
36/53
Automate à pile
37/53
Automate à pile
✔ Un septuplet (Q, A, Z, δ, z0, q0, T)
Où :
✔ Q est l’ensemble des états
✔ A l’alphabet d’entré
✔ Z l’alphabet de pile
✔ δ est l’ensemble des transitions
✔ z0 ∈ Z est le symbole de fond de pile
✔ q0 ∈ Q l’état initial
✔ T ⊂ Q l’ensemble des états terminaux
38/53
Exemple
✔ Expression : { an
bn
 : n ≥ 0 }
✔ aaabbb
39/53
q1q1q0
a, ε → a
ε, ε → $
q3 q2q2
b, a → ε
b, a → ε
ε, $ → ε
$
a
a
a
Exemple
✔ Accepte :
ab, aabb, aaabbb
✔ N’accepte pas :
a, b, abba, baba
Questions
✔ Comment transformer l’automate pour
l’expression : { an
bn
 : n ≥ 1 } ?
✔ Comment transformer l’automate pour
l’expression : { an
bn
cn
 : n ≥ 0 } ?
41/53
Automate linéaire borné
✔ Solution :
✔ Comment transformer l’automate pour
l’expression : { an
bn
cn
 : n ≥ 0 } ?
✔ Impossible avec un automate à pile
✔ Il faut utiliser deux piles (automate linéaire
borné)
✔ Lien YouTube Prof Bill Byrne :
✔ https://www.youtube.com/watch?
v=p1peR1Qbp0s
42/53
Automate linéaire borné
✔ aabbcc
43/53
q1q1q0
a, ε → a, $ → ε
ε, ε → $, ε → $
q4 q3q3
b, a → ε, ε → b
c, ε → $, b → ε
ε, $ → ε, $ → ε
$
a
aq3q3 b, a → ε,
ε → b
c, ε → $, b → ε
$
b
b
Automate linéaire borné
✔ Deux piles peuvent être contenues dans le
même espace
✔ Il suffit de les mettre en vis-à-vis
✔ Théoriquement, on rejoint le
fonctionnement de la mémoire d’un
ordinateur (cf fonctionnement d’un
programme)
✔ Si la mémoire est infinie alors c’est une
machine de Turing 44/53
a a a a b b b
Automate linéaire borné
✔ Reconnaît des langages de type Context
Sensitive L1
✔ Langages Récursifs ( capable de se
définir eux même ? )
✔ Ne pas confondre avec les langages
récursivement énumérables (machine de
Turing)
✔ Justement, un automate dont la mémoire
est infinie est une machine de Turing
45/53
Machine de Turing
✔ Machine abstraite (mathématiques) qui
fonde la science informatique
✔ Permet de vérifier les langages
récursivement énumérables L0
✔ Première définition systématique des
programmes informatique
✔ Porte en son fondement que les données
et le programme sont de même nature :
✔ Le programme est contenu sur une
seconde bande infinie
46/53
Machine de Turing
✔ Composée de :
✔ Une tête de lecture qui se déplace, lit et
écrit sur une bande infinie
✔ Un registre d’état qui mémorise l’état de
la machine
✔ Une table d’actions (programme)
47/53
Machine de Turing
✔ Un septuplet (Q, A, a, Z, q0, δ, T) ou :
✔ Q est un ensemble fini d’états
✔ A l’alphabet de travail
✔ a ∈ A symbole blanc (case vide)
✔ Z ∈ A  a est l’alphabet d’entrée
✔ q0 ∈ Q l’état initial
✔ δ : Q x Γ → Q x Γ x {←, →} est la fonction
de transition
✔ T ⊂ Q l’ensemble des états terminaux
48/53
Opération + 1
49/53
Démonstration
✔ Online :
✔ https://interstices.info/jcms/nn_72391/com
ment-fonctionne-une-machine-de-turing
50/53
Conclusion
51/53
Grammaire Règles de production Langage Machine abstraite
L0 α → β Récursivement
énumérable
Sans restriction
Machine de Turing (bande
infinie)
L1 αAβ → αγβ Contextuel Automate linéairement
borné (2 piles)
(récursion + 1 pile)
L2 A → γ Algébrique
Non Contextel
Context free language
Automate à pile (1 pile)
(ou récursion)
L3 A → aB,
A → a
Rationnel, Langages
réguliers
Automate fini (1 seul état
courant)
Conclusion
52/53
Machine de Turing
Automate linéaire borné
Automate à pile
Automate
fini
Analyseur Lexical
Grammaire régulièreAnalyseur Syntaxique
Grammaire non contextuelle (CFG)
Merci de votre attention

Contenu connexe

Tendances

Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régner
Sana Aroussi
 
Chapitre 3 la recherche tabou
Chapitre 3 la recherche tabouChapitre 3 la recherche tabou
Chapitre 3 la recherche tabou
Achraf Manaa
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de Données
Anass41
 
Chapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdfChapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdf
MbarkiIsraa
 
rapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSATrapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSAT
Siwar GUEMRI
 

Tendances (20)

Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-Eclipse
 
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFITheses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
 
Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régner
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence
 
L'algorithme du Recuit simule
L'algorithme du Recuit simuleL'algorithme du Recuit simule
L'algorithme du Recuit simule
 
Chapitre 3 la recherche tabou
Chapitre 3 la recherche tabouChapitre 3 la recherche tabou
Chapitre 3 la recherche tabou
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
Conception d’une plateforme web d’e-Commerce au sein d’une entreprise commerc...
 
Algorithmique et Structures de Données II
Algorithmique et Structures de Données IIAlgorithmique et Structures de Données II
Algorithmique et Structures de Données II
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage C
 
Recherche à voisinage variable
Recherche à voisinage variableRecherche à voisinage variable
Recherche à voisinage variable
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Calculatrice scientifique en JAVA(AWT)
Calculatrice scientifique en JAVA(AWT)Calculatrice scientifique en JAVA(AWT)
Calculatrice scientifique en JAVA(AWT)
 
Diviser Pour Régner
Diviser Pour RégnerDiviser Pour Régner
Diviser Pour Régner
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de Données
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
 
Projet Fin D'étude Application Mobile
Projet Fin D'étude Application MobileProjet Fin D'étude Application Mobile
Projet Fin D'étude Application Mobile
 
Chapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdfChapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdf
 
rapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSATrapport PFE ingénieur génie logiciel INSAT
rapport PFE ingénieur génie logiciel INSAT
 

Plus de Yann Caron

Plus de Yann Caron (20)

Théorie des langages - TP - WellKnownText
Théorie des langages - TP  - WellKnownTextThéorie des langages - TP  - WellKnownText
Théorie des langages - TP - WellKnownText
 
Théorie des langages - 03 - Principes et paradigmes
Théorie des langages - 03 - Principes et paradigmesThéorie des langages - 03 - Principes et paradigmes
Théorie des langages - 03 - Principes et paradigmes
 
Théorie des langages - 02 - Code gen
Théorie des langages - 02 - Code genThéorie des langages - 02 - Code gen
Théorie des langages - 02 - Code gen
 
Théorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbresThéorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbres
 
Théorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - Compilation
 
Théorie des langages - 00 - Introduction
Théorie des langages - 00 - IntroductionThéorie des langages - 00 - Introduction
Théorie des langages - 00 - Introduction
 
Algea - 04 - conclusion
Algea - 04 - conclusionAlgea - 04 - conclusion
Algea - 04 - conclusion
 
Algea - 03 - ennemis
Algea - 03 - ennemisAlgea - 03 - ennemis
Algea - 03 - ennemis
 
Algea - 02 - gemmes
Algea - 02 - gemmesAlgea - 02 - gemmes
Algea - 02 - gemmes
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - hero
 
ALGEA - 00 - introduction
ALGEA - 00 - introductionALGEA - 00 - introduction
ALGEA - 00 - introduction
 
Programmation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueProgrammation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - Geomatique
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - Spatialite
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web services
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridge
 
Programmation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesProgrammation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancées
 
Programmation Android - 06 - Publication
Programmation Android - 06 - PublicationProgrammation Android - 06 - Publication
Programmation Android - 06 - Publication
 
Programmation Android - 05 - Google map
Programmation Android - 05 - Google mapProgrammation Android - 05 - Google map
Programmation Android - 05 - Google map
 
Programmation Android - 04 - Databases
Programmation Android - 04 - DatabasesProgrammation Android - 04 - Databases
Programmation Android - 04 - Databases
 
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesProgrammation Android - 03 - IHM bases
Programmation Android - 03 - IHM bases
 

Théorie des langages - 04 Théorie des langages

  • 1. Théorie des langages Présenté par Yann Caron skyguide ENSG Géomatique
  • 2. Plan du cours Grammaire formelle Hierarchie de Chomsky Automates
  • 4. Introduction ✔ Un langage de programmation est issue de la théorie des langages formels ✔ Discipline entre les mathématiques et la linguistique ✔ La syntaxe est la représentation (la forme) ✔ La sémantique en est le sens ✔ On distinguera donc la syntaxe du langage (C# vs Java) et leurs paradigmes (impératif, structuré, fonctionnel, objet, concurrentiel) 4/53
  • 5. Grammaire formelle ✔ Définition : ✔ Une grammaire formelle est constituée d’un ensemble fini de règles de production de forme A → B ✔ Où A et B sont constitués d’un ensemble fini de symboles ✔ Des symboles non terminaux (nœuds) ✔ Des symboles terminaux (feuilles) ✔ Un symbole de départ (root) 5/53
  • 6. Conventions ✔ Les symboles non terminaux sont en majuscule ✔ Les symboles terminaux en minuscule ✔ Epsilon « ε » représente une chaîne vide ✔ Exemple de grammaire : S → AB S → ε A → aS B → b 6/53
  • 7. Questions ? ✔ Pourquoi plusieurs règles S ✔ Peut-on réduire ? ✔ Quel est le symbole de départ ? ✔ Quel mots peut générer cette grammaire ? ✔ Et de quelle forme en général ? 7/53
  • 8. Réponses ✔ Définir plusieurs fois la même règle revient à appliquer une opération “ou” : S → AB | ε ✔ L’expression peut être réduite sous la forme : S → aSb S → ε ✔ Les symboles de départ est S ✔ Peut générer : rien, ab, aabb, aaabbb … ✔ Les mots de la forme an bn (n lettre(s) ‘a’ suivit de n lettre(s) ‘b’ ou rien) 8/53
  • 9. Exemple ✔ Éléments terminaux : { generate, hate, great, green, ideas, linguists } ✔ Éléments non terminaux : { SENTENCE, NOUNPHRASE, VERBPHRASE, NOUN, VERB, ADJ } 9/53
  • 10. Exemple ✔ Règles de production SENTENCE → NOUNPHRASE VERBPHRASE NOUNPHRASE → ADJ NOUNPHRASE NOUNPHRASE → NOUN VERBPHRASE → VERB NOUNPHRASE VERBPHRASE → VERB NOUN → ideas NOUN → linguists VERB → generate VERB → hate ADJ → great ADJ → green 10/53
  • 11. Exemple ✔ Peut générer des phrases telles que : ✔ “ideas hate great linguists” ✔ “ideas generate” ✔ Mais ne peut pas générer des phrases telles que : ✔ “ideas ideas great hate” 11/53
  • 13. Chomsky ✔ Classification inventée par Noam Chomsky ✔ Né en 1928 à Philadelphie ✔ Linguiste théoricien ✔ Fondateur de la grammaire générative et transformationnelle dans l’étude des langages naturels ✔ Qualifié de “révolution Chomskienne” ✔ Anarchiste / Militant contre la guerre du Vietnam 13/53 Noam Chomsky 1928
  • 14. Hiérarchie de Chomsky ✔ Quatre classes de grammaires et de langages formels ✔ Tel que : ✔ L3 ⊂ L2 ⊂ L1 ⊂ L0 ⊂ U ✔ Ou U est l’univers des langages 14/53
  • 15. Conventions mathématiques ✔ N est l’ensemble des éléments non terminaux de la grammaire ✔ T est l’ensemble des éléments terminaux de la grammaire ✔ V ∈ ( N ∪ T ) ✔ ‘ε’ est le mot vide ✔ * est l’étoile de Kleene tel que V* = Vn  : n ≥ 0 15/53 Stephen Cole Kleene 1978 - 1994
  • 16. Grammaire régulière L3 ✔ Règle grammaire linéaire à gauche : A → Ba, A → a ( A, B ∈ T : a ∈ T) ✔ Règle grammaire linéaire à droite : A → aB, A → a ( A, B ∈ T : a ∈ T) ✔ Engendre des langages rationnels ou réguliers ✔ Fonctionne avec des automates finis ✔ Exemples : a, b, a*b*, ( aaab )* 16/53
  • 17. Grammaire régulière L3 ✔ Les règles à gauche et à droite ne peuvent pas être autorisées simultanément : A → aBb, A → a ( A, B ∈ N : a, b ∈ T ∪ ε ) ✔ Sinon on obtient une grammaire linéaire qui est intermédiaire entre L3 et L2 17/53
  • 18. Grammaire non contextuelle L2 ✔ Les règles sont de la forme : A → γ ( A ∈ N : γ ∈ V* ) ✔ Engendre des langages algébriques ✔ Fonctionne avec des automates à pile 18/53
  • 19. Grammaire non contextuelle L2 ✔ Sont des langages algébriques ✔ { an bn  : n ≥ 0 } ✔ Les langages de Dyck langages bien parenthésés comme : ( ( ) ( ) ) ou ( [ ] { } ( [ ] ) ) couples de parenthèses (ouvrante fermante) ✔ Les palindromes ✔ Plus généralement, il y a des règles qui régissent b en fonction de a 19/53
  • 20. Grammaire contextuelle L1 ✔ Les règles sont de la forme : α A β → α γ β ( A ∈ N : α, β, γ ∈ V* : γ ≠ ε ) ✔ Toute règle comprenant un non terminal entouré de deux mots ( son contexte ) ✔ Engendre des langages contextuels ✔ Fonctionne avec des automates linéaires bornés ( machine de Turing non déterministe à mémoire linéaire) ✔ Exemples : ( an bn cn  : n > 0) ✔ ( an bm cn dm  : n > 0 : m > 0) 20/53
  • 21. Grammaire générale L0 ✔ Les règles sont de la forme : α → β ( α ∈ V*NV* : β ∈ V*) ✔ Aucunes restrictions ✔ Engendre des langages récursivement énumérables ✔ Fonctionnent sur des machines de Turing ✔ Problème de l’appartenance d’un mot à un langage de cette classe est indécidable 21/53
  • 23. Automates ✔ Modèles mathématiques de calcul ✔ Modèle théorique d’ordinateur 23/53 Machine de Turing Automate linéaire borné Automate à pile Automate fini
  • 24. Automate fini ✔ Possède un nombre fini d’état à un instant donné ✔ Les transitions s’effectuent sous une condition donnée ✔ Peu résoudre une sous classe de problèmes en regards de la machine de Turing ✔ Permet de reconnaître les langages réguliers L3 - Lexer 24/53
  • 25. Automate fini ✔ Possède un nombre fini d’état à un instant donné ✔ Les transitions s’effectuent sous une condition donnée ✔ Peu résoudre une sous classe de problèmes en regards de la machine de Turing ✔ Permet de résoudre les grammaires formelles (langages réguliers L3) 25/53
  • 26. Automate fini ✔ Représenté par un quintuplet (Q, Σ, δ, q0, T) Où : ✔ Q est l’ensemble des états ✔ Σ est l’ensemble des symboles de l’alphabet ✔ δ est l’ensemble des transitions ✔ q0 ∈ Q l’état initial ✔ T ⊂ Q l’ensemble des états terminaux 26/53
  • 27. Exemple ✔ On veut reconnaître tous les mots qui commencent par a, finissent par b et dont le milieu est un nombre indéterminé de a ou de b ✔ Soit l’expression suivante : a (a, b)* b ✔ Soit la grammaire suivante : A → aB B → aB B → bB B → b 27/53
  • 28. Exemple ✔ Expression : { a ( a, b )n b : n ≥ 0 } ✔ Σ = {a, b} ✔ Accepte : ab, aabab, abbb, aab ✔ N’accepte pas : a, b, abba, baba, bbbb 28/53 q0q0 q1q1 q2 a b a b
  • 29. Exercice ✔ Existe-t-il un automate fini pour l’expression : { an bn  : n ≥ 1 } ? ✔ Définir un automate qui accepte l’expression : { a b cm dn  : m ≥ 0, n ≥ 1 } ✔ Quels mots accepte-t-il ? ✔ Quels mots n’accepte-t-il pas ? 29/53
  • 30. Réponse ✔ Non il faut un automate à pile ! ✔ DFA : { a b cm dn  : m ≥ 0, n ≥ 1 } ✔ Accepte : abd, abdd, abcd, abccd, abccdd ✔ N’accepte pas : bd, ab, abc, abcc, abdb 30/53 q0q0 q1q1 q3a q2q2b c d d
  • 31. Exemple concret ✔ Grammaire : V → A AN* AN = A | N A → [a-Z] N→ [0-9] ✔ Expression : [a-Z] ( [a-Z] | [0-9] )n  : n ≥ 0 31/53 q0q0 q1 [a-Z] [0-9] [a-Z]
  • 32. DFA, NFA, NFA-ε ✔ Un automate fini est déterministe SSI : ✔ Il ne possède qu’un état initial ✔ Pour tout état q et alphabet a, il n’existe qu’une seule transition de q par l’alphabet a ✔ Par opposition un automate fini est non- déterministe quand une transition peut mener à des états différents 32/53
  • 33. DFA, NFA, NFA-ε ✔ Un automate fini est déterministe SSI : ✔ Il ne possède qu’un état initiale q0 ✔ Pour tout état q et alphabet a, il n’existe qu’une seule transition de q vers q+1 par mot de a ✔ Par opposition un automate fini est non- déterministe quand une transition peut mener à des états différents ✔ Le NFA supporte les transition ε (mot vide) 33/53
  • 34. DFA, NFA, NFA-ε ✔ Est non déterministe car la transition b peut mener ver q0 ou q1 ✔ NFA et DFA supporte les mêmes langages ✔ NFA est une généralisation de DFA ✔ Une algorithme permet de transformer un NFA en NFA-ε puis en DFA 34/53 q0q0 q1 a, b b
  • 35. Lemme de la pompe ✔ Certains langages ne sont pas reconnaissables par un automate fini { an bn  : n ≥ 0 } ✔ Le Lemme de la pompe permet de le démontrer mathématiquement (par l’absurde) si un langage est rationnel ou non 35/53
  • 36. Automate à pile ✔ Généralisation de l’automate fini mais dispose d’une mémoire infinie sous forme d’une pile ✔ Les transitions s’effectuent sous une condition donnée en input et selon l’état de la pile ( vide, non vide, dernier état = x ) ✔ Chaque transition peu empiler un état ✔ Permet de reconnaître les langages non contextuels L2 - Parser 36/53
  • 38. Automate à pile ✔ Un septuplet (Q, A, Z, δ, z0, q0, T) Où : ✔ Q est l’ensemble des états ✔ A l’alphabet d’entré ✔ Z l’alphabet de pile ✔ δ est l’ensemble des transitions ✔ z0 ∈ Z est le symbole de fond de pile ✔ q0 ∈ Q l’état initial ✔ T ⊂ Q l’ensemble des états terminaux 38/53
  • 39. Exemple ✔ Expression : { an bn  : n ≥ 0 } ✔ aaabbb 39/53 q1q1q0 a, ε → a ε, ε → $ q3 q2q2 b, a → ε b, a → ε ε, $ → ε $ a a a
  • 40. Exemple ✔ Accepte : ab, aabb, aaabbb ✔ N’accepte pas : a, b, abba, baba
  • 41. Questions ✔ Comment transformer l’automate pour l’expression : { an bn  : n ≥ 1 } ? ✔ Comment transformer l’automate pour l’expression : { an bn cn  : n ≥ 0 } ? 41/53
  • 42. Automate linéaire borné ✔ Solution : ✔ Comment transformer l’automate pour l’expression : { an bn cn  : n ≥ 0 } ? ✔ Impossible avec un automate à pile ✔ Il faut utiliser deux piles (automate linéaire borné) ✔ Lien YouTube Prof Bill Byrne : ✔ https://www.youtube.com/watch? v=p1peR1Qbp0s 42/53
  • 43. Automate linéaire borné ✔ aabbcc 43/53 q1q1q0 a, ε → a, $ → ε ε, ε → $, ε → $ q4 q3q3 b, a → ε, ε → b c, ε → $, b → ε ε, $ → ε, $ → ε $ a aq3q3 b, a → ε, ε → b c, ε → $, b → ε $ b b
  • 44. Automate linéaire borné ✔ Deux piles peuvent être contenues dans le même espace ✔ Il suffit de les mettre en vis-à-vis ✔ Théoriquement, on rejoint le fonctionnement de la mémoire d’un ordinateur (cf fonctionnement d’un programme) ✔ Si la mémoire est infinie alors c’est une machine de Turing 44/53 a a a a b b b
  • 45. Automate linéaire borné ✔ Reconnaît des langages de type Context Sensitive L1 ✔ Langages Récursifs ( capable de se définir eux même ? ) ✔ Ne pas confondre avec les langages récursivement énumérables (machine de Turing) ✔ Justement, un automate dont la mémoire est infinie est une machine de Turing 45/53
  • 46. Machine de Turing ✔ Machine abstraite (mathématiques) qui fonde la science informatique ✔ Permet de vérifier les langages récursivement énumérables L0 ✔ Première définition systématique des programmes informatique ✔ Porte en son fondement que les données et le programme sont de même nature : ✔ Le programme est contenu sur une seconde bande infinie 46/53
  • 47. Machine de Turing ✔ Composée de : ✔ Une tête de lecture qui se déplace, lit et écrit sur une bande infinie ✔ Un registre d’état qui mémorise l’état de la machine ✔ Une table d’actions (programme) 47/53
  • 48. Machine de Turing ✔ Un septuplet (Q, A, a, Z, q0, δ, T) ou : ✔ Q est un ensemble fini d’états ✔ A l’alphabet de travail ✔ a ∈ A symbole blanc (case vide) ✔ Z ∈ A a est l’alphabet d’entrée ✔ q0 ∈ Q l’état initial ✔ δ : Q x Γ → Q x Γ x {←, →} est la fonction de transition ✔ T ⊂ Q l’ensemble des états terminaux 48/53
  • 51. Conclusion 51/53 Grammaire Règles de production Langage Machine abstraite L0 α → β Récursivement énumérable Sans restriction Machine de Turing (bande infinie) L1 αAβ → αγβ Contextuel Automate linéairement borné (2 piles) (récursion + 1 pile) L2 A → γ Algébrique Non Contextel Context free language Automate à pile (1 pile) (ou récursion) L3 A → aB, A → a Rationnel, Langages réguliers Automate fini (1 seul état courant)
  • 52. Conclusion 52/53 Machine de Turing Automate linéaire borné Automate à pile Automate fini Analyseur Lexical Grammaire régulièreAnalyseur Syntaxique Grammaire non contextuelle (CFG)
  • 53. Merci de votre attention