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

Logique floue - Implication de Mamdani
Logique floue - Implication de MamdaniLogique floue - Implication de Mamdani
Logique floue - Implication de MamdaniYassine Zahraoui
 
Le problème de voyageur de commerce: algorithme génétique
Le problème de voyageur de commerce: algorithme génétiqueLe problème de voyageur de commerce: algorithme génétique
Le problème de voyageur de commerce: algorithme génétiqueRima Lassoued
 
Cours et exercices logique mr djeddi kamel
Cours et exercices  logique mr djeddi kamelCours et exercices  logique mr djeddi kamel
Cours et exercices logique mr djeddi kamelKamel Djeddi
 
Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheMohamed Heny SELMI
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 
Intelligence artificielle et système multi-agent
Intelligence artificielle et système multi-agentIntelligence artificielle et système multi-agent
Intelligence artificielle et système multi-agentNoureddine Djebbari
 
Algorithme génétique
Algorithme génétiqueAlgorithme génétique
Algorithme génétiqueIlhem Daoudi
 
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdfMbarkiIsraa
 
Java cours n° 2 - classe-objet-constructeur
Java   cours n° 2 - classe-objet-constructeurJava   cours n° 2 - classe-objet-constructeur
Java cours n° 2 - classe-objet-constructeurAbdelwahab Naji
 
La gestion des exceptions avec Java
La gestion des exceptions avec JavaLa gestion des exceptions avec Java
La gestion des exceptions avec JavaPapa Cheikh Cisse
 
réseaux de neurones artificiels
réseaux de neurones artificiels réseaux de neurones artificiels
réseaux de neurones artificiels Oussama Werfelli
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptionsAmir Souissi
 
Systèmes d'Exploitation - chp2-gestion des processus
Systèmes d'Exploitation - chp2-gestion des processusSystèmes d'Exploitation - chp2-gestion des processus
Systèmes d'Exploitation - chp2-gestion des processusLilia Sfaxi
 
cour de compilation
cour de compilation cour de compilation
cour de compilation Ens Kouba
 
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...Jean Rohmer
 

Tendances (20)

Logique floue - Implication de Mamdani
Logique floue - Implication de MamdaniLogique floue - Implication de Mamdani
Logique floue - Implication de Mamdani
 
Le problème de voyageur de commerce: algorithme génétique
Le problème de voyageur de commerce: algorithme génétiqueLe problème de voyageur de commerce: algorithme génétique
Le problème de voyageur de commerce: algorithme génétique
 
Cours et exercices logique mr djeddi kamel
Cours et exercices  logique mr djeddi kamelCours et exercices  logique mr djeddi kamel
Cours et exercices logique mr djeddi kamel
 
Intelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de rechercheIntelligence Artificielle - Algorithmes de recherche
Intelligence Artificielle - Algorithmes de recherche
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 
système multi agent
système multi agentsystème multi agent
système multi agent
 
Intelligence artificielle et système multi-agent
Intelligence artificielle et système multi-agentIntelligence artificielle et système multi-agent
Intelligence artificielle et système multi-agent
 
Regression logistque
Regression  logistqueRegression  logistque
Regression logistque
 
Algorithme génétique
Algorithme génétiqueAlgorithme génétique
Algorithme génétique
 
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
 
Java cours n° 2 - classe-objet-constructeur
Java   cours n° 2 - classe-objet-constructeurJava   cours n° 2 - classe-objet-constructeur
Java cours n° 2 - classe-objet-constructeur
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
La gestion des exceptions avec Java
La gestion des exceptions avec JavaLa gestion des exceptions avec Java
La gestion des exceptions avec Java
 
réseaux de neurones artificiels
réseaux de neurones artificiels réseaux de neurones artificiels
réseaux de neurones artificiels
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptions
 
Systèmes d'Exploitation - chp2-gestion des processus
Systèmes d'Exploitation - chp2-gestion des processusSystèmes d'Exploitation - chp2-gestion des processus
Systèmes d'Exploitation - chp2-gestion des processus
 
cour de compilation
cour de compilation cour de compilation
cour de compilation
 
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...
Intelligence Artificielle: résolution de problèmes en Prolog ou Prolog pour l...
 

Plus de Yann Caron

Théorie des langages - TP - WellKnownText
Théorie des langages - TP  - WellKnownTextThéorie des langages - TP  - WellKnownText
Théorie des langages - TP - WellKnownTextYann Caron
 
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 paradigmesYann Caron
 
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 genYann Caron
 
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'arbresYann Caron
 
Théorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationYann Caron
 
Théorie des langages - 00 - Introduction
Théorie des langages - 00 - IntroductionThéorie des langages - 00 - Introduction
Théorie des langages - 00 - IntroductionYann Caron
 
Algea - 04 - conclusion
Algea - 04 - conclusionAlgea - 04 - conclusion
Algea - 04 - conclusionYann Caron
 
Algea - 03 - ennemis
Algea - 03 - ennemisAlgea - 03 - ennemis
Algea - 03 - ennemisYann Caron
 
Algea - 02 - gemmes
Algea - 02 - gemmesAlgea - 02 - gemmes
Algea - 02 - gemmesYann Caron
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - heroYann Caron
 
ALGEA - 00 - introduction
ALGEA - 00 - introductionALGEA - 00 - introduction
ALGEA - 00 - introductionYann Caron
 
Programmation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueProgrammation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueYann Caron
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteYann Caron
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web servicesYann Caron
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeYann Caron
 
Programmation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesProgrammation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesYann Caron
 
Programmation Android - 06 - Publication
Programmation Android - 06 - PublicationProgrammation Android - 06 - Publication
Programmation Android - 06 - PublicationYann Caron
 
Programmation Android - 05 - Google map
Programmation Android - 05 - Google mapProgrammation Android - 05 - Google map
Programmation Android - 05 - Google mapYann Caron
 
Programmation Android - 04 - Databases
Programmation Android - 04 - DatabasesProgrammation Android - 04 - Databases
Programmation Android - 04 - DatabasesYann Caron
 
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesProgrammation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesYann 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
 

Dernier

Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 

Dernier (11)

Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 

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