- Analyse (lexicale, syntaxique) — L3 miage Langages

publicité
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Analyse (lexicale, syntaxique) — L3 MIAGE
Langages
Université de Lille, France
2014-2015
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
1
Introduction
Motivations
2
Alphabets, mots et langages
Alphabet
Mots et opérations sur les mots
Langages et opérations sur les langages
Descriptions/classification
Classification par les grammaires
3
Langages réguliers et expressions régulières
Langages réguliers
Expressions régulières : introduction
Définition : expressions régulières
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Motivations
1
Introduction
Motivations
2
Alphabets, mots et langages
Alphabet
Mots et opérations sur les mots
Langages et opérations sur les langages
Descriptions/classification
Classification par les grammaires
3
Langages réguliers et expressions régulières
Langages réguliers
Expressions régulières : introduction
Définition : expressions régulières
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Motivations
Langage ?
Le français, le klingon, java, C sont des langages.
La théorie des langages fournit des modèles pour :
décrire un langage
formalisme de description ;
fabriquer une machine qui reconnait si un texte appartient
à un langage donné
formalisme exécutable pour la reconnaissance.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Motivations
Langage ?
On peut ainsi répondre aux questions suivantes :
Qu’est ce qui constitue un langage ?
→ alphabet, mots ;
Comment décrire un langage ?
→ opérations, grammaires ;
Une phrase donnée appartient-elle au langage ?
→ automates, modèles de calcul, décidabilité ;
Expressivité d’un langage donné ?
→ langages réguliers (analyse lexicale), hors-contexte
(analyse syntaxique), etc.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Alphabet
1
Introduction
Motivations
2
Alphabets, mots et langages
Alphabet
Mots et opérations sur les mots
Langages et opérations sur les langages
Descriptions/classification
Classification par les grammaires
3
Langages réguliers et expressions régulières
Langages réguliers
Expressions régulières : introduction
Définition : expressions régulières
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Alphabet
Alphabet
Definition
Un alphabet X est un ensemble fini non vide de symboles qui
peuvent être formés d’un ou plusieurs caractères.
Par exemple,
{4, ♥, 3, 2}
{a, b, c}
{0, 1}
{aa, b, c}
{if, then, else, id, 3.14, =, +}
sont des alphabets.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Les mots
Definitions
Un mot m sur un alphabet X est une suite finie de
symboles de X .
La suite vide de lettres est appelée mot vide et notée ².
La longueur d’un mot m, notée |m| est le nombre de lettres
de m.
On a |²| = 0 ;
“ifid=nbthen” est un mot de longueur 5 sur {if, then, else, id,
nb, =, +} ;
“if” (resp. “id”, “=”, “nb”, “then”) est un mot longueur 2 (resp.
2, 1, 2, 4) sur l’alphabet {a, b, . . ., z, =} ;
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Les mots
Definitions
Un mot m sur un alphabet X est une suite finie de
symboles de X .
La suite vide de lettres est appelée mot vide et notée ².
La longueur d’un mot m, notée |m| est le nombre de lettres
de m.
On a |²| = 0 ;
“ifid=nbthen” est un mot de longueur 5 sur {if, then, else, id,
nb, =, +} ;
“if” (resp. “id”, “=”, “nb”, “then”) est un mot longueur 2 (resp.
2, 1, 2, 4) sur l’alphabet {a, b, . . ., z, =} ;
Énoncer tous les mots de longueur 2 sur A = {a, b}.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Les mots
Definitions
Un mot m sur un alphabet X est une suite finie de
symboles de X .
La suite vide de lettres est appelée mot vide et notée ².
La longueur d’un mot m, notée |m| est le nombre de lettres
de m.
On a |²| = 0 ;
“ifid=nbthen” est un mot de longueur 5 sur {if, then, else, id,
nb, =, +} ;
“if” (resp. “id”, “=”, “nb”, “then”) est un mot longueur 2 (resp.
2, 1, 2, 4) sur l’alphabet {a, b, . . ., z, =} ;
Énoncer tous les mots de longueur 2 sur A = {a, b}.
{aa, ab , ba, bb }
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Quizz : quel mot sur quel alphabet ?
(a) yxxy
(1) {+, =, *, &}
(b) yzyxxy
(c) **&=+&
(2) {x, y, z}
(3) {xx, y}
(4) {xxx}
(d) =yz*&
(e) mot vide
(f) xxx
(g) yxyyxxxyx
(h) xxxxxx
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Quizz : quel mot sur quel alphabet ?
(a) yxxy
4
(1) {+, =, *, &}
6
(2) {x, y, z}
(3) {xx, y}
(4) {xxx}
3
(c) **&=+&
0
(d) =yz*&
0
0
3
(b) yzyxxy
6
(e) mot vide
3
0
2
1
9
6
(f) xxx
(g) yxyyxxxyx
(h) xxxxxx
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Un peu de vocabulaire pour la suite
Comment s’articule ces notions de théorie des langages dans
nos préoccupations :
concernant l’analyse lexicale :
l’alphabet est constitué des caractères ASCII, unicode, etc. ;
les mots sont qualifiés de lexèmes e.g. des mots clefs, des
identificateurs, des nombres, des opèrateurs, etc.
concernant l’analyse syntaxique ;
l’alphabet ou vocabulaire est constitué des lexèmes de
l’analyse lexicale ;
les mots sont les phrases ou les chaînes composées de
suites de lexèmes e.g. des programmes.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Concaténation de mots
Definition
Soient m1 = a1 . . . ak et m2 = b1 . . . b` deux mots sur X , la
concaténation des mots m1 et m2 , notée m1 • m2 , est la suite
de lettres a1 . . . ak b1 . . . b` .
On écrit aussi :
plus simplement m1 m2 pour m1 • m2 ;
mn pour le mot composé de n occurrences du mot m ;
m0 pour ²
(ce qui permet les notations mn = mmn−1 = mn−1 m).
Notons que l’on a |m • n| = |m| + |n|.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Concaténation de mots
Definition
Soient m1 = a1 . . . ak et m2 = b1 . . . b` deux mots sur X , la
concaténation des mots m1 et m2 , notée m1 • m2 , est la suite
de lettres a1 . . . ak b1 . . . b` .
On écrit aussi :
plus simplement m1 m2 pour m1 • m2 ;
mn pour le mot composé de n occurrences du mot m ;
m0 pour ²
(ce qui permet les notations mn = mmn−1 = mn−1 m).
Notons que l’on a |m • n| = |m| + |n|.
Considérant l’alphabet {a, b} et les mots u = aa et v = bab,
écrire les mots suivants :
uv ,
(uv )2 ,
u3v .
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Concaténation de mots
Definition
Soient m1 = a1 . . . ak et m2 = b1 . . . b` deux mots sur X , la
concaténation des mots m1 et m2 , notée m1 • m2 , est la suite
de lettres a1 . . . ak b1 . . . b` .
On écrit aussi :
plus simplement m1 m2 pour m1 • m2 ;
mn pour le mot composé de n occurrences du mot m ;
m0 pour ²
(ce qui permet les notations mn = mmn−1 = mn−1 m).
Notons que l’on a |m • n| = |m| + |n|.
Considérant l’alphabet {a, b} et les mots u = aa et v = bab,
écrire les mots suivants :
uv = aabab,
(uv )2 = aababaabab,
u 3 v = aaaaaabab.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Propriété de la concaténation
Proposition
L’opérateur de concaténation est
associatif : (m1 · m2 ) · m3 = m1 · (m2 · m3 ) ;
possède ² pour élément neutre : ² · m = m · ² = m ;
n’est pas commutatif : en général m1 · m2 6= m2 · m1 .
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Propriété de la concaténation
Proposition
L’opérateur de concaténation est
associatif : (m1 · m2 ) · m3 = m1 · (m2 · m3 ) ;
possède ² pour élément neutre : ² · m = m · ² = m ;
n’est pas commutatif : en général m1 · m2 6= m2 · m1 .
La suite (sn )n∈N des mots de Fibonacci est défini par s1 = a,
s2 = b et la récurrence sn = sn−1 sn−2 . Donner le 8ième terme de
cette suite.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Propriété de la concaténation
Proposition
L’opérateur de concaténation est
associatif : (m1 · m2 ) · m3 = m1 · (m2 · m3 ) ;
possède ² pour élément neutre : ² · m = m · ² = m ;
n’est pas commutatif : en général m1 · m2 6= m2 · m1 .
La suite (sn )n∈N des mots de Fibonacci est défini par s1 = a,
s2 = b et la récurrence sn = sn−1 sn−2 . Donner le 8ième terme de
cette suite.
s3 = ba, s4 = bab, s5 = babba, s6 = babbabab,
s7 = babbababbabba, s8 = babbababbabbababbabab.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Un peu de vocabulaire sur les mots
Definitions
Le mot v est sous-mot du mot u si u = a1 . . . an et v = ai1 . . . aik
avec {i1 , . . . , ik } ⊆ {1, . . . , n} et i1 < . . . < ik .
v est facteur de u s’il existe u1 et u2 tels que u = u1 · v · u2 .
si u1 = ² alors v est un facteur gauche, ou préfixe, de u ;
si u2 = ² alors v est un facteur droit, ou suffixe, de u ;
si v 6= ² et v 6= ² alors v est un facteur propre de u.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Un peu de vocabulaire sur les mots
Definitions
Le mot v est sous-mot du mot u si u = a1 . . . an et v = ai1 . . . aik
avec {i1 , . . . , ik } ⊆ {1, . . . , n} et i1 < . . . < ik .
v est facteur de u s’il existe u1 et u2 tels que u = u1 · v · u2 .
si u1 = ² alors v est un facteur gauche, ou préfixe, de u ;
si u2 = ² alors v est un facteur droit, ou suffixe, de u ;
si v 6= ² et v 6= ² alors v est un facteur propre de u.
Dans la liste suivante, quels mots sont des sous-mots du mot
“salut” ?
saut,
us,
alt,
alto,
uu.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Un peu de vocabulaire sur les mots
Definitions
Le mot v est sous-mot du mot u si u = a1 . . . an et v = ai1 . . . aik
avec {i1 , . . . , ik } ⊆ {1, . . . , n} et i1 < . . . < ik .
v est facteur de u s’il existe u1 et u2 tels que u = u1 · v · u2 .
si u1 = ² alors v est un facteur gauche, ou préfixe, de u ;
si u2 = ² alors v est un facteur droit, ou suffixe, de u ;
si v 6= ² et v 6= ² alors v est un facteur propre de u.
Dans la liste suivante, quels mots sont des sous-mots du mot
“salut” ?
saut,
us,
alt,
alto,
uu.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Un peu de vocabulaire sur les mots
Definitions
Le mot v est sous-mot du mot u si u = a1 . . . an et v = ai1 . . . aik
avec {i1 , . . . , ik } ⊆ {1, . . . , n} et i1 < . . . < ik .
v est facteur de u s’il existe u1 et u2 tels que u = u1 · v · u2 .
si u1 = ² alors v est un facteur gauche, ou préfixe, de u ;
si u2 = ² alors v est un facteur droit, ou suffixe, de u ;
si v 6= ² et v 6= ² alors v est un facteur propre de u.
Déterminer les types de facteur du mot “salut”
ut,
alu,
sal,
salut.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Mots et opérations sur les mots
Un peu de vocabulaire sur les mots
Definitions
Le mot v est sous-mot du mot u si u = a1 . . . an et v = ai1 . . . aik
avec {i1 , . . . , ik } ⊆ {1, . . . , n} et i1 < . . . < ik .
v est facteur de u s’il existe u1 et u2 tels que u = u1 · v · u2 .
si u1 = ² alors v est un facteur gauche, ou préfixe, de u ;
si u2 = ² alors v est un facteur droit, ou suffixe, de u ;
si v 6= ² et v 6= ² alors v est un facteur propre de u.
Déterminer les types de facteur du mot “salut”
ut : suffixe,
alu : facteur propre, sal : préfixe,
salut : préfixe et suffixe.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Langages et opérations sur les langages
Ensemble de tous les ensembles de lettres
Notations
On note A? l’ensemble infini contenant tous les mots
possibles sur l’alphabet A.
On note A+ l’ensemble infini contenant tous les mots non
vides possibles sur l’alphabet A (A? = A+ ∪ {²}).
On note An l’ensemble des mots de A? de longueur n
(A? = ∪∞
An ).
n=0
Soit l’alphabet A = {a, b, c }, “aba” (resp. “abaa”, “bbacabb”,
c, ²) est un mot de A? de longueur 3 (resp. 4, 7, 1, 0) ;
Soit l’alphabet A = {aa, b, c }, “aabaa” (resp. “caa”, “aaaa”,
bc) est un mot de A? de longueur 3 (resp. 2, 2, 2) ;
Soit l’alphabet A = {a}, ² n’est pas un mot de A+ .
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Langages et opérations sur les langages
Langages
Definition
Un langage sur un alphabet A est un ensemble de mots sur A,
c’est-à-dire un sous-ensemble de A? .
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Langages et opérations sur les langages
Langages
Definition
Un langage sur un alphabet A est un ensemble de mots sur A,
c’est-à-dire un sous-ensemble de A? .
Considérons l’alphabet A = {a, b, c }
Soit L1 l’ensemble des mots de A? ayant autant de a que
de b. L1 est un langage infini.
Soit L2 l’ensemble des mots de A? ayant exactement 3 a.
L2 est aussi un langage infini.
Soit L3 l’ensemble {u n | u ∈ A et n < 100} est un ensemble
fini.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Langages et opérations sur les langages
Langages
Definition
Un langage sur un alphabet A est un ensemble de mots sur A,
c’est-à-dire un sous-ensemble de A? .
Soient l’alphabet A = {a, b}, décrivez d’une autre manière les
ensembles suivants :
E = {uv | u ∈ A+ et v ∈ A+ }
F = {uv | u ∈ A+ et v ∈ A? }
G = {uv | u ∈ A? et v ∈ A? }
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Langages et opérations sur les langages
Langages
Definition
Un langage sur un alphabet A est un ensemble de mots sur A,
c’est-à-dire un sous-ensemble de A? .
Soient l’alphabet A = {a, b}, décrivez d’une autre manière les
ensembles suivants :
E = {uv | u ∈ A+ et v ∈ A+ } est l’ensemble des mots de
longueur plus grande que 2 ;
F = {uv | u ∈ A+ et v ∈ A? } est A+ ;
G = {uv | u ∈ A? et v ∈ A? } est A? .
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Langages et opérations sur les langages
Opération sur les langages
Definition
Si L1 et L2 sont deux langages sur A, on définit les opérations
suivantes :
L’union L1 ∪ L2 = {m | m ∈ L1 ou m ∈ L2 } ;
L’intersection L1 ∩ L2 = {m | m ∈ L1 et m ∈ L2 } ;
Le complémentaire d’un langage L sur A est le langage
Ψ
L = {m | m ∈ A? et m 6∈ L}.
Avec C = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, on peut exprimer :
un langage réduit à un symbole (e.g. {3}, 3 est un entier à
un chiffre) ;
l’union des langages réduit à un symbole donne tous les
entiers à un chiffre ;
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Langages et opérations sur les langages
Opérations sur les langages
Dans cet exemple, pour exprimer les entiers à 2 chiffres, on
introduit la concaténation de langages.
Notation
Si L1 et L2 sont deux langages sur A, la concaténation de L1 et
L2 est le langage :
L1 · L2 = {m1 · m2 | m1 ∈ L1 et m2 ∈ L2 }
Si L est un langage sur A, on définit les puissances de L :
L0 = {²}, Li +1 = Li · L, pour i ≥ 0 ;
L? =
S
i
i ≥0 L
(l’opérateur ? est appelé étoile de Kleene) ;
on note L le langage L · L? i.e. i >0 Li (e.g. le mot vide
n’est pas un entier, i.e. pas d’entier à 0 chiffre).
+
S
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Descriptions/classification
Descriptions multiples
Un langage sur un alphabet A peut être décrits de plusieurs
manières différentes :
informellement : ensembles des mots sur A = {a, b, c }
contenant au moins un a
directement : ensemble (pas toujours constructif)
énumération des mots du langage : langage infini ?
notations mathématiques :
{u = s1 . . . s|u | ∈ A? |∃i ∈ {1, . . . , |u |} si = a}
union, intersection, concaténation etc d’autres langages
indirectement : algorithme de reconnaissance des mots
du langage : automates, machine de Turing etc
constructivement : grammaire : règle de construction des
mots
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Descriptions/classification
Descriptions multiples
Un langage sur un alphabet A peut être décrits de plusieurs
manières différentes :
informellement : ensembles des mots sur A = {a, b, c }
contenant au moins un a
directement : ensemble (pas toujours constructif)
énumération des mots du langage : langage infini ?
notations mathématiques :
{u = s1 . . . s|u | ∈ A? |∃i ∈ {1, . . . , |u |} si = a}
union, intersection, concaténation etc d’autres langages
indirectement : algorithme de reconnaissance des mots
du langage : automates, machine de Turing etc
constructivement : grammaire : règle de construction des
mots, une classification des langages
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Descriptions/classification
Descriptions multiples
Un langage sur un alphabet A peut être décrits de plusieurs
manières différentes :
informellement : ensembles des mots sur A = {a, b, c }
contenant au moins un a
directement : ensemble (pas toujours constructif)
énumération des mots du langage : langage infini ?
notations mathématiques :
{u = s1 . . . s|u | ∈ A? |∃i ∈ {1, . . . , |u |} si = a}
union, intersection, concaténation etc d’autres langages
indirectement : algorithme de reconnaissance des mots
du langage : automates, machine de Turing etc
constructivement : grammaire : règle de construction des
mots, une classification des langages
B langages indécidables : ni grammaire ni algorithme !
e.g. { (programme, données) | programme(données) termine}
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Classification par les grammaires
Grammaire : un petit exemple
• Vocabulaire : { le, la, souris, chat, poursuit }
• Structures grammaticales : { PHrase, Groupe Nominal, VeRBe,
Déterminant, Nom }
• Point de départ : PHrase
• Régles de construction :
PH → GN VRB GN
N → souris
GN → D N
N → chat
D → le
D → la
VRB → poursuit
Une dérivation : PH ⇒ GN VRB GN ⇒ D N VRB GN ⇒ le N V
GN ⇒ le chat VRB GN ⇒ le chat poursuit D N ⇒ le chat
poursuit la N ⇒ le chat poursuit la souris
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Classification par les grammaires
Grammaire : un petit exemple
• Alphabet : { le, la, souris, chat, poursuit } symboles Terminaux
• Structures grammaticales : { PHrase, Groupe Nominal, VeRBe,
Déterminant, Nom }
symboles Non Terminaux
• Point de départ : PHrase
Axiome
• Régles de construction :
Régles de production
PH → GN VRB GN
N → souris
GN → D N
N → chat
D → le
D → la
VRB → poursuit
Une autre dérivation : PH ⇒ GN VRB GN ⇒ D N VRB GN ⇒ le
N V GN ⇒ le souris VRB GN ⇒ le souris poursuit D N ⇒ le
souris poursuit la N ⇒ le souris poursuit la chat → ceci est un
mot
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Classification par les grammaires
Grammaire : définition formelle
Definition
Une grammaire est un quadruplet G = (T , N , S , R) tel que :
T est le vocabulaire terminal : alphabet du langage
N est le vocabulaire non terminal : symboles
n’apparaissant pas dans les mots du langages mais
utilisés lors du processus de construction
S ∈ N est l’axiome : le symbole d’amorçage du processus
de génération d’un mot
R est l’ensemble des règles de production ou réécriture de
la forme : u → v avec u ∈ (N ∪ T )+ et v ∈ (N ∪ T )?
("u peut être remplacé par v ")
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Classification par les grammaires
Dérivation
Dérivation
Application de plusieurs productions successives ⇔ dérivation :
α → β puis β → γ
⇔
α →2 γ
α →? γ : dérivation de plusieurs productions
Notations : BNF, EBNF (Extended Backus-Naur Form)
α → β et α → γ
⇔
α → β|γ
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Classification par les grammaires
Langage engendré par une grammaire
Langage engendré
Le langage généré par la grammaire G = (T , N , S , R) est
l’ensemble des mots sur T qui peuvent être dérivés à partir de
l’axiome S :
L (G) = {u ∈ T ? |S →+ u }
Une grammaire engendre un unique langage.
Un langage peut être engendré par plusieurs grammaires
équivalentes.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Classification par les grammaires
Grammaire : Hiérarchie de Chomsky (1957)
type 0 pas de restrictions sur les règles
type 1 grammaire contextuelle :
uAv → uwv avec A ∈ N, u , v ∈ (N ∪ T )? et w ∈ (N ∪ T )+
type 2 grammaire hors contexte = non contextuelle = algébrique :
A → w avec A ∈ N et w ∈ (N ∪ T )?
type 3 grammaire régulière = rationnelle :
A → aB ou A → a avec A, B ∈ N et a ∈ T (à droite)
A → Ba ou A → a avec A, B ∈ N et a ∈ T (à gauche)
rationnel
algebrique
contextuel
type 0
indecidable
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Langages réguliers
1
Introduction
Motivations
2
Alphabets, mots et langages
Alphabet
Mots et opérations sur les mots
Langages et opérations sur les langages
Descriptions/classification
Classification par les grammaires
3
Langages réguliers et expressions régulières
Langages réguliers
Expressions régulières : introduction
Définition : expressions régulières
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Langages réguliers
Langages réguliers : informellement
Les langages réguliers ou rationnels sont les langages
construits :
à partir de langages finis ;
en utilisant un nombre fini de fois des opérations :
d’union,
de concaténation,
→ Il n’y a pas d’autres langages réguliers ! ←
Un langage régulier peut ainsi contenir un nombre infini de
mots comme par exemple le langage des entiers (avec le mot
vide) sur l’alphabet des chiffres.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Langages réguliers
Langages réguliers ; définition formelle
Langages engendrés par une grammaire régulière.
Définition récursive
L’ensemble R at des langages réguliers sur un alphabet A est
le plus petit ensemble de langages satisfaisant :
; et {²} ∈ R at,
{a} ∈ R at pour tout a ∈ A,
si L1 , L2 ∈ R at alors
L1 ∪ L2 ∈ R at,
L1 · L2 ∈ R at,
vide et mot vide
alphabet
union
concaténation
En particulier, si L ∈ R at alors ∀n L n ∈ R at et L ? ∈ R at.
Le complémentaire L de L ∈ R at est rationnel.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Expressions régulières : introduction
1
Introduction
Motivations
2
Alphabets, mots et langages
Alphabet
Mots et opérations sur les mots
Langages et opérations sur les langages
Descriptions/classification
Classification par les grammaires
3
Langages réguliers et expressions régulières
Langages réguliers
Expressions régulières : introduction
Définition : expressions régulières
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Expressions régulières : introduction
Principe de base
Une expression régulière est un moyen de décrire concisément
un langage régulier.
Il y a une correspondance entre :
les opérateurs sur les langages réguliers ;
les opérateurs sur les expression régulières.
Par exemple, vous avez sans doute déja manipulé les
opérateurs | et ∗ :
le chiffre 1 est décrit par l’expression régulière 1 ;
un chiffre pair quelconque est décrit par l’expression
régulière 2|4|6|8 ;
un nombre entier quelconque est décrit par l’expression
régulière :
(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)∗
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Définition : expressions régulières
Definition
Les expressions régulières sur un alphabet A sont les
expressions formées récursivement par les règles suivantes :
;, ² et les éléments de A sont des expressions régulières ;
si e1 et e2 sont des expressions régulières, alors e1 |e2
et e1 · e2 sont des expressions régulières ;
si e est une expression rationnelle, alors (e) et e? sont des
expressions régulières.
disjonction : | ou +
union ∪
conjonction : .
concaténation .
?
répétition :
fermeture ?
exprimer des priorités : ( et )
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Priorité des opérateurs d’expressions régulières
On convient des priorités décroissantes suivantes :
?
·
|
e.g. ab? | c ⇔ (a)((b)? ) | (c)
¡
¢
La concaténation est distributive par à rapport à la
disjonction :
r (s | t) = rs | rt ,
(r | s)t = rt | st .
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Opérateurs dérivés disponibles en pratique
Dans la pratique, les bibliothèques d’expressions régulières
fournissent d’autres constructions :
répétition finie, pour n fixé : a3 = aaa ;
construction du type tout sauf ces symboles ;
construction du type au moins une fois : a+ = a(a∗) ;
construction du type présent ou pas : a? = a|² ;
etc.
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Langage représenté par une expression régulière
Tout langage régulier peut être décrit par une expr. régulière.
Toute expression régulière décrit un langage régulier.
Definition
Le langage L (e) représenté par l’expression régulière e est
définit ainsi :
L (;) = ;, L (²) = {²} et L (a) = {a} ;
L (e1 |e2 ) = L (e1 ) ∪ L (e2 ) ;
L (e1 · e2 ) = L (e1 ) · L (e2 ) ;
L (e? ) = L (e)? .
Deux expr. régulières E et E 0 sont équivalentes
ssi L (E) = L (E 0 )
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exemples : trouver le langage sur l’alphabet {a, b}
Les expressions régulières suivantes :
(a? | b? )? , ((² |)b? )? , (a | b)? , (b | a)?
sont toutes équivalentes et représentent :
(a) | ((b)? (c)) est équivalente à a | b? c et représente :
(a | b)? abb(a | b)? représente
(abbc | baba)? aa(cc | bb)? représente le langage des mots
sur {a, b, c }
’
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exemples : trouver le langage sur l’alphabet {a, b}
Les expressions régulières suivantes :
(a? | b? )? , ((² |)b? )? , (a | b)? , (b | a)?
sont toutes équivalentes et représentent : A?
(a) | ((b)? (c)) est équivalente à a | b? c et représente :
(a | b)? abb(a | b)? représente
(abbc | baba)? aa(cc | bb)? représente le langage des mots
sur {a, b, c }
’
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exemples : trouver le langage sur l’alphabet {a, b}
Les expressions régulières suivantes :
(a? | b? )? , ((² |)b? )? , (a | b)? , (b | a)?
sont toutes équivalentes et représentent : A?
(a) | ((b)? (c)) est équivalente à a | b? c et représente : soit
le mot ”a”, soit 0 ou plusieurs b suivit d’un c
(a | b)? abb(a | b)? représente
(abbc | baba)? aa(cc | bb)? représente le langage des mots
sur {a, b, c }
’
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exemples : trouver le langage sur l’alphabet {a, b}
Les expressions régulières suivantes :
(a? | b? )? , ((² |)b? )? , (a | b)? , (b | a)?
sont toutes équivalentes et représentent : A?
(a) | ((b)? (c)) est équivalente à a | b? c et représente : soit
le mot ”a”, soit 0 ou plusieurs b suivit d’un c
(a | b)? abb(a | b)? représente le langage des mots ayant
”abb” pour facteur
(abbc | baba)? aa(cc | bb)? représente le langage des mots
sur {a, b, c }
’
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exemples : trouver le langage sur l’alphabet {a, b}
Les expressions régulières suivantes :
(a? | b? )? , ((² |)b? )? , (a | b)? , (b | a)?
sont toutes équivalentes et représentent : A?
(a) | ((b)? (c)) est équivalente à a | b? c et représente : soit
le mot ”a”, soit 0 ou plusieurs b suivit d’un c
(a | b)? abb(a | b)? représente le langage des mots ayant
”abb” pour facteur
(abbc | baba)? aa(cc | bb)? représente le langage des mots
sur {a, b, c } commençant par une série éventuellement vide
de ”abbc” ou/et de ”baba” puis un facteur "aa” et se
terminant par une série éventuellement vide de ”bb” ou/et
de ’c’
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Ambiguïté d’expression régulières
Definition
Une expression régulière est ambiguë si elle permet de décrire
un mot de plusieurs façons.
e.g. (a | b)? a(a | b)? : mots de {a, b}? ayant au moins un ’a’.
ε
|
(a|b)?
a
|
a
baab
|
(a|b)?
"abaab"
ab
a
ab
|
|
|
(a|b)? a (a|b)?
aba
|
(a|b)?
a
|
a
b
|
(a|b)?
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Ambiguïté d’expression régulières
Definition
Une expression régulière est ambiguë si elle permet de décrire
un mot de plusieurs façons.
e.g. (a | b)? a(a | b)? : mots de {a, b}? ayant au moins un ’a’.
ε
|
(a|b)?
a
|
a
b? a(a | b)?
→ non
ambiguë
baab
|
(a|b)?
ε
|
b?
"abaab"
ab
a
ab
|
|
|
(a|b)? a (a|b)?
a
|
a
baab
|
(a|b)?
aba
|
(a|b)?
a
|
a
b
|
(a|b)?
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Ambiguïté d’expression régulières
Definition
Une expression régulière est ambiguë si elle permet de décrire
un mot de plusieurs façons.
e.g. (a | b)? a(a | b)? : mots de {a, b}? ayant au moins un ’a’.
ε
|
(a|b)?
a
|
a
b? a(a | b)?
→ non
ambiguë
baab
|
(a|b)?
ε
|
b?
"abaab"
ab
a
ab
|
|
|
(a|b)? a (a|b)?
a
|
a
baab
|
(a|b)?
aba
|
(a|b)?
(a|b)? ab?
→ non
ambiguë
a
|
a
aba
|
(a|b)?
b
|
(a|b)?
a
|
a
b
|
b?
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exercices
On considère l’alphabet B = {0, 1}, donner les expressions
rationnelles représentant l’ensemble des mots :
1
multiples de 2 en base 2
2
de même longueur que leur successeur en base 2
3
qui n’ont pas deux chiffres successifs identiques
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exercices
On considère l’alphabet B = {0, 1}, donner les expressions
rationnelles représentant l’ensemble des mots :
1
multiples de 2 en base 2 :
0|1.(0|1)? .0
2
de même longueur que leur successeur en base 2 :
0|1.(0|1)? .0.(0|1)?
3
qui n’ont pas deux chiffres successifs identiques :
0|1.(0.1)? .(ε|0)
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exercice : (a + b)? (b + c)?
Donnez une expression rationnelle équivalente non ambiguë
puis en déduire une grammaire régulière décrivant le même
langage :
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exercice : (a + b)? (b + c)?
Donnez une expression rationnelle équivalente non ambiguë
puis en déduire une grammaire régulière décrivant le même
langage :
a
|
(a|b)?
"abc"
bc
ab
|
|
(a|b)? (a|b)?
c
|
(a|b)?
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exercice : (a + b)? (b + c)?
Donnez une expression rationnelle équivalente non ambiguë
puis en déduire une grammaire régulière décrivant le même
langage :
a
|
(a|b)?
(a + b)? {[c .(c + b)? ] + ε}
"abc"
bc
ab
|
|
(a|b)? (a|b)?
c
|
(a|b)?
{[(a + b)? .a] + ε}.(c + b)?
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exercice : (a + b)? (b + c)?
Donnez une expression rationnelle équivalente non ambiguë
puis en déduire une grammaire régulière décrivant le même
langage :
a
|
(a|b)?
"abc"
bc
ab
|
|
(a|b)? (a|b)?
(a + b)? {[c .(c + b)? ] + ε}
Grammaire régulière à droite :
c
|
(a|b)?
{[(a + b)? .a] + ε}.(c + b)?
Grammaire régulière à gauche :
S → aR | bR | cZ | ε
S → Xc | Xb | Ya | ε
R → aR | bR | cZ | ε
X → Xc | Xb | Ya | ε
Z → cZ | bZ | ε
Y → Ya | Yb | ε
Introduction
Alphabets, mots et langages
Langages réguliers et expressions régulières
Définition : expressions régulières
Exercice : (a + b)? (b + c)?
Donnez une expression rationnelle équivalente non ambiguë
puis en déduire une grammaire régulière décrivant le même
langage :
a
|
(a|b)?
"abc"
bc
ab
|
|
(a|b)? (a|b)?
(a + b)? {[c .(c + b)? ] + ε}
Grammaire régulière à droite :
c
|
(a|b)?
{[(a + b)? .a] + ε}.(c + b)?
Grammaire régulière à gauche :
S → aR | bR | cZ | ε
S → Xc | Xb | Ya | ε
R → aR | bR | cZ | ε
X → Xc | Xb | Ya | ε
Z → cZ | bZ | ε
Y → Ya | Yb | ε
analyse descendante
axiome → mot
analyse ascendante
mot → axiome
Téléchargement