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