• Aucun résultat trouvé

1.1 Les mots

On se donne un ensemble Σ de caract`eres, parfois d´enomm´ealphabet. L’ensemble des mots sur Σ, not´e Σ, est l’ensemble des suites finies de caract`eres. Un langage est un sous-ensemble de Σ, c’est-`a-dire un ensemble particulier de mots.

Par exemple si Σ est l’ensemble des lettres usuelles, on peut d´efinir le langage L1 des mots fran¸cais. Ou encore si Σ est l’ensemble des chiffres de 0 `a 9, on peut d´efinir le langage L2 des repr´esentations en base 10 des entiers naturels. Dans le premier cas, on peut tout simplement ten-ter de d´efinirL1 comme l’ensemble de tous les mots pr´esents dans le dictionnaire de l’Acad´emie fran¸caise, dans le second cas, on peut recourir `a une d´efinition du style((un entier (d´ecimal) est le chiffre z´ero, ou une suite non vide de chiffres qui ne commence pas par z´ero )). Les expressions r´eguli`eres (ou rationnelles) sont une notation tr`es commode pour d´efinir des langages de mots du style de L1 et L2 ci-dessus.

D´efinissons tout de suite quelques notations sur les mots et les langages. Parmi les mots de Σ on distingue le mot vide not´eǫ. Le mot vide est l’unique mot de longueur z´ero. La concat´enation de deux mots m1 et m2 est le mot obtenu en mettant m1 `a la fin de m2. On note ·l’op´erateur de concat´enation, mais on omet souvent cet op´erateur et on note donc souvent la concat´enation m1·m2 par une simple juxtaposition m1m2. La concat´enation est une op´eration associative qui poss`ede un ´el´ement neutre : le mot vide ǫ. Dans l’´ecriture m = m1m2, m1 est le pr´efixe du mot m, tandis que m2 est lesuffixe du motm.

La concat´enation s’´etend naturellement aux ensembles de mots, on note L1·L2 le langage obtenu en concat´enant tous les mots deL1 avec les mots de L2.

L1·L2 ={m1·m2 |m1 ∈L1∧m2∈L2} Enfin on noteL le langage obtenu en concat´enant les mots deL.

L0 ={ǫ} Ln+1=Ln·L L = [

iN

Li

C’est-`a-dire qu’un mot m de L est la concat´enation de n mots (n≥0) m1, . . .mn, o`u les mi sont tous des mots de L.

1.2 Syntaxe des expressions r´eguli`eres

Les expressions r´eguli`eres ou motifs, not´ees p, sont d´efinies ainsi :

ˆ Le mot videǫest une expression r´eguli`ere.

135

ˆ Un caract`ere c(un ´el´ement de l’alphabet Σ) est une expression r´eguli`ere.

ˆ Si p1 et p2 sont des expressions r´eguli`eres, alors l’alternative p1|p2 est une expression r´eguli`ere.

ˆ Sip1 etp2 sont des expressions r´eguli`eres, alors la concat´enationp1·p2 est une expression r´eguli`ere.

ˆ Sip est une expression r´eguli`ere, alors la r´ep´etitionp*est une expression r´eguli`ere.

On reconnaˆıt ici la d´efinition d’un arbre, et mˆeme d’un arbre de syntaxe abstraite. Il y a deux sortes de feuilles, mot vide et caract`eres ; deux sortes de nœuds binaires, concat´enation et alter-native ; et une sorte de nœud unaire, la r´ep´etition. Comme d’habitude pour lever les ambigu¨ıt´es dans l’´ecriture lin´eaire d’un arbre, on a recours `a des priorit´es (`a savoir, la r´ep´etition est plus prioritaire que la concat´enation, elle-mˆeme plus prioritaire que l’alternative) et `a des parenth`eses.

Ainsi, pour Σ ={a,b,c}, le motif ab*|ba*est `a comprendre comme((a)(b*))|((b)(a*)), ou plus informatiquement comme l’arbre de la figure 1. Pour se souvenir des priorit´es adopt´ees

Fig. 1 – L’arbre de syntaxe abstraite de l’expressionab*|ba*

|

·

a *

b

·

b *

a

on peut noter l’analogie avec les expressions arithm´etiques : les op´erations de concat´enation et d’alternative ont les mˆeme priorit´es respectives que la multiplication et l’addition, enfin la r´ep´etition se comporte comme la mise `a la puissance.

Dans ce polycopi´e nous exprimons les expressions r´eguli`eres sous la forme (( programme )) et non pas d’expression math´ematiques Concr`etement, nous avons ´ecrit ab*|ba* et non pas ab |ba. Ce parti pris entraˆıne que le motif vide ne peut plus ˆetre donn´e par ǫ, si n´ecessaire nous le repr´esenterons donc par exemple comme().

Avec un peu d’habitude, on comprend nos ´ecritures comme des arbres de syntaxe abstraites.

Cela l`eve toutes les ambigu¨ıt´es d’entr´ee de jeu. On doit sans doute remarquer qu’en r´ealit´e, nos priorit´es ne l`event pas toutes les ambigu¨ıt´es. En effet, on peut comprendreabccommea(bc)ou comme (ab)c, c’est-`a-dire comme l’arbre de gauche ou comme l’arbre de droite de la figure 2.

Au fond cette ambigu¨ıt´e n’a ici aucune importance, car l’op´eration de concat´enation des mots est associative. Il en r´esulte que la concat´enation des motifs est ´egalement associative. Comme

Fig. 2 – Deux arbres possibles pourabc

·

a ·

b c

·

c

·

a b

nous allons le voir imm´ediatement, il en va de mˆeme pour l’alternative.

1.3 S´emantique des expressions r´eguli`eres

Une expression arithm´etique a une valeur (plus g´en´eralement on dit aussi une s´emantique) : c’est tout simplement l’entier r´esultat du calcul. De mˆeme, une expression r´eguli`ere a une valeur qui est ici un ensemble de mots. Il est logique que la d´efinition de la s´emantique reprenne la structure de la d´efinition des expressions r´eguli`eres. C’est tout simplement une d´efinition inductive, qui `a chaque expression r´eguli`ere passocie un sous-ensemble [[p]] de Σ.

[[ǫ]] = {ǫ} [[c]] = {c}

[[p1|p2]] = [[p1]]∪[[p2]]

[[p1·p2]] = [[p1]]·[[p2]]

[[p*]] = [[p]]

Cette d´efinition a le parfum usuel des d´efinitions de s´emantique, on a presque rien ´ecrit en fait ! Tout a d´ej`a ´et´e dit ou presque dans la section 1.1 sur les mots. Lorsquemappartient au langage d´efini par p, on dit aussi que le motifp filtre le motm. Un langage qui peut ˆetre d´efini comme la valeur d’une expression r´eguli`ere est dit langage r´egulier.

Exemple 1 Nous savons donc que le langage des mots du fran¸cais selon l’Acad´emie est r´egulier, puisque qu’il est d´efini par une grosse alternative de tous les mots du dictionnaire publi´e par cette institution. Les repr´esentations d´ecimales des entiers sont ´egalement un langage r´egulier d´efini par :

0|(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*

Exercice 1 Montrer qu’un langage qui contient un nombre fini de mots est r´egulier.

Solution.SiL={m1, m2, . . . , mn}est un langage fini contenantnmots, alorsLest exactement d´ecrit par l’alternative de tous les mi.

1.4 Filtrage

La relation de filtragem∈[[p]], ´egalement not´eepm, peut ˆetre d´efinie directement par les r`egles de la figure 3. La d´efinition depm est faite selon le formalisme des r`egles d’inf´erence,

Fig. 3 – D´efinition de la relationp filtrem

Empty ǫǫ

Char cc

Seq

p1 m1 p2 m2 p1p2m1m2

OrLeft p1 m p1|p2 m

OrRight p2m p1|p2m StarEmpty

p*ǫ

StarSeq

pm1 p*m2 p*m1m2

qui est tr`es courant. Il permet la d´efinition inductive d’un pr´edicat. Les r`egles se d´ecomposent en axiomes (par ex. Empty) qui sont les cas de base de la d´efinition, et en r`egles d’inf´erence proprement dites qui sont les cas inductifs de la d´efinition. Les r`egles sont `a comprendre comme

des implications : quand toutes les pr´emisses (au dessus du trait) sont vraies, alors la conclusion (au dessous du trait) est vraie. En enchaˆınant les r`egles on obtient une preuve effective du pr´edicat, appel´ee arbre de d´erivation. Voici par exemple la preuve deab*|ba*baa.

bb

aa

aa a*ǫ a*a a*≺aa ba*baa ab*|ba*baa

Nous disposons donc de deux moyens d’exprimer un langage r´egulier,m∈[[p]] ou pm. Selon les circonstances, il est plus facile d’employer l’un ou l’autre de des moyens. Par exemple, pour montrer qu’un motif filtre un mot, les r`egles d’inf´erences sont souvent commodes. En revanche, pour montrer des ´egalit´es de langages r´eguliers, il est souvent plus commode de se servir des op´erations sur les langages.

Exercice 2 Prouver que pour tout motifp,p* etp**d´efinissent le mˆeme langage.

Solution. Pour tout langage on a (L) =L par d´efinition de l’op´eration de r´ep´etition sur les langages. Prouver l’´equivalence p*m ⇐⇒ p**m est plus p´enible.