Théorie des langages Expressions régulières Elise Bonzon http://web.mi.parisdescartes.fr/ bonzon/ elise.bonzon@parisdescartes.fr 1 / 30
Expressions régulières 1 Introduction 2 Définitions 3 Le théorème d Arden 4 Automates et expressions régulières 5 Caractérisation des langages réguliers 6 Au delà des langages réguliers 2 / 30
Introduction Expressions régulières 1 Introduction 2 Définitions 3 Le théorème d Arden 4 Automates et expressions régulières 5 Caractérisation des langages réguliers 6 Au delà des langages réguliers 3 / 30
Introduction (Re)mise en contexte Un compilateur est un programme qui prend en entrée une donnée textuelle source (programme, donnée xml, fichier de configuration, etc) la reconnaît (l analyse) pour vérifier sa correction émet éventuellement un message d erreur le traduit dans un langage cible programme source Compilateur programme cible messages d erreur 4 / 30
Introduction (Re)mise en contexte Compiler : Définir rigoureusement et reconnaître algorithmiquement (pour les langages source et cible) : leur vocabulaire ou lexique : les mots autorisés - analyse lexicale leur syntaxe : la structure des phrases autorisées - analyse syntaxique leur sémantique : la signification des phrases autorisées - analyse sémantique On se situe au niveau de l analyse lexicale Problème : étant donné un langage, comment décrire tous les mots acceptables? Comment décrire un langage? Utiliser des expressions régulières (pour certains types de langages) 5 / 30
Introduction (Re)mise en contexte Compiler : Définir rigoureusement et reconnaître algorithmiquement (pour les langages source et cible) : leur vocabulaire ou lexique : les mots autorisés - analyse lexicale leur syntaxe : la structure des phrases autorisées - analyse syntaxique leur sémantique : la signification des phrases autorisées - analyse sémantique On se situe au niveau de l analyse lexicale Problème : étant donné un langage, comment décrire tous les mots acceptables? Comment décrire un langage? Utiliser des expressions régulières (pour certains types de langages) 5 / 30
Introduction (Re)mise en contexte Compiler : Définir rigoureusement et reconnaître algorithmiquement (pour les langages source et cible) : leur vocabulaire ou lexique : les mots autorisés - analyse lexicale leur syntaxe : la structure des phrases autorisées - analyse syntaxique leur sémantique : la signification des phrases autorisées - analyse sémantique On se situe au niveau de l analyse lexicale Problème : étant donné un langage, comment décrire tous les mots acceptables? Comment décrire un langage? Utiliser des expressions régulières (pour certains types de langages) 5 / 30
Définitions Expressions régulières 1 Introduction 2 Définitions 3 Le théorème d Arden 4 Automates et expressions régulières 5 Caractérisation des langages réguliers 6 Au delà des langages réguliers 6 / 30
Définitions Langages réguliers Langages réguliers L ensemble R des langages réguliers sur un alphabet Σ est le plus petit ensemble (qui contient le moins d éléments) des langages satisfaisant les conditions : 1. R et {ɛ} R 2. a Σ, {a} R 3. Si A, B R, alors A B R, A.B R et A R 7 / 30
Définitions Expressions régulières Expressions régulières Les expressions régulières sur un alphabet Σ sont les règles formées par les règles suivantes : 1. et ɛ sont des expressions régulières 2. a Σ, a est une expression régulière 3. Si α et β sont des expressions régulières alors (α + β) (α.β) sont des expressions régulières (α) 8 / 30
Définitions Expressions régulières Expressions régulières Les expressions régulières sur un alphabet Σ sont les règles formées par les règles suivantes : 1. et ɛ sont des expressions régulières 2. a Σ, a est une expression régulière 3. Si α et β sont des expressions régulières alors (α + β) (α.β) sont des expressions régulières (α) Priorité dans l ordre décroissant : *,., + 8 / 30
Définitions Expressions régulières Langage représenté par une expression régulière Soit r une expression régulière. L(r) est le langage représenté par r. 1. L( ) =, L(ɛ) = {ɛ} 2. a Σ, L(a) = {a} 3. L(α, β) = L(α) L(β) = L(α) + L(β) 4. L(α.β) = L(α).L(β) 5. L((α) ) = (L(α)) 9 / 30
Définitions Expressions régulières Théorème Un langage est régulier si et seulement si il peut être dénoté par une expression régulière. 10 / 30
Définitions Expressions régulières Théorème Un langage est régulier si et seulement si il peut être dénoté par une expression régulière. Le langage L(M) engendré par l automate M suivant est un langage régulier. a,b a,b a 0 1 L(M) = (a + b) a(a + b) 10 / 30
Définitions Expressions régulières Egalité d expressions régulières Deux expressions régulières sont égales si elles représentent le même langage. 11 / 30
Définitions Expressions régulières Egalité d expressions régulières Deux expressions régulières sont égales si elles représentent le même langage. Exemple : r = r + ɛ car ɛ r 11 / 30
Définitions Propriétés des expressions régulières Soient r, s et t trois expressions régulières sur le même alphabet Σ. 1. r + s = s + r 2. r + = + r = r 3. r + r = r 4. (r + s) + t = r + (s + t) = r + s + t 5. r.ɛ = ɛ.r = r 6. r. =.r = 7. (r.s).t = r.(s.t) = r.s.t 8. r.(s + t) = rs + rt 12 / 30
Définitions Propriétés des expressions régulières Soient r, s et t trois expressions régulières sur le même alphabet Σ. 9. r = (r ) = r r = (ɛ + r) = r (r + ɛ) = (r + ɛ)r = ɛ + rr = ɛ + r r 10. (r + s) = (r s ) = (r s) r = (s r) s = r (sr ) 11. r(sr) = (rs) r 12. (r s) = ɛ + (r + s) s 13. (rs ) = ɛ + r(r + s) 14. (r + ɛ) (r + ɛ) + s = sr 15. rr = r r = r + 13 / 30
Le théorème d Arden Expressions régulières 1 Introduction 2 Définitions 3 Le théorème d Arden 4 Automates et expressions régulières 5 Caractérisation des langages réguliers 6 Au delà des langages réguliers 14 / 30
Le théorème d Arden Le théorème d Arden Théorème d Arden Une équation sur les langages de la forme X = AX + B, où ɛ A, a une solution unique X = A B 15 / 30
Le théorème d Arden Le théorème d Arden Théorème d Arden Une équation sur les langages de la forme X = AX + B, où ɛ A, a une solution unique X = A B Si ɛ A, A B est une solution mais ce n est pas une solution unique. (A B est inclus dans toutes les solutions.) 15 / 30
Le théorème d Arden Le théorème d Arden Théorème d Arden Une équation sur les langages de la forme X = AX + B, où ɛ A, a une solution unique X = A B Si ɛ A, A B est une solution mais ce n est pas une solution unique. (A B est inclus dans toutes les solutions.) Démonstration : 1. X = A B est solution : AX + B = A.A B + B = (A.A + ɛ)b = A B 2. A B est solution unique : si Y est solution, alors Y est de la forme A B. 15 / 30
Automates et expressions régulières Expressions régulières 1 Introduction 2 Définitions 3 Le théorème d Arden 4 Automates et expressions régulières 5 Caractérisation des langages réguliers 6 Au delà des langages réguliers 16 / 30
Automates et expressions régulières Intérêt du théorème d Arden Grâce au Théorème d Arden, il est possible de résoudre un système d équations et d obtenir une expression régulière qui représente le langage reconnu par l automate. 17 / 30
Automates et expressions régulières Transformation d un automate en ER : le théorème d Arden a a,b b q 0 q b 1 q 2 a L 0 = al 0 + bl 1 L 1 = al 0 + bl 2 L 2 = al 2 + bl 2 + ɛ 18 / 30
Automates et expressions régulières Transformation d un automate en ER : le théorème d Arden a a,b b q 0 q b 1 q 2 a L 0 = al 0 + bl 1 L 1 = al 0 + bl 2 L 2 = al 2 + bl 2 + ɛ L 0 = (a + ba) bb(a + b) 18 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états Méthode d élimination d état (algorithme BMC) On cherche une expression régulière dénotant le langage reconnu par un automate M. On procède par suppression successive de transitions et d états : 1. Ajouter à M deux nouveaux états, notés α et ω, et les transitions (α, ɛ, q 0) pour q 0 l état initial; et (q n, ɛ, ω) pour q n F. 2. Itérer les réductions suivantes tant que possible : s il existe deux transitions (q i, x, q j ) et (q i, y, q j ), les remplacer par la transition (q i, x + y, q j ) supprimer un état q (autre que α et ω) et remplacer, pour tous les états p, r q, les transitions (p, x, q), (q, y, q), (q, z, r), par la transition (p, xy z, r). Cet algorithme termine car on diminue le nombre de transitions et d états, jusqu à obtenir une seule transition (α, e, ω). e est alors une expression régulière pour le langage L(M). 19 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états a b a 1 b 0 b a 2 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états a b a 1 b 0 b a 2 ɛ ɛ α ω 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états a b a 1 b 0 b a 2 ɛ ɛ α ω 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états a b a 1 b 0 b a 2 ɛ ɛ α ω 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états b aa b aa b α 0 2 ω ɛ ɛ b 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états b aa b aa b α 0 2 ω ɛ ɛ b 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états b aa b aa b α 0 2 ω ɛ ɛ b 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états aa b α b aa b 2 ɛ ω bb aa b 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états aa b α b aa b 2 ɛ ω bb aa b 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états aa b + bb aa b α 2 ω b aa b ɛ 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états aa b + bb aa b α 2 ω b aa b ɛ 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états b aa b(aa b + bb aa b) α ω 20 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états α b aa b(aa b + bb aa b) ω b aa b(aa b + bb aa b) = b a + b(a + b + b + a + b) R. 15. : rr = r + 21 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états α b aa b(aa b + bb aa b) ω b aa b(aa b + bb aa b) = b a + b(a + b + b + a + b) R. 15. : rr = r + = b a + b((ɛ + b + )a + b) 21 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états α b aa b(aa b + bb aa b) ω b aa b(aa b + bb aa b) = b a + b(a + b + b + a + b) R. 15. : rr = r + = b a + b((ɛ + b + )a + b) = b a + b(b a + b) 21 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états α b aa b(aa b + bb aa b) ω b aa b(aa b + bb aa b) = b a + b(a + b + b + a + b) R. 15. : rr = r + = b a + b((ɛ + b + )a + b) = b a + b(b a + b) = (b a + b) b a + b R. 15. : rr = r r 21 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états α b aa b(aa b + bb aa b) ω b aa b(aa b + bb aa b) = b a + b(a + b + b + a + b) R. 15. : rr = r + = b a + b((ɛ + b + )a + b) = b a + b(b a + b) = (b a + b) b a + b R. 15. : rr = r r = (b + a + b) a + b R. 10. : (r s) r = (r + s) 21 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états α b aa b(aa b + bb aa b) ω b aa b(aa b + bb aa b) = b a + b(a + b + b + a + b) R. 15. : rr = r + = b a + b((ɛ + b + )a + b) = b a + b(b a + b) = (b a + b) b a + b R. 15. : rr = r r = (b + a + b) a + b R. 10. : (r s) r = (r + s) = (a b) a + b r + s + r = s + r + r = r(s + + ɛ) = s r 21 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états α b aa b(aa b + bb aa b) ω b aa b(aa b + bb aa b) = b a + b(a + b + b + a + b) R. 15. : rr = r + = b a + b((ɛ + b + )a + b) = b a + b(b a + b) = (b a + b) b a + b R. 15. : rr = r r = (b + a + b) a + b R. 10. : (r s) r = (r + s) = (a b) a + b r + s + r = s + r + r = r(s + + ɛ) = s r = (a b) a ab R. 15. : r r = r + 21 / 30
Automates et expressions régulières Transformation d un automate en ER : élimination d états α b aa b(aa b + bb aa b) ω b aa b(aa b + bb aa b) = b a + b(a + b + b + a + b) R. 15. : rr = r + = b a + b((ɛ + b + )a + b) = b a + b(b a + b) = (b a + b) b a + b R. 15. : rr = r r = (b + a + b) a + b R. 10. : (r s) r = (r + s) = (a b) a + b r + s + r = s + r + r = r(s + + ɛ) = s r = (a b) a ab R. 15. : r r = r + = (a + b) ab R. 10. : (r s) r = (r + s) 21 / 30
Automates et expressions régulières Transformation d une ER en automate Théorème Pour chaque expression régulière, il existe un automate fini qui reconnaît cette expression 22 / 30
Automates et expressions régulières Transformation d une ER en automate : le théorème d Arden Soit L = a b(a + b) + ba 23 / 30
Automates et expressions régulières Transformation d une ER en automate : le théorème d Arden Soit L = a b(a + b) + ba On obtient : L =al 3 + bl 1 + bl 2 L 1 =al 1 + bl 1 + ɛ L 2 =al 2 + ɛ L 3 =al 3 + bl 1 23 / 30
Automates et expressions régulières Transformation d une ER en automate : le théorème d Arden Soit L = a b(a + b) + ba On obtient : L =al 3 + bl 1 + bl 2 L 1 =al 1 + bl 1 + ɛ L 2 =al 2 + ɛ L 3 =al 3 + bl 1 b 0 2 a a b a b 3 1 a,b 23 / 30
Caractérisation des langages réguliers Expressions régulières 1 Introduction 2 Définitions 3 Le théorème d Arden 4 Automates et expressions régulières 5 Caractérisation des langages réguliers 6 Au delà des langages réguliers 24 / 30
Caractérisation des langages réguliers Caractérisation des langages réguliers Les langages réguliers peuvent être caractérisés de 4 façons. En utilisant : 1. Les expressions régulières 2. Les automates finis déterministes 3. Les automates finis non déterministes 4. Les grammaires régulières (linéaires à droite) Pour démontrer qu un langage est régulier, il suffit donc de le décrire à l aide de l une de ces caractérisations Pour démontrer des propriétés sur les langages réguliers, il est possible de choisir la caractérisation la mieux adaptée 25 / 30
Caractérisation des langages réguliers Caractérisation des langages réguliers Les langages réguliers peuvent être caractérisés de 4 façons. En utilisant : 1. Les expressions régulières 2. Les automates finis déterministes 3. Les automates finis non déterministes 4. Les grammaires régulières (linéaires à droite) Pour démontrer qu un langage est régulier, il suffit donc de le décrire à l aide de l une de ces caractérisations Pour démontrer des propriétés sur les langages réguliers, il est possible de choisir la caractérisation la mieux adaptée 25 / 30
Caractérisation des langages réguliers Caractérisation des langages réguliers Les langages réguliers peuvent être caractérisés de 4 façons. En utilisant : 1. Les expressions régulières 2. Les automates finis déterministes 3. Les automates finis non déterministes 4. Les grammaires régulières (linéaires à droite) Pour démontrer qu un langage est régulier, il suffit donc de le décrire à l aide de l une de ces caractérisations Pour démontrer des propriétés sur les langages réguliers, il est possible de choisir la caractérisation la mieux adaptée 25 / 30
Caractérisation des langages réguliers Rappels sur les langages réguliers Soient L, L 1 et L 2 trois langages réguliers. Les langages suivants sont réguliers : L 1.L 2 L 1 + L 2 L L L 1 L 2 L R (miroir de L) 26 / 30
Au delà des langages réguliers Expressions régulières 1 Introduction 2 Définitions 3 Le théorème d Arden 4 Automates et expressions régulières 5 Caractérisation des langages réguliers 6 Au delà des langages réguliers 27 / 30
Au delà des langages réguliers Observations de base 1. Tous les langages finis sont réguliers 2. Un langage non régulier comporte un nombre infini de mots Attention! La réciproque n est pas vraie : Σ est un langage infini et régulier 3. Si un langage comporte un nombre infini de mots, il n y a pas de borne à la taille des mots du langage 4. Tout langage régulier est accepté par un automate fini qui comporte un nombre fini d états 5. Soit L un langage régulier infini, reconnu par un automate à m états. Soit w L tel que w m. Au cours de la reconnaissance de w par l automate, il faut nécessairement passer au moins 2 fois par un même état. 28 / 30
Au delà des langages réguliers Pumping theorem Pumping theorem (dit aussi théorème de pompage ou théorème du gonflement) Soit L un langage régulier infini sur l alphabet Σ. Alors, il existe p 0 tel que w L tel que w p, il existe x, u, y Σ, u ɛ et xu p tels que w = xuy et n 0, xu n y L 29 / 30
Au delà des langages réguliers Pumping theorem Pumping theorem (dit aussi théorème de pompage ou théorème du gonflement) Soit L un langage régulier infini sur l alphabet Σ. Alors, il existe p 0 tel que w L tel que w p, il existe x, u, y Σ, u ɛ et xu p tels que w = xuy et n 0, xu n y L Autre formulation du théorème de pompage Soit L un langage régulier infini sur l alphabet Σ, et soit w L tel que w Q, où Q est l ensemble des états d un automate déterministe acceptant L. Alors, x, u, y Σ, avec u ɛ, xu Q, et w = xuy. On a alors k 0, xu k y L. 29 / 30
Au delà des langages réguliers Pumping theorem Pumping theorem (dit aussi théorème de pompage ou théorème du gonflement) Soit L un langage régulier infini sur l alphabet Σ. Alors, il existe p 0 tel que w L tel que w p, il existe x, u, y Σ, u ɛ et xu p tels que w = xuy et n 0, xu n y L Autre formulation du théorème de pompage Soit L un langage régulier infini sur l alphabet Σ, et soit w L tel que w Q, où Q est l ensemble des états d un automate déterministe acceptant L. Alors, x, u, y Σ, avec u ɛ, xu Q, et w = xuy. On a alors k 0, xu k y L. On utilise ces théorèmes pour montrer qu un langage n est pas régulier. 29 / 30
Au delà des langages réguliers Montrer qu un langage n est pas régulier : exemple Soit Σ = {a, b}, L = {a n b n n 0}. Supposons L régulier. Il existe donc p 0 tel que w L et w p, et il est possible de décomposer w = xuy. On sait de plus que n 0, xu n y L. Soit w = a p b p = xuy. On a bien w = 2p p. Il y a trois possibilités : 1. u a : w = a r }{{} x a s }{{} u }{{} a t b p, avec r + s + t = p et s > 0. y On a donc n 0, xu n y L. Prenons n = 0. On a a r a t b p L. Contradiction. 2. u b. Raisonnement identique. 3. u = a s b t : w = }{{} a r }{{} a s b t }{{} b q, avec r + s = t + q = p. x u y On a donc n 0, xu n y L. Prenons n = 2. On a a r a s b t a s b t b q L. Contradiction. Le théorème de gonflement n est pas vérifié. Ce langage n est donc pas un langage régulier. 30 / 30