37
I.U.T. Lille A — D´ epartement Informatique Math´ ematiques th ´ eorie des langages version du 5 d´ ecembre 2008 C e cours pr´ esente quelques notions g´ en´ erales sur les langages formels. La th´ eorie des langages formels est apparue dans les ann´ ees 1950 comme un outil novateur de la linguistique, science de l’´ etude des langues. Le linguiste am´ ericain Noam CHOMSKY, en particulier, proposa une description g´ en´ erative pour chaque phrase, ` a l’aide de r` egles de r´ ecriture, du type : phrase〉−→ 〈sujet〉〈verbe〉〈objet. sujet〉−→ 〈groupe nominalobjet〉−→ 〈groupe nominalverbe〉 −→ appr´ ecie | aime | adore groupe nominal〉 −→ l’´ etudiant | l’´ etudiante | les math´ ematiques Ainsi, avec cette grammaire, la phrase l’´ etudiant adore les math´ ematiques correspond `a l’arbre d’analyse syntaxique suivant : phrasesujetgroupe nominall’´ etudiant verbeadore objetgroupe nominalles math´ ematiques ` A l’aide de cette grammaire, nous avons pu mettre en ´ evidence la structure de la phrase ´ etudi´ ee... Cette analyse – que nous pratiquons inconsciemmment lorsque nous ´ ecoutons un discours (ou lisons un texte) en langue naturelle – est proche de celle qui doit ˆ etre faite lors de l’interpr´ etation d’un programme ´ ecrit dans un langage informatique de haut niveau (C, C++, JAVA, Cobol...) : un tel programme n’est rien d’autre qu’un fichier texte, c’est-` a-dire une suite de caract` eres dans laquelle on doit mettre `a jour une structure, afin de la traduire en une s´ equence d’instructions en pseudocode ou directement en langage-machine, directement ex´ ecutable par la machine. C’est ` a partir de cette analogie entre langues naturelles et langages informatiques que s’est d´ evelopp´ ee la th´ eorie des langages en tant que partie de l’informatique et de l’algorithmique : on citera les concepts de grammaire, de d´ erivation, d’automate fini, d’automate ` a pile, tous ` a la base des m´ ethodes modernes d’analyse syntaxique et donc de la conception des compilateurs...

th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

I.U.T. Lille A — Departement Informatique

Mathematiques — theorie des langages

version du 5 decembre 2008

Ce cours presente quelques notions generales sur les langages formels. La theorie des langages formels estapparue dans les annees 1950 comme un outil novateur de la linguistique, science de l’etude des langues. Le

linguiste americain Noam CHOMSKY, en particulier, proposa une description generative pour chaque phrase,a l’aide de regles de reecriture, du type :

〈phrase〉 −→ 〈sujet〉 〈verbe〉 〈objet〉.

〈sujet〉 −→ 〈groupe nominal〉

〈objet〉 −→ 〈groupe nominal〉

〈verbe〉 −→ apprecie | aime | adore

〈groupe nominal〉 −→ l’etudiant | l’etudiante | les mathematiques

Ainsi, avec cette grammaire, la phrase ≪ l’etudiant adore les mathematiques ≫ correspond a l’arbre d’analysesyntaxique suivant :

〈phrase〉

〈sujet〉

〈groupe nominal〉

l’etudiant

〈verbe〉

adore

〈objet〉

〈groupe nominal〉

les mathematiques

A l’aide de cette grammaire, nous avons pu mettre en evidence la ≪ structure ≫ de la phrase etudiee...Cette analyse – que nous pratiquons inconsciemmment lorsque nous ecoutons un discours (ou lisons un texte)en langue naturelle – est proche de celle qui doit etre faite lors de l’interpretation d’un programme ecrit dansun langage informatique ≪ de haut niveau ≫ (C, C++, JAVA, Cobol...) : un tel programme n’est rien d’autrequ’un fichier texte, c’est-a-dire une suite de caracteres dans laquelle on doit mettre a jour une structure, afinde la traduire en une sequence d’instructions en pseudocode ou directement en langage-machine, directementexecutable par la machine.

C’est a partir de cette analogie entre langues naturelles et langages informatiques que s’est developpeela theorie des langages en tant que partie de l’informatique et de l’algorithmique : on citera les concepts degrammaire, de derivation, d’automate fini, d’automate a pile, tous a la base des methodes modernes d’analysesyntaxique et donc de la conception des compilateurs...

Page 2: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 2

Table des matieres

1 Definitions generales 3

1.1 Alphabet, lettres et mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Langages, operations sur les langages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 Expressions regulieres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Automates finis 5

2.1 Quelques exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.1 Des AF deterministes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2 Un AF non deterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1.3 Un AFnd avec des transitions instantanees . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 Transformation d’un AF en AFdc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.4 Simplifications d’AFdc, automate minimal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5 La classe des langages reconnaissables par un AF. . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.6 Un exemple de langage non reconnaissable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Grammaires 15

3.1 Quelques exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2 Definitions generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.3 La classification de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.4 Grammaires algebriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.5 Langages reguliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

A Preuve des equivalences : regulier – reconnaissable – type 3 19

A.1 Passage d’un AF a une grammaire reguliere. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19A.2 Passage d’une grammaire reguliere a un AF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20A.3 Passage d’une expression reguliere a une grammaire reguliere. . . . . . . . . . . . . . . . . . . . . 22A.4 Passage d’une grammaire reguliere a une expression reguliere. . . . . . . . . . . . . . . . . . . . . 23

B Syntaxes des expressions regulieres en Tcl 24

B.1 REGULAR EXPRESSION SYNTAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24B.2 AMBIGUITY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

C Expressions regulieres en environnement unix 25

D Une calculatrice en Lex et Yacc 26

D.1 Situation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26D.2 Realisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26D.3 calc.l – Le programme Lex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26D.4 calc.y – Le programme Yacc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27D.5 Compilations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Page 3: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 3

1 Definitions generales

1.1 Alphabet, lettres et mots

Definition 1Un alphabet est un ensemble fini dont les elements sont appeles lettres.

Quelques exemples : {0, 1, 2, 4, 5, 6, 7, 8, 9} est l’alphabet des chiffres en base dix, {0, 1} est l’alphabet des chiffresen base deux, {a, b, c, . . . y, z} est l’alphabet latin, etc.

Definition 2Un mot est une suite finie de lettres, le nombre de lettres d’un mot est la longueur de ce mot. Parconvention, on notera ε le mot vide, dont la longueur est evidemment nulle. L’ensemble des motsque l’on peut construire sur l’alphabet Σ sera note Σ∗.

Par exemple, bonjour, ε, z, zzzzzzzzzzzz sont des mots sur l’alphabet {a, b, c, . . . y, z}, de longueur respective7, 0, 1, 12.

1.2 Concatenation

La seule operation ≪ naturelle ≫ entre mots est la concatenation, en voici quelques exemples avec des motsappartenant a {a, b, c, . . . y, z}∗ : bon · jour = bonjour, jour · bon = jourbon, (bon)2 = bon · bon = bonbon,bon2 = bo · n · n = bonn, bon · ε = bon, turlututu = tu · rlu · (tu)2, zzzzzzzzzzzz = z12.

Definition 3Soient α = (αi)1≤i≤m et β = (βi)1≤i≤n deux mots appartenant a Σ∗. Alors α · β = γ ou :

γi =

{αi pour 1≤i≤mβ−m+i pour m + 1≤i≤m + n

En particulier, α · ε = ε · α = α et ε · ε = ε

Pour tout mot α : α0 = ε. Pour tout mot α et pour tout entier naturel k : αk+1 = αk · α.

Une consequence immediate est :

Propriete 1La longueur du concatene de plusieurs mots est la somme des longueurs de ces mots. De meme, la

longueur de αk est k fois la longueur de α.

1.3 Langages, operations sur les langages

Un langage est tout simplement un ensemble de mots, plus precisement :

Definition 4Un langage sur l’alphabet Σ est une partie de Σ∗.

En dehors des operations ensemblistes habituelles – union, intersection, complementation – on peut definir entrelangages deux nouvelles operations, deduites de l’operation de concatenation entre mots.

Donnons d’abord quelques exemples de langages sur l’alphabet Σ = {a, b, c, . . . y, z}, ainsi que d’operationssur ces langages : Σ, Σ∗, ∅, {ε} , {a, ba}, {a, c, d},

Page 4: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 4

{a, ba} ∩ {a, c, d} = {a} ,

{a, ba} ∪ {a, c, d} = {a, ba, c, d} ,

{a, ba} \ {a, c, d} = {ba} ,

{a, c, d} \ {a, ba} = {c, d} ,

{a, ba} · {a, c, d} = {aa, ac, ad, baa, bac, bad} ,

{a, c, d} · {a, ba} = {aa, aba, ca, cba, da, dba} ,

{a, c, d}2= {a, c, d} · {a, c, d} = {aa, ac, ad, ca, cc, cd, da, dc, dd} ,

{a, c, d}3 = {a, c, d}2 · {a, c, d}

= {aa, ac, ad, ca, cc, cd, da, dc, dd} · {a, c, d}

= {aaa, aca, ada, caa, cca, cda, daa, dca, dda,

aac, acc, adc, cac, ccc, cdc, dac, dcc, ddc, aad, acd, add, cad, ccd, cdd, dad, dcd, ddd}.

Definition 5Soient L, L′ deux langages sur l’alphabet Σ. Alors L · L′ est le langage sur l’alphabet Σ defini par :

L · L′ = {m · m′ : m ∈ L et m′ ∈ L′}

De plus, on pose 1 pour tout langage L : L0 = {ε}, puis, inductivement, pour tout entier naturel k :Lk+1 = Lk · L. On pose enfin : L∗ =

⋃k∈N

Lk et L+ =⋃

k∈N∗ Lk.

On remarquera que, pour tout langage L, L1 = L. D’autre part, pour tout alphabet Σ, Σk est l’ensemble desmots de longueur k construits sur Σ, et Σ∗ =

⋃k∈N

Σk est bien l’ensemble de tous les mots construits sur Σ,comme indique dans la definition 2.

Signalons enfin quelques conventions d’ecriture qui concernent les operations portant sur un langage {α}reduit a un seul mot : {α} ·L sera note plus simplement αL, de meme {α}∗ sera note plus simplement α∗. Voiciquelques exemples – toujours avec l’alphabet Σ = {a, b, c, . . . y, z} – montrant la puissance de ces definitions...et aussi qu’il faut les manier avec precaution :

– aΣ∗ (que l’on devrait noter {a} · Σ∗) est le langage des mots sur Σ commencant par la lettre a,– Σ∗aΣ∗aΣ∗ est le langage des mots sur Σ contenant au moins deux fois la lettre a,– en notant Σ′ = Σ\{a} l’alphabet prive de la lettre a, Σ′∗aΣ′∗aΣ′∗ est le langage des mots sur Σ contenant

exactement deux fois la lettre a,– a∗ = {ε, a, aa, aaa . . .} est le langage des mots ne contenant que la lettre a,– attention : ab∗ = {a, ab, abb, abbb . . .} mais (ab)∗ = {ε, ab, abab, ababab . . .}.

1.4 Expressions regulieres

Nous terminons par une definition inductive que nous utiliserons dans la partie 3.5, page 19 consacree auxdifferentes caracterisations des langages reguliers :

Definition 6La classe des langages reguliers est la classe la plus petite qui contienne les langages finis 2 et quisoit stable par les operations de reunion, concatenation, ≪ etoile ≫. Autrement dit, les seuls langagesreguliers sont les langages qu’il est possible de fabriquer a l’aide des deux regles suivantes :– Tout langage fini est regulier,– Si L et L′ sont reguliers, alors L ∪ L′, L · L′ et L∗ sont reguliers.

Voici quelques exemples de langages reguliers : ∅, Σ, Σ \ {a} (ces langages sont reguliers car finis), le langagedes mots sur Σ contenant au plus une fois la lettre a : en effet, ce langage peut etre obtenu par les operationsde reunion, concatenation, ≪ etoile ≫ a partir de langages eux-memes reguliers, puisque finis :

(Σ \ {a})∗ ∪ (Σ \ {a})∗a(Σ \ {a})∗.

On verra plus loin quelques cas de langages non reguliers, par exemple :{akbk : k ∈ N

}= {ε, ab, aabb, aaabbb, . . .} .

1. Attention a l’erreur courante qui consiste a croire que Lk serait egal a˘

mk : m ∈ L¯

: ce n’est qu’exceptionnellement le cas !2. c’est-a-dire les ensembles finis de mots.

Page 5: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 5

Remarquons tout de suite que, pour prouver que ce dernier langage n’est pas regulier, il ne suffit pas seulementde dire que, dans la definition nque nous venons de lui donner, il n’est pas ≪ fabrique ≫ a l’aide d’une expressionreguliere : il faut en fait justifier qu’il n’existe aucune expression reguliere qui le represente.

Nous allons faire le lien avec les expressions regulieres telles que les utilisent les informaticiens (en particulierdans les langages proches de C ou de unix... On en trouvera une description informelle en annexe C, page 25).et une description un peu plus precise en annexe B, page 24). En transcrivant dans un formalisation plus≪ mathematique ≫, on obtient :

Definition 7Soit Σ un alphabet fini. Une expression reguliere est une expression qui peut etre obtenue parapplication de une ou plusieurs des regles suivantes :– ∅ est une expression reguliere qui designe la langage ∅ (langage vide).– ε est une expression reguliere qui designe la langage {ε} (langage reduit au mot vide, a ne pas

confondre avec le precedent. . .).– Si x est une lettre de Σ, alors x est expression reguliere qui designe la langage {x}.– Si r et s sont des expressions regulieres qui designent respectivement les langages L(r) et L(s),

alors r | s, r · s et r∗ sont des expressions regulieres qui designent respectivement les langagesL(r) ∪ L(s), L(r) · L(s) et L(r)∗.

Ainsi, on pourra ecrire

[b-z]* | [b-z]*a[b-z]*

au lieu de(Σ \ {a})∗ ∪ (Σ \ {a})∗a(Σ \ {a})∗.

2 Automates finis

Un automate est une methode permettant de tester si un mot donne appartient, ou n’appartient pas, a unlangage donne.

Avant de donner les definitions generales, nous etudierons quelques exemples simples, de facon a faciliterla comprehension de ces definitions. Nous verrons d’abord un exemple de la structure la plus simple : celled’automate fini deterministe complet. Nous verrons ensuite un exemple d’automate fini deterministe non complet.Nous passerons ensuite a un exemple de la classe plus generale des automates finis. Le lecteur s’attachera a biencomprendre comment ≪ fonctionne ≫ un automate fini.

Apres avoir donne les definitions generales, nous montrerons que tout automate fini est ≪ equivalent ≫ a unautomate fini deterministe et complet.

Nous donnerons alors des resultats concernant la classe des langages reconnaissables par des automates finis(stabilite par reunion, concatenation, etoile).

Nous terminerons par un algorithme de simplification d’automate.

2.1 Quelques exemples

2.1.1 Des AF deterministes

L’automate A1 (voir figure 1) est un automate sur l’alphabet {a, b, c}, c’est un automate fini car son ensembled’etats {1, 2, 3, 4} est fini. Parmi ces etats, 1 est un etat de depart, 1 et 3 sont des etats acceptants.

1 2

3

4

b

c

a

b | ca | c

a | b

a | b | c

Figure 1 – A1 (automate fini deterministe complet)

Page 6: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 6

Chaque fleche est une transition, par exemple, si l’automate est dans l’etat 1 et qu’il recoit la lettre a, ilpasse dans l’etat 2 = 1 · a. Remarquons que lorsque plusieurs transitions ont meme etat de depart et meme etatd’arrivee, on les represente par une seule fleche portant plusieurs etiquettes, ainsi 2 · a = 2 · c = 4.

Comment ≪ fonctionne ≫ un tel automate ? Le mot abcb est reconnu par l’automate car

1 · abcb = (1 · a) · bcb = 2 · bcb = 3 · cb = 2 · b = 3

et car 3 est un etat acceptant. De meme, le mot vide est reconnu par A1 car l’etat de depart est un des etatsacceptants. Par contre, le mot aabc n’est pas reconnu car

1 · aabc = 2 · abc = 4 · bc = 4 · c = 4

et car 4 n’est pas acceptant.Notons alors L(A1) le langage reconnu par A1, outre le mot vide, L(A1) contient ab, abcb, abcbcb, abcbcbcbcb...

autrement dit :L(A1) = {ε} ∪ {ab(cb)n : n ∈ N} = {ε} ∪ ab(cb)∗.

Remarquons enfin que cet automate fini est deterministe complet, car, d’une part, il a un et un seul etat dedepart, et, d’autre part, il y a, pour chaque couple (etat, lettre), une et une seule transition partant de cet etatet etiquetee avec cette lettre.

Interessons nous a l’etat 4 de notre automate : cet etat est non-acceptant, et, ≪ lorsqu’on y est parvenu, onne peut plus en sortir ≫, c’est-a-dire que, pour toute lettre x de l’alphabet, on a : 4 · x = 4. Un tel etat est ditrebut, poubelle ou trou noir.

On s’autorise souvent a ≪ oublier ≫ les etats-rebuts, ainsi notre premier automate A1 devient A1bis (voirfigure 2). Ce nouvel automate fini est deterministe, mais non complet. En pratique, comment lit-on, par exemple,le mot aabc ?

1 · aabc = 2 · abc = blocage

Tout se passe comme si on sous-entendait un etat de blocage, non acceptant, tel que pour toute lettre x, on ait :blocage ·x = blocage. En d’autre termes, cet etat blocage n’est autre que l’etat-rebut que l’on avait sous-entendu !

1 2 3b

c

a

Figure 2 – A1bis (automate fini deterministe non complet)

2.1.2 Un AF non deterministe

Cependant, il est parfois difficile de trouver un automate fini deterministe reconnaissant un langage donne. 3

Par exemple, sur l’alphabet {a, b, c}, il est facile de construire un automate fini deterministe (voir figure 3)reconnaissant le langage des mots commencant par ba, c’est-a-dire ba {a, b, c}∗ : 4

1 2 3b a

a | b | c

Figure 3 – A2

Le probleme est par contre plus difficile pour le langage {a, b, c}∗ ba {a, b, c}∗ c’est-a-dire 5 le langage desmots contenant ba. On est conduit a proposer l’automate fini suivant :

On remarquera que cet automate n’est pas deterministe, il y a en effet deux transitions marquees b audepart de 1. Il importe de bien comprendre comment un tel automate lit un mot, par exemple cbbab. A causedu caractere non deterministe, il y a plusieurs lectures possibles :

– 1c

−→ 1b

−→ 1b

−→ 1a

−→ 1b

−→ 1

3. L’experience montre que cette difficulte est liee au fait que les automates lisent les mots ≪ par la gauche ≫.4. On devrait plutot noter {ba} · {a, b, c}∗.5. On devrait noter {a, b, c}∗ · {ba} · {a, b, c}∗.

Page 7: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 7

1 2 3b a

a | b | ca | b | c

Figure 4 – A3 (automate fini non deterministe)

– 1c

−→ 1b

−→ 1b

−→ 1a

−→ 1b

−→ 2– 1

c−→ 1

b−→ 2

b−→ blocage

– 1c

−→ 1b

−→ 1b

−→ 2a

−→ 3b

−→ 3Il faut comprendre que le mot cbbab est reconnu parce qu’il est associe a au moins un chemin dans l’automate,partant d’un etat de depart et arrivant a un etat acceptant ; autrement dit, il suffit d’une ≪ bonne ≫ lectured’un mot pour que celui-ci soit reconnu, le fait qu’il existe d’autres lectures du meme mot ne gene en rien.

Comment etre alors certain de n’oublier aucune lecture d’un mot ? On part de {1}, ensemble des etats dedepart de l’automate. Si F est un ensemble d’etats, et si x est une lettre, on notera F · x l’ensemble des etatsauxquels on peut arriver par une transition etiquetee x et partant de l’un des etats de F .

{1} · cbbab = {1} · bbab = {1, 2} · bab = {1, 2} · ab = {1, 3} · b = {1, 2, 3}

Ceci signifie que les etats auxquels on peut arriver depuis l’un des etats de depart en lisant le mot cbbab sont1, 2 et 3. L’un au moins de ces etats est acceptant, d’ou le fait que le mot cbbab est accepte. Etudions un autreexemple :

{1} · cbcb = {1} · bcb = {1, 2} · cb = {1} · b = {1, 2}

Comme ni 1, ni 2 ne sont acceptants, le mot cbcb n’est pas accepte.On verra plus loin que le fait de travailler avec des sous-ensembles de l’ensemble des etats permet de trans-

former un automate fini non deterministe en automate fini deterministe complet.

2.1.3 Un AFnd avec des transitions instantanees

Enfin, voici un dernier exemple. . . Nous voulons construire un automate fini qui reconnaisse le langageab∗c∗b∗ | b∗.

En introduisant des ≪ transitions instantanees ≫ et en gardant a l’esprit que les mots reconnus sont ceuxqui correspondent a un chemin depuis l’un des etats de depart (ici : 1) a un des des etats acceptants (ici ; 4 ou5), on propose : Comme on le voit, cet automate est non deterministe (par exemple, il y a deux lectures du mot

1

2 3 4

5

a

ε ε

ε b c b

b

Figure 5 – A4 (AFnd avec transitions instantanees)

vide : 1 · ε = {1, 5}, le mot vide est accepte car l’un au moins des etats de fin de lecture est acceptant).

2.2 Definitions

Definition 8 (Automate fini)Un automate fini est un quintuplet (Σ, E, D, A, Θ), ou :– Σ est un alphabet, 6

– E est un ensemble fini dont les elements sont appeles etats,

6. c’est-a-dire un ensemble fini d’elements appeles lettres.

Page 8: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 8

– D est une partie de E dont les elements sont appeles etats de depart,– A est une partie de E dont les elements sont appeles etats d’acceptation,– Θ est une partie de E × (Σ ∪ {ε}) × E dont les elements sont appeles transitions. 7

Revenons sur les automates dont les representations sagittales ont ete donnees plus haut. Ainsi (voir figure 1,)A1 = ({a, b, c} , {1, 2, 3, 4} , {1} , {1, 3} , Θ1), ou :

Θ1 = {(1, a, 2), (1, b, 4), (1, c, 4), (2, a, 4), (2, b, 3), (2, c, 4),

(3, a, 4), (3, b, 4), (3, c, 2), (4, a, 4), (4, b, 4), (4, c, 4)}

On prefere souvent resumer cette definition par une table des transitions :

a b c

− 1 + 2 4 42 4 3 43 + 4 4 24 4 4 4

De meme (voir figure 2), A1bis = ({a, b, c} , {1, 2, 3} , {1} , {1, 3} , Θ1bis), ou la table de transition est :

a b c

− 1 + 22 33 + 2

Voici enfin les tables de transition associees aux automates A2 et A3, respectivement : (voir figures 3 et 4) :

a b c

− 1 22 33 + 3 3 3

a b c

− 1 1 1 | 2 12 33 + 3 3 3

Comme A3 comporte plusieurs transitions depuis l’etat 1 pour la lettre b, cet automate est non deterministe.Voyons enfin la table de transitions de A4 (voir figure 5 page 7). Il s’agit, rappelons le, d’un automate non

deterministe car comportant des transitions instantanees :

ε a b c

− 1 5 22 3 23 4 34 + 45 + 5

Nous pouvons donner precisement la definition des automates finis deterministes :

Definition 9 (Automate fini deterministe)Un automate fini deterministe est un automate fini (Σ, E, D, A, Θ) tel que :– D est de cardinal au plus 1, 8

– il n’y a aucune transition instantanee,– Pour tout etat e ∈ E et toute lettre x ∈ Σ, il y a au plus un etat f ∈ E tel que le triplet (e, x, f)

soit element de l’ensemble Θ des transitions 9.

Definition 10 (Automate fini deterministe complet)Un automate fini deterministe complet est un automate fini (Σ, E, D, A, Θ) tel que :– D est de cardinal 1, 10

7. Une transition est donc un triplet du type (etat, lettre ou mot vide, etat) qui est represente par une fleche dans la representationsagittale, lorsque l’etiquette est le mot vide, on parle de transition instan,tanee.

8. Autrement dit : il y a au plus un seul etat de depart.9. Autrement dit : dans la representation sagittale, il n’y a jamais plusieurs fleches partant d’un meme etat et portant la meme

etiquette, ou encore : dans la table de transition, chaque case contient au plus un etat, ou encore : la table de transition definit unefonction de E × Σ dans E.

10. Autrement dit : il y a un seul etat de depart.

Page 9: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 9

– il n’y a aucune transition instantanee,– Pour tout etat e ∈ E et toute lettre x ∈ Σ, il y a exactement un etat f ∈ E tel que le triplet

(e, x, f) soit element de l’ensemble Θ des transitions 11.

Parmi les automates finis proposes ci-dessus, tous ont un seul etat de depart, A1 est deterministe complet, A1,A1bis et A2 sont determistes, A3 et A4 ne sont pas deterministes. Definissons maintenant ce qu’est la lectured’un mot par un automate :

Definition 11 (Lecture par un automate fini)Soit A = (Σ, E, D, A, Θ) un automate fini.– Un chemin de longueur n dans l’automate A est une suite de n transitions

(e1, x1, f1), (e2, x2, f2), . . . (en, xn, fn)

correctement enchaınees, c’est-a-dire telles que : ∀i, 1 ≤ i < n : fi = ei+1. L’etat de depart de cechemin est e1, l’etat d’arrivee, est fn, le mot x1x2 · · ·xn en est la trace.

– Un mot de Σ∗ est reconnu par A s’il est la trace d’au moins un chemin dans A partant d’un etatde depart et arrivant dans un etat d’acceptation.

– Le langage reconnu par A est l’ensemble des mots reconnus par A.– Pour toute partie F de l’ensemble d’etats E, et pour tout mot α de Σ∗, on notera F ·α l’ensemble

des etats d’arrivee associes aux chemins dans A de trace α dont l’etat de depart est dans F . 12

– Avec ces definitions, le langage reconnu par A = (Σ, E, D, A, Θ) est :

L(A) = {α ∈ Σ∗ : D · α ∩ A 6= ∅}

2.3 Transformation d’un AF en AFdc.

D’apres les definitions precedentes, on peut affirmer :

Theoreme 2 (Transformation d’un AF en AFdc)Soit A = (Σ, E, D, A, Θ) un automate fini.

On pose : A = (Σ, E, {D · ε} , A, Θ), ou :

– E = {F ⊆ E : ∃α ∈ Σ∗ : D · α = F}

– A ={F ∈ E : F ∩ A 6= ∅

}

– Θ ={

(F, x, F · x) : F ∈ E , x ∈ Σ}

Alors A est un automate fini deterministe complet qui reconnaıt le meme langage que A.

Revenons sur notre automate A3 (voir figure 4), et appliquons lui cet algorithme (il est utile de rappeler latable de transition de A3 ; on remarquera que cet automate est, certes, non deterministe, mais qu’il n’ a aucunetransition instantanee) :

a b c

− 1 1 1 | 2 12 33 + 3 3 3

− {1} {1} {1, 2} {1}{1, 2} {1, 3} {1, 2} {1}{1, 3} + {1, 3} {1, 2, 3} {1, 3}{1, 2, 3} + {1, 3} {1, 2, 3} {1, 3}

Donnons quelques explications :

– L’etat de depart de A3 est {1}, ensemble des etats de depart de A3,– on calcule {1} · a, {1} · b, {1} · c,

11. Autrement dit : dans la representation sagittale, il y a, a partir de chaque etat, une fleche pour chaque lettre de l’alphabet,ou encore : dans la table de transition, chaque case contient exactement un etat, ou encore : la table de transition definit uneapplication de E × Σ dans E.

12. Dans le cas ou A est deterministe complet, on notera e · x = f au lieu de {e} · x = {f}.

Page 10: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 10

– on cree une nouvelle ligne des qu’un nouvel etat de A3 apparaıt,– lorsque tous les etats apparus sont traites, 13 on a obtenu a la fois tous les etats et toutes les transitions

de A3,

– il reste alors a distinguer parmi les etats de A3 ceux qui sont acceptants, c’est-a-dire qui contiennent l’undes etats acceptants de A3, a savoir 3 : ce sont {1, 2, 3} et {1, 3},

– on peut alors faire la representation de A3,

{1} {1, 2} {1, 3} {1, 2, 3}b

c

ab

a | c

a | c b a | c b

Figure 6 – A3 (Version deterministe de A3)

– on constate alors que lorsque l’automate est parvenu dans l’un ou l’autre des etats acceptants, il ne pourraplus que passer de l’un a l’autre de ces etats, aussi peut-on simplifier l’automate fini propose :

I II IIIb

c

a

a | c b a | b | cFigure 7 – A3bis (Version simplifiee de A3)

Voyons maintenant comment l’automate non deterministe (car comportant des transitions instantanees) A4 (cf.figure 5 page 7) peut etre transforme en AFdc. Rappelons en la table de transitions :

ε a b c

− 1 5 22 3 23 4 34 + 45 + 5

On commence par construire un AFnd equivalent sans transitions instantanees. Pour cela, on determine la listee · ε des etats atteignables par 0, 1 ou plusieurs transitions instantanees depuis chaque etat e :

1 · ε : {1, 5} , 2 · ε : {2, 3, 4} , 3 · ε : {3, 4} , 4 · ε : {4} , 5 · ε : {5}

On obtient alors un AFnd equivalent sans transitions instantanees :– en remplacant l’ensemble des etats de depart D par l’ensemble D · ε des etats atteignables en 0, 1 ou

plusieurs transitions instantanees depuis l’un des etats de depart, ici : {1} · ε = {1, 5},– en ajoutant, pour chaque transition non instantanee (e, x, f) et pour chaque etat g atteignable depuis f

par 1 ou plusieurs transitions instantanees, une transition (e, x, g),– enfin, en supprimant toutes les transitions instantanees.

On obtient dans cet exemple (on remarquera que, par une paresse peu excusable, on a note 234 pour {2, 3, 4} :cette convention de notation est tout a fait acceptable, a condition de bien comprendre que 234 = 23334 = 432. . .,ce qui peut etonner a la premiere lecture !) :

a b c

− 1 234 ∅ ∅2 ∅ 234 ∅3 ∅ ∅ 344 + ∅ 4 ∅

− 5 + ∅ 5 ∅

13. On est assure que le procede se terminera, puisqu’il y aura, pire, autant d’etats que de parties dans {1, 2, 3}, soit 23 = 8 etats.

Page 11: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 11

Il reste a appliquer la methode ≪ classique ≫ de subset construction :

a b c

− 1 2342 2343 344 + 4

− 5 + 5

− 15 + 234 5 ∅234 + ∅ 234 345 + ∅ 5 ∅∅ ∅ ∅ ∅34 + ∅ 4 344 + ∅ 4 ∅

On obtient un AFdc A4′ equivalent a l’AFnd A4, dont voici une representation sagittale :

15

234 34 4

5

ac b

b

b c b

b

a | b | c

c

a a a | ca | c

Figure 8 – A4′ (AFdc equivalent a A4)

2.4 Simplifications d’AFdc, automate minimal.

Un algorithme – connu sous le nom d’algorithme de Nerode, et dont nous allons exposer une presentationen seance de TD, aboutit a ≪ simplifier ≫ un AFdc obtenu par subset construction 14 c’est-a-dire a en regrouperles etats ≪ inutilement separes ≫. Nous enoncerons ensuite le theoreme de Nerode qui affirme que l’AFdcobtenu est non seulement minimal – au sens ou il n’existe aucun AFdc qui reconnaisse le meme langage touten comportant moins d’etats – mais aussi que cet AFdc est en quelque sorte canoniquement lie a son langagereconnu – c’est-a-dire qu’en minimisant deux AFdc sans etats inaccessibles qui reconnaissent le meme langageL, on obtiendra deux AFdc qui non seulement comportent le meme nombre d’etats mais qui, de plus, sontidentiques. . . a la denomination des etats pres.

etape 0 : il est plus simple de renommer les etats, par exemple par un parcours en largeur d’abord depuisl’etat de depart : ceci assure surtout qu’il n’y a pas d’etat inaccessible ; cette etape prealable est ≪ natu-rellement ≫ realisee lors de la construction d’un AFdc par subset construction ;

etape 1 : nous recherchons les peper (paires d’etats peut-etre regroupables), c’est-a-dire les paires constitueesde deux etats tous deux acceptants ou de deux etats tous deux refusants 15 ;

etape 2 : nous calculons les transitions associees a ces peper que nous repartissons en deux categories :– d’une part, celles qui aboutissent a des paires (marquees • dans l’exemple ci-dessous) qui ne sont pas

parmi la liste actuelle des peper perdent leur statut de peper

par contre, les peper (marquees ◦ dans l’exemple ci-dessous) dont les transitions associees aboutissent a despeper ou a des singletons gardent au moins provisoirement (voir etape suivante) leur statut de peper ;

etape 2bis : nous recommencons l’etape precedente tant que la liste de peper devient plus courte 16. . .

14. L’algorithme de Nerode s’applique a tout AFdc sans etat inaccessible : la construction des etats lors de la subset construction

s’effectuant dans un parcours en largeur d’abord, l’automate obtenu est deterministe complet et sans etat inaccessible.

15. S’il y a a etats acceptants et r etats refusants, alors nous obtenons une liste dea(a−1)

2+

r(r−1)2

peper, d’apres le ≪ theoremedes coupes de Champagne ≫...

16. cette liste peut devenir vide, ce qui prouve alors que l’AFdc dont on etait parti etait deja minimal.

Page 12: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 12

etape 3 : . . . et enfin lorsque la liste des peper ne varie plus, chacune des peper restantes acquiert le statutenvie de persah (paire d’etats regroupable sans aucune hesitation) ;

etape 3bis : il reste enfin a recopier la table de transition en tenant compte des regroupements (collapsing)determines pat les persah. . .

Voici un exemple complet, ou l’on demande de rechercher l’AFdc minimal du langage reconnu par l’automatenon deterministe suivant :

a b c

− 1 1452 12 25 233 +4 45 4 45 5 6 46 6 6 36

Par subset construction puis par renumerotation en largeur d’abord, on obtient :

a b c

− 1 145 ∅ ∅145 145 46 4∅ ∅ ∅ ∅46 456 46 3464 45 4 4

456 456 46 346346 + 456 46 34645 45 46 4

a b c

− 1 2 3 32 2 4 53 3 3 34 6 4 75 8 5 56 6 4 77 + 6 4 78 8 4 5

Ces 7 etats refusants et ce seul etat acceptant permettent de construire 21 peper, mais cette longue liste passe a11 peper, puis 5, puis 3 et se stabilise enfin a 2 peper qui sont de fait les deux seules paires d’etats regroupables. . .

a b c

12 2 ◦ 34 ◦ 35 ◦13 23 ◦ 3 ◦ 3 ◦14 26 ◦ 34 ◦ 37 •15 28 ◦ 35 ◦ 35 ◦16 26 ◦ 34 ◦ 37 •18 28 ◦ 34 ◦ 35 ◦23 23 ◦ 34 ◦ 35 ◦24 26 ◦ 4 ◦ 57 •25 28 ◦ 45 ◦ 5 ◦26 26 ◦ 4 ◦ 57 •28 28 ◦ 4 ◦ 5 ◦34 36 ◦ 34 ◦ 37 •35 38 ◦ 35 ◦ 35 ◦36 36 ◦ 34 ◦ 37 •38 38 ◦ 34 ◦ 35 ◦45 68 ◦ 45 ◦ 57 •46 6 ◦ 4 ◦ 7 ◦48 68 ◦ 4 ◦ 57 •56 68 ◦ 45 ◦ 57 •58 8 ◦ 45 ◦ 5 ◦68 68 ◦ 4 ◦ 57 •

a b c

12 2 ◦ 34 • 35 ◦13 23 ◦ 3 ◦ 3 ◦15 28 ◦ 35 ◦ 35 ◦18 28 ◦ 34 • 35 ◦23 23 ◦ 34 • 35 ◦25 28 ◦ 45 • 5 ◦28 28 ◦ 4 ◦ 5 ◦35 38 ◦ 35 ◦ 35 ◦38 38 ◦ 34 • 35 ◦46 6 ◦ 4 ◦ 7 ◦58 8 ◦ 45 • 5 ◦

13 23 • 3 ◦ 3 ◦15 28 ◦ 35 ◦ 35 ◦28 28 ◦ 4 ◦ 5 ◦35 38 • 35 ◦ 35 ◦46 6 ◦ 4 ◦ 7 ◦

15 28 ◦ 35 • 35 ◦28 28 ◦ 4 ◦ 5 ◦46 6 ◦ 4 ◦ 7 ◦

28 28 ◦ 4 ◦ 5 ◦46 6 ◦ 4 ◦ 7 ◦

Page 13: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 13

Il nous reste a replier 8 sur 2 et 6 sur 4, ce qui donne finalement l’AFdc minimal suivant (nous laissons en regardl’AFdc precedemment obtenu par subset construction afin de faciliter la comparaison) :

a b c

− 1 2 3 32 2 4 53 3 3 34 6 4 75 8 5 56 6 4 77 + 6 4 78 8 4 5

a b c

− 1 2 3 32 2 4 53 3 3 34 4 4 75 2 5 57 + 4 4 7

Nous avons rassemble des representations des trois AF de cet exemple : voir figure 9, page 14.Nous admettrons le :

Theoreme 3 (Nerode)Soit A un automate fini deterministe complet sans etat inaccessible, soit L = L(A) le langage reconnu

par cet automate et soit A l’automate obtenu a partir de A par l’algorithme de Nerode .Alors :– A est un un automate fini deterministe complet sans etat inaccessible ;– A et A sont equivalents, c’est-a-dire qu’ils reconnaissent le meme langage L ;– tout automate qui reconnaıt ce langage L a un nombre d’etats superieur ou egal a celui de A ;– tout automate qui reconnaıt ce langage L et qui a le meme nombre d’etats que A est, a la

denomination de ses etats pres, identique a A.Ceci justifie que l’automate A est designe comme l’AFdc minimal du langage L. Une consequencedu theoreme precedent est que, si deux automates qui reconnaissent le meme langage L (langageregulier, puisque reconnaissable : cf. theoreme 7) peuvent etre fort differents, on obtiendra apressubset construction et minimisation le meme AFdc minimal, qui peut donc etre considere commeun representant canonique du langage (regulier !) L.

2.5 La classe des langages reconnaissables par un AF.

Definition 12Un langage est reconnaissable s’il est possible de construire un automate fini qui le reconnaisse.

Nous verrons plus loin qu’il y a identite entre langages reguliers et langages reconnaissables. La preuve de ceresultat est un exercice de manipulation d’automates, nous reviendrons sur ce point apres l’etude des grammaires,et plus precisement des grammaires regulieres.

2.6 Un exemple de langage non reconnaissable.

On demontre le :

Theoreme 4le langage

{akbk : k ∈ N

}N’EST PAS reconnaissable.

preuve D’apres le theoreme 2, si ce langage etait reconnaissable, on pourrait trouver un automate fini deter-ministe complet A = (Σ, E, {d} , A, Θ) qui le reconnaıtrait. 17

L’idee est alors la suivante : apres avoir lu le mot ak, cet AFdc devrait etre dans un ≪ etat ≫ qui serait : Sije lis maintenant un b, alors je dois attendre exactement k lettres b pour passer dans un etat acceptant, touteautre lecture doit me laisser dans un etat non acceptant. La description de cet ≪ etat ≫ demande que la valeur ksoit ≪ mise en memoire ≫ : a deux valeurs differentes de k correspondent deux ≪ etats ≫ differents. Autrementdit, un tel automate devrait avoir au moins autant d’etats qu’il y a de valeurs possibles pour k... c’est-a-direune infinite !

17. Le langage reconnu par A serait donc exactement˘

akbk : k ∈ N¯

, c’est-a-dire que les mots reconnus seraient les akbk et

seulement ceux-la.

Rappelons par ailleurs que, pour tout etat e de l’AFdc A, et pour tout mot α, on note e ·α l’etat auquel parvient l’automate apreslecture du mot α en partant de l’etat e.

Page 14: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 14

4

5 61

2

3

a a

a

cb

a | b | c

a a

cb

a | b | c

c

a

a | b | c

1452

∅3

464

45 4566458

11

3467

a

b | c

a

b

c

a | b | c

a

b c

b | c

a

a

b

c ab

c

a

b

c

2

3

4

5

1

7

a

b | c

a

b

c

a | b | c

a | b c

b | c

a

a | b

c

Figure 9 – Recherche de l’AFdc minimal equivalent a un AFnd donne

Page 15: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 15

De facon plus precise, soit k un entier superieur ou egal au nombre d’etats de A. Parmi les k + 1 etats :d, d · a, d · a2, · · · d · ak, deux au moins sont egaux, il existe donc deux entiers distincts p et q tels que, apreslecture des mots (pourtant distincts) ap et aq, on parvienne au meme etat : d · ap = d · aq. Comme apbp estreconnu, l’etat d · apbp est acceptant, l’egalite precedente implique que d · aqbp = d · aqbp est aussi acceptant, lemot aqbp est donc aussi reconnu, ceci bien que p 6= q : il y a contradiction. �

3 Grammaires

Alors que les automates servent a reconnaıtre si un mot donne est, ou n’est pas, dans un langage donne, lesgrammaires, elles, servent a fabriquer des mots d’un langage donne.

3.1 Quelques exemples

Soit G1 la grammaire suivante, extraite du manuel de l’utilisateur du langage Pascal. Elle decrit 18 ce qu’estun identificateur, c’est-a-dire un mot commencant par une lettre, et suivi d’un nombre quelconque de lettres oude chiffres :

– les symboles terminaux sont a,b,c,d,...z,0,1,...9,– les symboles non terminaux (ou variables) sont :〈identificateur〉, 〈lettre〉, 〈chiffre〉, 〈suite de lettres ou chiffres〉

– le symbole non terminal initial est 〈identificateur〉,– les regles de production sont : 19

〈identificateur〉 ::= 〈lettre〉〈suite de lettres ou chiffres〉〈suite de lettres ou chiffres〉

::= 〈vide〉|〈lettre〉〈suite de lettres ou chiffres〉|〈chiffre〉〈suite de lettres ou chiffres〉

〈lettre〉 ::= a|b|c...y|z

〈chiffre〉 ::= 0|1|2...8|9

Montrons comment est produit le mot iutlille1 :〈identificateur〉 =⇒ 〈lettre〉〈suite de lettres ou chiffres〉,

=⇒ i〈suite de lettres ou chiffres〉,=⇒ i〈lettre〉〈suite de lettres ou chiffres〉,=⇒ iu〈suite de lettres ou chiffres〉,=⇒ ...=⇒ iutlille〈suite de lettres ou chiffres〉,=⇒ iutlille〈chiffre〉〈suite de lettres ou chiffres〉,=⇒ iutlille1〈suite de lettres ou chiffres〉,=⇒ iutlille1〈vide〉 c’est-a-dire iutlille1.

Nous venons de donner un premier exemple de derivation.

18. certes avec quelques simplifications...19. Contrairement aux exemples suivants, cette grammaire est presentee sous ≪ BNF ≫, c’est-a-dire ≪ Backus-Naur Form ≫.

≪ ::= ≫ signifie ≪ peut etre remplace par ≫, ≪ | ≫ signifie ≪ ou ≫

Page 16: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 16

Passons a une serie d’exemples. 20

terminaux non-terminaux axiome reglesG2 : {a, b} {S} S S −→ aSb | εG3 : {a, b} {S, A, B} S S −→ AB

A −→ aA | εB −→ bB | ε

G4 : {a, b} {S} S S −→ aS | ε | bBB −→ bB | ε

G5 : {a, b} {S, X, Y } S S −→ abc | aXbcXb −→ bXXc −→ Y bccbY −→ Y baY −→ aaX | aa

G6 : {a, b, c, d, +,−,×, /} {S} S S −→ SS+ | SS− | SS× | SS/S −→ a | b | c | d

3.2 Definitions generales

Definition 13 (Grammaire)Une grammaire (ou grammaire de type 0) est un quadruplet (ΣT , ΣNT , S, Π) tel que :– ΣT est un alphabet dont les lettres sont appelees symboles terminaux,– ΣNT est un alphabet disjoint de ΣT dont les lettres sont appelees symboles non terminaux,– S est un element distingue de ΣNT appele symbole initial ou axiome,– Π est un ensemble fini de regles de reecriture ou regles de production, chacune de ces regles est

un couple du type : 21

(γ, δ) ∈ ((ΣT ∪ ΣNT )∗ \ Σ∗T ) × (ΣT ∪ ΣNT )∗

Reste a definir comment on peut deriver un mot dans une grammaire :

Definition 14 (Derivation dans une grammaire)Soit une grammaire G = (ΣT , ΣNT , S, Π), soient α et β deux mots de (ΣT ∪ ΣNT )∗.

– On dit que β derive de α en 1 coup (et on note α1

=⇒ β ou α =⇒ β), lorsque l’on peut trouverdes mots α′, α”, γ et δ tels que :

α = α′γα” et β = α′δα” et (γ, δ) ∈ Π

,

– on dit que β derive de α en 0 coup (et on note α0

=⇒ β), lorsque α = β,– la derivation en n coups est definie inductivement :

(αn+1=⇒ β) ⇐⇒ (∃ω : α

n=⇒ ω et ω

1=⇒ β)

– on dit que β derive de α (et on note α∗

=⇒ β), lorsque ∃n ∈ N : αn

=⇒ β,

– autrement dit,∗

=⇒ est la fermeture reflexo-transitive de =⇒,– le langage engendre par G est l’ensemble de tous les mots qui derivent de l’axiome S et qui ne

contiennent aucun symbole non terminal :

L(G) ={α : α ∈ Σ∗

T et S∗

=⇒ α}

.

20. Les symboles terminaux seront notes en minuscule, les non terminaux en majuscule, le symbole initial etant S (comme≪ start ≫). Reste donc a donner la liste des regles de production... ≪ −→ ≫ signifie ≪ peut etre remplace par ≫, ≪ | ≫ signifie≪ ou ≫. Le lecteur pourra s’entraıner a fabriquer des mots a l’aide de ces grammaires. A titre d’indication, on peut montrer que leslangages engendres sont L(G2) = {anbn : n ∈ N}, L(G3) = L(G4) = {ambn : m, n ∈ N} = a∗b∗, L(G5) = {anbncn : n ∈ N \ {0}}.Quant a G6, elle permet de fabriquer les expressions algebriques sur les constantes a, b, c et d en notation polonaise inverse (notationde Lukasiewicz), les symboles terminaux etant : a, b, c, d, +, −, × et /.

21. la regle (γ, δ) est notee γ −→ δ. La partie gauche γ et la partie droite δ sont des mots constitues de symboles terminaux ounon, la partie gauche devant contenir au moins un non terminal.

Page 17: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 17

3.3 La classification de Chomsky

Il est souvent utile de reconnaıtre si plusieurs grammaires produisent ou non le meme langage, on ne sait helaspas resoudre cette question en general. On connaıt cependant de nombreux resultats sur des classes plus simplesde grammaires. Nous definissons ci-dessous les deux classes les plus simples 22et, surtout, les plus courammentutilisees en informatique, de la classification de Chomsky :

Definition 15 (Classification (simplifiee) de Chomsky)Soit G = (ΣT , ΣNT , S, Π) une grammaire.– On dit que G est de type 2, ou est non contextuelle ou est ALGEBRIQUE, lorsque toute regle de

production est du type A −→ α avec A ∈ ΣNT , α ∈ (ΣT ∪ ΣNT )∗ : le membre gauche de chaqueregle se reduit a une seule variable, le membre droit est quelconque.

– On dit que G est de type 3 ou est REGULIERE, lorsque toute regle de production 23 est soit dumodele A −→ αB, soit du modele A −→ α, avec A, B ∈ ΣNT , α ∈ Σ∗

T : le membre gauche dechaque regle se reduit a une seule variable, le membre droit comporte au plus une variable, si c’estle cas, cette variable doit etre a la fin du membre droit.

– Un langage est dit de type i s’il est possible de trouver une grammaire de type i qui l’engendre.

3.4 Grammaires algebriques

Dans la pratique, les grammaires utilisees couramment en informatique sont algebriques, aussi ne trouvera-t-on dans ce cours qu’un exemple de grammaire non algebrique (il s’agit de G5, page 15).

On admet le :

Theoreme 5Tout langage de type i est aussi de type j, pour tout j tel que j ≤ i.

Ceci implique, par exemple, que tout langage de type 3 est aussi un langage de types 2, 1 et 0.Il faut remarquer que, s’il est facile de determiner quels types possede une grammaire donnee, la notion de

types de langage est moins facile d’emploi.Ainsi, la grammaire

({a, b} ; {S, A, B} ; S; {S −→ AB; A −→ aA | ε; B −→ bB | ε})

est de type 2 (car la partie gauche de chaque regle est reduite a un seul non-terminal) mais pas 3 (car la regleS −→ AB contient plusieurs non-terminaux dans sa partie droite). On en deduit que le langage engendre parcette grammaire – dont on voit aisement qu’il s’agit de a∗b∗ – est au moins de type 2... De fait, le theoreme 7montre que, parce qu’il est decrit par une expression reguliere, ce langage peut aussi etre produit par unegrammaire de type 3. On peut par exemple proposer :

({a, b} ; {S, B} ; S; {S −→ aS | B; B −→ bB | ε}).

Le langage a∗b∗ est donc non seulement de type 2, mais aussi de type 3...Inversement, le langage

{akbk : k ∈ N

}n’est pas reconnaissable par un automate fini (cf. theoreme 4) et ne

peut (theoreme 7) donc etre produit par une grammaire de type 3. Par contre, ce meme langage est clairementproduit par la grammaire de type 2 :

({a, b} ; {S} ; S; {S −→ aSb | ε})

et finalement{akbk : k ∈ N

}est de type 2 mais pas 3.

22. A titre d’information, voici l’enonce complet de la definition : Soit G = (ΣT , ΣNT , S, Π) une grammaire.– Une grammaire quelconque est dite de type 0, ou non restreinte, ou a structure de phrase.

– On dit que G est de type 1, ou est contextuelle, ou context sensitive, lorsque toute regle de production est du type δ −→ γavec δ = δ′Aδ”, γ = δ′αδ” et A ∈ ΣNT , δ′, δ”, α ∈ (ΣT ∪ ΣNT )∗, α 6= ε, a l’exception toutefois de la regle S −→ ε qui peutappartenir a Π, a condition que, dans ce cas, S n’apparaisse jamais dans la partie droite d’une regle de Π.

– On dit que G est de type 2, ou est non contextuelle, ou est une C-grammaire, ou est context free, ou est ALGEBRIQUE,

lorsque toute regle de production est du type A −→ α avec A ∈ ΣNT , α ∈ (ΣT ∪ ΣNT )∗.– On dit que G est de type 3, ou est une K-grammaire, ou est lineaire a droite, ou est REGULIERE, lorsque toute regle de

production est soit du modele A −→ αB, soit du modele A −→ α, avec A, B ∈ ΣNT , α ∈ Σ∗

T.

– Un langage est dit de type i s’il est possible de trouver une grammaire de type i qui l’engendre.

23. Pour le premier modele, rien n’empeche que A = B. Les regles du deuxieme modele sont appelees regles terminales.

Page 18: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 18

Donnons maintenant, en nous appuyant sur des exemples, quelques definitions utiles dans le cadre desgrammaires algebriques. Nous definissons les grammaires :

G = ( {a, b, c, d, +,×} , {S, X} , S, {S −→ S + X | S × X | X , X −→ a | b | c | d} )

G’ = ( {a, b, c, d, +,×} , {S} , S, {S −→ S + S | S × S | a | b | c | d} )

et etudions d’abord comment produire dans la premiere grammaire G le mot a + b × c + d. On peut proposerplusieurs derivations de ce mot :

(q) S =⇒ S + X =⇒ S × X + X =⇒ S × c + X =⇒ S + X × c + X =⇒ S + b × c + X

=⇒ X + b × c + X =⇒ a + b × c + X =⇒ a + b × c + d

(g) S =⇒ S + X =⇒ S × X + X =⇒ S + X × X + X =⇒ X + X × X + X =⇒ a + X × X + X

=⇒ a + b × X + X =⇒ a + b × c + X =⇒ a + b × c + d

(d) S =⇒ S + X =⇒ S + d =⇒ S × X + d =⇒ S × c + d =⇒ S + X × c + d

=⇒ S + b × c + d =⇒ X + b × c + d =⇒ a + b × c + d

Mais il importe de comprendre que ces derivations ne different que par l’ordre d’execution. Cette equivalence setraduit bien dans le fait que ces derivations sont toutes associees au meme arbre d’analyse syntaxique :

S

S

S

S

X

a

+ X

b

× X

c

+ X

d

On dira que la derivation (g) (respectivement (d) ) ci-dessus est la derivation la plus a gauche (respectivementla plus a droite) associee a cet arbre, car on a pris comme regle, lorsqu’on avait le choix entre plusieurs non-terminaux, de reduire celui qui etait le plus a gauche (respectivement la plus a droite).

Finalement, il faut bien comprendre que c’est l’arbre syntaxique (et non pas les diverses derivations quilui sont associees) qui nous permet de ≪ lire ≫ la structure du mot a + b × c + d, qui est donc ici compriscomme ((a + b) × c) + d. Le lecteur se convaincra aisement que chaque mot produit par G admet un seularbre de derivation (on dira que cette grammaire est non ambigue) correspondant a une evaluation des signesd’operation dans le sens de lecture 24. Le lecteur trouvera en annexe une grammaire (ecrite en langage yacc)qui implemente les parenthesages et qui, surtout, permet, en l’absence de parentheses, de ≪ forcer ≫ le respectdes priorites habituellement utilisees en mathematiques, par exemple, a + b × c + d devrait etre evalue comme(a + (b × c)) + d.

Pour terminer, on remarquera que la grammaire G’ ci-dessus produit le meme langage 25 que G, mais quecertains mots admettent plusieurs arbres de derivation – autrement dit, la grammaire G’ est ambigue, ce quiest evidemment un defaut impordonnable aux yeux d’un programmeur... Par exemple, les arbres de derivationssuivants correspondent aux ≪ interpretations ≫ ((a + b) × c) + d et (a + b) × (c + d) du mot a + b × c + d :

S

S

S

S

a

+ S

b

× S

c

+ S

d

S

S

S

a

+ S

b

× S

S

c

+ S

d

Nous terminerons en enoncant un theoreme utile dans les preuves mettant en œuvre des derivations dansdes grammaires algebriques :

24. Attention, ce sont les signes d’operation qui sont situes au plus pres des feuilles qui sont evalues en premier, le ≪ + ≫ de lapremiere production S =⇒ S + X sera donc evalue en dernier !

25. A savoir ({a, b, c, d} · {+,×})∗ · {a, b, c, d}.

Page 19: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 19

Theoreme 6Soit G = (ΣT , ΣNT , S, Π) une grammaire ALGEBRIQUE.Soient α1, α2, β ∈ (ΣT ∪ ΣNT )∗, et soit k ∈ N. Alors :

(α1α2

k=⇒ β) ⇐⇒ ∃β1, β2 ∈ (ΣT ∪ ΣNT )∗, ∃k1, k2 ∈ N :

α1

k1=⇒ β1

α2

k2=⇒ β2

k1 + k2 = kβ = β1 · β2

3.5 Langages reguliers

On demontre le :

Theoreme 7Il y a identite entre :– les langages reguliers ( ie definis par une expression reguliere),– les langages reconnaissables, ( ie reconnus par au moins un automate fini),– les langages de type 3 ( ie produits par au moins une grammaire de type 3).

La preuve de ce theoreme est relativement difficile a rediger dans le cas general, en particulier a cause du faitque les notations deviennent tres ≪ lourdes ≫... A notre niveau, nous nous contenterons donc de suggerer lesmethodes generales sur quelques exemples proposes dans les feuilles d’exercices. Voici quelques savoir-faire liesa ce theoreme que vous devriez savoir manier, au moins dans des cas simples :

– passage de expression reguliere a grammaire reguliere,– passage de expression reguliere a automate fini,– passage de automate fini a automate fini deterministe complet,– reconnaissance du fait qu’un langage N’EST PAS regulier (exemple-type : {anbn : n ∈ N}).

Une preuve generale de ce resultat sera donnee en annexe.

A Preuve des equivalences : regulier – reconnaissable – type 3

On desire donc prouver que, pour un langage L, il est equivalent d’affirmer que :– L est regulier (c’est-a-dire que L peut etre decrit par une expression reguliere),– L est reconnaissable (c’est-a-dire qu’il existe un automate fini qui reconnait L),– L est de type 3 (c’est-a-dire qu’il existe une grammaire de type 3 qui engendre L).

A.1 Passage d’un AF a une grammaire reguliere.

Soit donc un automate fini 26 A = (Σ, E, D, A, Θ) : comment obtenir une grammaire de type 3 qui engendrele langage reconnu par cet automate ?

Rappelons que le langage L(A) des mots reconnus par cet automate est l’ensemble des etiquettes de cheminsdans A menant de l’un des etats de depart a l’un des etats acceptants, ainsi, le mot a1a2 . . . an (ou a1, a2...an appartiennent a Σ) est reconnu s’il existe dans Θ n transitions (e0, a1, e1), (e1, a2, e2)... (en−1, an, en) tellesque :

D ∋ e0

a1−→ e1

a2−→ . . . en−1

an−→ en ∈ A.

Soit alors S un nouveau symbole (n’appartenant pas a l’alphabet Σ ni a l’ensemble des etats E), on definit unegrammaire G = (Σ, E ∪ {S} , S, Π) comme suit :

– l’alphabet terminal est l’alphabet Σ de l’automate A,– l’alphabet non terminal est l’ensemble des etats E de l’automate A auquel on ajoute le nouveau symbole

S,– le symbole initial est S,

26. L’automate considere n’a nul besoin d’etre deterministe ni a fortiori complet.

Page 20: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 20

– l’ensemble π des regles est constitue comme suit :(groupe α) : pour chaque 27 etat de depart d ∈ D, on cree la regle S −→ d,(groupe β) : pour chaque etat d’acceptation a ∈ A, on cree la regle a −→ ε,(groupe γ) : pour chaque transition (e, x, f) ∈ Θ, on cree la regle e −→ xf .

On voit alors que la lecture dans l’automate A du mot a1a2 . . . an citee plus haut correspond a la derivationsuivante dans la grammaire G :

S =⇒ e0 =⇒ a1e1 =⇒ a1a2e2 . . . =⇒ a1a2 . . . an−1en−1 =⇒ a1a2 . . . an−1anen =⇒ a1a2 . . . an−1an

il est d’autre part clair que la production d’un mot quelconque de L(G) de longueur n s’obtient en ≪ mettantbout a bout ≫ d’abord une transition du groupe α, puis n transitions du groupe γ, et enfin une transition dugroupe β... il y a donc bien identite entre le langage L(A) reconnu par l’automate A et le langage L(G) engendrepar la grammaire G.

Remarquons enfin que G est evidemment du type 3, (grammaire reguliere) : nous venons de prouver quetout langage reconnaissable par un automate est le langage d’une grammaire de type 3.

A.2 Passage d’une grammaire reguliere a un AF.

Soit donc une grammaire G = (ΣT , ΣNT , S, Π) de type 3 (ce qui signifie que toute regle de Π est soit du typeA −→ αB : A, B ∈ ΣNT , α ∈ Σ∗

T , soit du type A −→ α : A ∈ ΣNT , α ∈ Σ∗T ), comment construire un automate

qui reconnaıt le langage engendre par cette grammaire?On a vu dans ce qui precede qu’un automate ≪ traduit ≫ une grammaire dont les regles relevent de l’un ou

l’autre des groupes que nous avons designes ci-dessus ≪ α ≫, ≪ β ≫ et ≪ γ ≫ : il s’agit donc d’un cas particulierde grammaire de type 3 –c’est-a-dire reguliere – que nous appellerons ici grammaire d’AF.

La question que nous nous posons est donc la suivante : etant donnee la grammaire G = (ΣT , ΣNT , S, Π) detype 3, peut-on en deduire une grammaire d’AF equivalente a G, c’est-a-direqui produit exactement le memelangage que G ? Si nous y parvenons, il nous sera alors facile de construire un automate fini qui reconnaıtraexactement le langage produit a la fois par la grammaire d’AF et par la grammaire G.

Pour parvenir a cette fin, nous allons appliquer une serie de transformations a la grammaire G, toutes lesgrammaires ainsi creees seront des grammaires regulieres equivalentes a G, et la derniere sera une grammaired’AF equivalente a G.

• Premiere transformation : Remarquons d’abord que l’on peut, sans perte de generalite, que l’axiome Sn’apparaıt dans aucun membre droit, sinon, il suffit d’introduire un nouveau symbole S, puis de remplacerG par la grammaire reguliere :

(ΣT , ΣNT ∪{

S}

, S,{S −→ S

}∪ Π)

de cette maniere, on est assure que l’axiome de notre grammaire ne peut apparaıtre dans un mot in-termediaire d’une derivation : ce point sera utile lorsque nous supprimerons les ε-regles.

• Deuxieme transformation : Parmi l’ensemble Π des regles de production de G, il nous faut chercher cellesqui ne relevent d’aucun des groupes α, β et γ, puis les modifier en une ou plusieurs regles de l’un ou l’autrede ces groupes, sans, bien entendu, modifier le langage engendre...– une regle du type

A −→ α : A ∈ ΣNT , α ∈ Σ+

T avec α = a1a2 . . . an : a1, a2 . . . an ∈ ΣT

sera remplacee, en introduisant de nouveaux symboles non-terminaux X1, X2 . . . Xn, par les n regles :

A −→ a1X1, X1 −→ a2X2, . . . , Xn−1 −→ anXn, Xn −→ ε

qui appartiennent au groupe β pour la derniere et au groupe γ pour les autres,– une regle du type

A −→ αB : A, B ∈ ΣNT , α ∈ Σ+

T , avec α = a1a2...an : a1, a2...an ∈ ΣT et n ≥ 2

sera remplacee, en introduisant de nouveaux non-terminaux X1, X2, . . . , Xn−1, par les n regles :

A −→ a1X1, X1 −→ a2X2, . . . , Xn−1 −→ anB

qui appartiennent toutes au groupe γ.

27. Lorsqu’il y a un seul etat de depart d, il est en fait inutile d’introduire le nouveau symbole S : il suffit de prendre d commesymbole initial.

Page 21: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 21

• Troisieme transformation : Apres ces premieres series de transformations, les seules regles qui pourraientencore etre non conformes au ≪ standard ≫ des grammaires d’AF seraient les 28

X −→ Y : X ∈ ΣNT \ {S} , Y ∈ ΣNT ,

(ou le non-terminal de gauche X n’est pas l’axiome S, auquel cas la regle S −→ Y releverait du groupe αdes grammaires d’AF) et nous nous placons donc desormais dans la situation ou G = (ΣT , ΣNT , S, Π) estune grammaire de type 3 comportant des ε-regles que nous voulons remplacer par des regles d’AF.Nous utiliserons pour cela les relations 29 ≺ et ≍ dans l’ensemble ΣNT des non-terminaux :

∀X, Y ∈ ΣNT : ((X ≺ Y ) ⇔ (X+

=⇒ Y ))

et∀X, Y ∈ ΣNT : ((X ≍ Y ) ⇔ ((X

∗=⇒ Y ) et (X

∗=⇒ Y ))).

De facon generale, on va choisir, parmi chaque classe de non-terminaux interchangeables, l’un d’entre eux,puis remplacer dans chaque regle chaque non-terminal par le representant choisi dans sa ≪ classe d’inter-changeabilite ≫, puis on supprimera toute ε-regle faisant intervenir deux non-terminaux interchangeables.Apres ces transformations, on obtient une nouvelle grammaire dont on se convainc aisement qu’elleequivaut a la precedente et ou la relation ≪ etre remplacable par ≫ (notee ≺) est sans circuit.

• Derniere transformation : Nous allons, pour chaque regle X −→ αY de cette nouvelle grammaire ouapparaıt dans le membre gauche un non-terminal Y tel que Y ≺ Z, ajouter la nouvelle regle X −→ αZ,autrement dit, la regle X −→ αY est remplacee par les regles X −→ αY | αZ, on termine en supprimanttoutes les ε-regles restantes (sauf celles dont le membre gauche est l’axiome S), on obtient une nouvellegrammaire dont on se convainc aisement qu’elle equivaut a la precedente et qui ne contient plus aucuneε-regle... c’est-a-dire une grammaire d’AF !

Prenons l’exemple 30 G1 suivant :

S −→ aA | bB | cC, A −→ aA, E −→ eF, C −→ ε, D −→ ε, F −→ ε,

A −→ B, B −→ D, D −→ A, D −→ E, C −→ B.

On voit d’une part que l’axiome S n’apparaıt dans le membre droit d’aucune regle, et d’autre part que aucuneregle ne fait intervenir plusieurs symboles terminaux, ce qui rend inutiles les premiere et deuxieme transforma-tions decrites ci-dessus.

La seule difficulte provient des 5 ε-regles :

A −→ B, B −→ D, D −→ A, D −→ E, C −→ B,

on voit que A, B et D sont interchangeables, on decide donc (troisieme transformation) de remplacer chaqueoccurence de B et de D par A (tout en laissant les autres non-terminaux inchanges, puiqu’ils ne sont interchan-geables qu’avec eux-memes), et l’on obtient une nouvelle grammaire G2 equivalente a G1, mais ou la relation≺ est sans circuit.

En particulier, les seules ε-regles de G2 sont : A −→ E, C −→ A, la relation ≺ se resume donc maintenanta :

C ≺ A, A ≺ E, et, par transitivite : C ≺ E

28. Ce type de regles - dont l’execution ne produit aucun terminal - est appele ≪ ε-regle ≫.29. On lira ≪ X est remplacable par Y ≫ pour ≪ X ≺ Y ≫ et ≪ X est interchangeable avec Y ≫ pour ≪ X ≍ Y ≫.

On remarquera que ≺ est la fermeture transitive de la relation =⇒ restreinte a ΣNT ...30. Pour alleger l’ecriture, on ne donne que les regles de production, comme a l’habitude, les non-terminaux sont en majuscule

et les terminaux en minuscule, l’axiome est S.

Page 22: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 22

d’ou (quatrieme transformation) une grammaire d’AF G3 equivalente aux deux precedentes :

G1 : G2 : G3 :

S −→ aA | bA S −→ aA | bA S −→ aA | aE | bA | bE

S −→ cC S −→ cC S −→ cC | cA | cE

A −→ aA A −→ aA A −→ aA | aE

E −→ eF E −→ eF E −→ eF

C −→ ε C −→ ε C −→ ε

A −→ ε A −→ ε A −→ ε

F −→ ε F −→ ε F −→ ε

A −→ B, B −→ D, D −→ A

D −→ E A −→ E

C −→ B C −→ A

Pour suggerer comment l’on montre l’equivalence de ces trois grammaires, envisageons la derivation de G1

S =⇒ cC =⇒ cB =⇒ cD =⇒ cA =⇒ caA =⇒ caaA

=⇒ caaB =⇒ caaD =⇒ caaE =⇒ caaeF =⇒ caaeε = caae

obtenue en ≪ executant ≫ les productions suivantes de G1 : S −→ cC, C −→ B, B −→ D, D −→ A, A −→ aA,A −→ aA, A −→ B, B −→ D, D −→ E, E −→ eF , F −→ ε.Dans G2, cette derivation devient :

S =⇒ cC =⇒ cA =⇒ caA =⇒ caaA =⇒ caaE =⇒ caaeF =⇒ caaeε = caae

en ≪ executant ≫ les productions suivantes de G2 :

S −→ cC, C −→ A, A −→ aA, A −→ aA, A −→ E, E −→ eF, F −→ ε.

Enfin, on obtient dans G3 la derivation :

S =⇒ cA =⇒ caA =⇒ caaE =⇒ caaeF =⇒ caaeε = caae

en ≪ executant ≫ les productions suivantes de G3 :

S −→ cA, A −→ aA, A −→ aE, E −→ eF, F −→ ε.

Finalement, on remarquera que la grammaire G3 produit le langage reconnu par l’automate (non deterministe)A5 represente ci-dessous (et qu’une expression reguliere de ce langage est {c, ae, be, ce}∪{a, b, c}·{a}∗∪{a, b, c}·{a}∗ · {e}, soit, plus simplement{a, b, c} · {a}∗ ∪ {a, b, c} · {a}∗ · {e}) :

S A

C

E F

a | b | c

a | b | c

c

a

e

a

Figure 10 – A5 (automate fini non deterministe equivalent aux grammaires G1, G2 et G3)

Resumons : nous venons de montrer que tout langage produit par une grammaire de type 3 est un langagereconnaissable par un automate fini.

A.3 Passage d’une expression reguliere a une grammaire reguliere.

Soit donc un langage regulier, montrons qu’il est possible de proposer une grammaire reguliere qui produitpar ce langage.

Nous avons donne une definition recursive de la classe des langages reguliers :

Page 23: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 23

– tout langage fini est regulier,– la reunion de deux langages reguliers est un langage regulier,– la concatenation de deux langages reguliers est un langage regulier,– l’etoile d’un langage regulier est un langage regulier,– les seuls langages reguliers sont ceux que l’on peut obtenir par application des regles precedentes.

Il nous reste donc a proposer une construction recursive d’une grammaire pour un langage regulier quelconque...– Soit L = {α1, . . . , αn} un langage fini sur l’alphabet Σ, notons alors S un nouveau symbole, alors la

grammaire(Σ, {S} , S, {S −→ α1 | · · · | αn})

est une grammaire reguliere qui produit le langage L.– Soit maintenant G une grammaire reguliere, en introduisant un nouveau non-terminal Z, en remplacant

chaque regle terminale X −→ α de G par la regle X −→ αZ, puis en ajoutant la regle Z −→ ε, on obtientune grammaire reguliere equivalente a G et dont la seule regle terminale est Z −→ ε.

– Soient maintenant G′ = (Σ′T , Σ′

NT , S′, Π′) et G” = (ΣT ”, ΣNT ”, S”, Π”) deux grammaires regulieres, onpeut supposer que la seule regle terminale de G′ est Z −→ ε ; quitte a renommer certains symboles, onpeut aussi supposer que les alphabets {S}, Σ′

NT , ΣNT ” etΣ′T ∪ ΣT ” sont deux a deux disjoints.

On pourra alors verifier que :– la grammaire

(Σ′T ∪ ΣT ”, {S} ∪ Σ′

NT ∪ ΣNT ”, S, {S −→ S′ | S”} ∪ Π′ ∪ Π”)

est une grammaire reguliere qui produit le langage L(G′) ∪ L(G”),– la grammaire

(Σ′T ∪ ΣT ”, Σ′

NT ∪ ΣNT ”, S′, (Π′ \ {Z −→ ε}) ∪ {Z −→ S”} ∪ Π”)

est une grammaire reguliere qui produit le langage L(G′) · L(G”),– la grammaire

(Σ′T , Σ′

NT , S′, {S′ −→ ε} ∪ Π′ ∪ {Z −→ S′})

est une grammaire reguliere qui produit le langage (L(G′))∗.La definition recursive des langages reguliers nous permet donc de conclure que tout langage regulier peut etreproduit par une grammaire de type 3.

A.4 Passage d’une grammaire reguliere a une expression reguliere.

Pour terminer notre preuve de l’equivalence annoncee dans le theoreme 7, il nous resterait a justifier qu’ilest possible de proposer une expression reguliere pour tout langage engendre par une grammaire de type 3.

Remarquons d’abord que dans la cas (certes simplissime !) ou il n’y a qu’un seul non terminal, alors lagrammaire etudiee est du type 31

G = (ΣT , {S} , S, {S −→ α1S | · · · | αaS} ∪ {S −→ β1 | · · · | βb})

les mots α1, . . . , αa, β1, . . . , βb etant terminaux.On montre alors aisement que L(G) est le langage regulier :

{α1, . . . , αa}∗ · {β1, . . . , βb} .

Dans un deuxieme temps, supposons que nous sachions determiner une expression reguliere d’un langageproduit par une grammaire reguliere, pourvu que cette grammaire ait au plus n non-terminaux, et envisageonsune grammaire reguliere

G = (ΣT , ΣNT , S, Π)

ayant n + 1 non-terminaux.Quitte a renommer les n+1 elements de ΣNT , on peut supposer que ΣNT = {S, X1, X2, . . . , Xn}, puis que :

Π = Π′ ∪ {S −→ β1 | · · · | βb, S −→ α0,1S | · · · | α0,a0S,

S −→ α1,1X1 | · · · | α1,a1X1, . . . , S −→ αk,1Xk | · · · | αk,ak

Xk }

on a suppose, dans les notations ci-dessus, que Π′ contient toutes les regles ne comportant pas l’axiome S agauche, et que les variables intervenant dans les regles de Π \ Π′ sont S, X1 ... Xk.

31. En separant les regles terminales des regles non terminales...

Page 24: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 24

Etudions alors les grammaires

Gi = (ΣT ∪ {S} , {X1, X2, . . . , Xn} , Xi, Π′)

ou 1 ≤ i ≤ n : chacune de ces grammaires a exactement n non-terminaux, il est donc possible (d’apres notrehypothese de recurrence) de donner une expression reguliere (sur l’alphabet ΣT ∪ {S}) de son langage L(Gi).

On remarquera que cette expression contient eventuellement le symbole S qui a, dans Gi, le statut determinal... Cependant, le fait que S n’apparaıt que completement a droite dans les regles de Π – et donc danscelles de Π′ – nous permet de supposer une ecriture de L(Gi) sous une forme

L(Gi) = Li ∪ L′i · {S}

ou Li et L′i sont des expressions regulieres sur l’alphabet ΣT .

Notons maintenant :

B = {β1, . . . , βb}

A = {α0,1, . . . , α0,a0}

A1 = {α1,1, . . . , α1,a1}

...

Ak = {αk,1, . . . , αk,ak} ,

(ces ensembles sont reguliers car finis).On a, en quelque sorte, reecrit les regles de G sous la forme suivante, ou les ≪ coefficients ≫ B, A, Ai, Li et

L′i sont des expressions regulieres (sur l’alphabet ΣT , bien sur) :

S∗

=⇒ B | AS | A1X1 | . . . | AkXk

X1

∗=⇒ L1 | L′

1S

...

Xk∗

=⇒ Lk | L′kS

Xk+1

∗=⇒ Lk+1 | L′

k+1S

...

Xn∗

=⇒ Ln | L′nS

d’ou l’on deduit que le langage L(G) admet l’expression reguliere suivante :

L(G) = (A ∪ A1 · L′1 ∪ · · · ∪ Ak · L′

k)∗ · (B ∪ A1 · L1 ∪ · · · ∪ Ak · Lk)

ceci acheve la preuve par recurrence du fait que le langage produit par une grammaire reguliere quelconqueadmet une expression reguliere.

De facon plus generale, nous venons d’achever la preuve de l’equivalence annoncee dans le theoreme 7, asavoir que les trois ≪ procedes ≫ : automates finis, grammaires de type 3 et expressions regulieres ont la meme≪ puissance ≫, c’est-a-dire qu’ils engendrent une seule et meme classe de langages.

B Syntaxes des expressions regulieres en Tcl

B.1 REGULAR EXPRESSION SYNTAX

A regular expression is zero or more branches, separated by |. It matches anything that matches one of thebranches.

A branch is zero or more pieces, concatenated. It matches a match for the first, followed by a match for thesecond, etc.

A piece is an atom possibly followed by *, +, or ?. An atom followed by * matches a sequence of 0 or morematches of the atom. An atom followed by + matches a sequence of 1 or more matches of the atom. An atomfollowed by ? matches a match of the atom, or the null string.

An atom is a regular expression in parentheses (matching a match for the regular expression), a range (seebelow), . (matching any single character), ^ (matching the null string at the beginning of the input string),$ (matching the null string at the end of the input string), a \ followed by a single character (matching thatcharacter), or a single character with no other significance (matching that character).

Page 25: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 25

A range is a sequence of characters enclosed in []. It normally matches any single character from thesequence. If the sequence begins with ^, it matches any single character not from the rest of the sequence. Iftwo characters in the sequence are separated by -, this is shorthand for the full list of ASCII characters betweenthem (e.g. [0-9] matches any decimal digit). To include a literal ] in the sequence, make it the first character(following a possible ^). To include a literal -, make it the first or last character.

B.2 AMBIGUITY

If a regular expression could match two different parts of the input string, it will match the one which beginsearliest. If both begin in the same place but match different lengths, or match the same length in different ways,life gets messier, as follows.

In general, the possibilities in a list of branches are considered in left-to-right order, the possibilities for ‘*’,‘+’, and ‘ ?’ are considered longest-first, nested constructs are considered from the outermost in, and concate-nated constructs are considered leftmost-first. The match that will be chosen is the one that uses the earliestpossibility in the first choice that has to be made. If there is more than one choice, the next will be made in thesame manner (earliest possibility) subject to the decision on the first choice. And so forth.

For example, (ab|a)b*c could match abc in one of two ways. The first choice is between ab and a ; sinceab is earlier, and does lead to a successful overall match, it is chosen. Since the b is already spoken for, the b*

must match its last possibility-the empty string-since it must respect the earlier choice.In the particular case where no |s are present and there is only one *, +, or ?, the net effect is that the

longest possible match will be chosen. So ab*, presented with xabbbby, will match abbbb. Note that if ab* istried against xabyabbbz, it will match ab just after x, due to the begins-earliest rule. (In effect, the decision onwhere to start the match is the first choice to be made, hence subsequent choices must respect it even if thisleads them to less-preferred alternatives.)

In addition\w matches an alphanumeric character (including_) an\W a nonalphanumeric. Word boundariesmay be matched b\b and non-boundaries b\B. A whitespace character is matched by \s, a non-whitespace b\S.A numeric character is matched b\d, non-numeric b\D. You may use \w, \s and \d within character classes.

The class of character recognized by \w (and hence not recognized by \W), can be augmented via theaddAlphaChars command.

C Expressions regulieres en environnement unix

Nous allons tenter de decrire rapidement l’implementation en environnement unix des expressions regulieres.Signalons tout d’abord que les caracteres suivants :

. + * [ ] - ^ $ { } ? ... \ / ( )

sont des metacaracteres : pour obtenir , par exemple, qu’un point soit interprete litteralement, il faut ecrire \..Decrivons quelques uns de ces metacaracteres :

. n’importe quel caractere, sauf le saut de ligne \n

[...] (classe de caracteres) Par exemple, [0123456789] signifie tout mot compose de un seul chiffre decimal,on peut ecrire plus rapidement [0-9]. ainsi [A-Za-z] signifie tout mot compose de une seule lettre.

[^...] (complementaire d’une classe de caracteres) Par exemple, [^0123456789] ou [^0-9] signifie tout motcompose de un caractere, a condition que celui-ci ne soit pas un chiffre decimal.

\ caractere d’echappement pour les metacaracteres (cf. ci-dessus).

* signifie zero, une ou plusieurs occurences de l’expression reguliere precedente, ainsi [0-9]* accepte-t-elle 14,7, 1789, le mot vide mais pas 1.789.

+ signifie une ou plusieurs occurences de l’expression reguliere precedente, ainsi [0-9]+ accepte-t-elle 14, 7,1789, mais pas le mot vide ni 1.789.

? signifie zero ou une occurence de l’expression reguliere precedente, ainsi [0-9]? accepte-t-elle 7 ou le mot vide,mais pas 14 ni 1.789.

(...) permet de regrouper plusieurs expressions regulieres en une seule, ainsi abc? accepte-elle les seuls motsab et abc, tandis que a(bc)? accepte les seuls mots a et abc.

| permet de realiser une disjonction (ou) entre deux expressions, ainsi [0-9]+|[0-9]*\,[0-9]+ accepte-t-elled’une part les suites de un ou plusieurs chiffres, d’autre part les suites de zero, un ou plusieurs chiffressuivies d’une virgule suivies d’une suite de un ou plusieurs chiffres.

A titre d’exemple, le lecteur verifiera que l’expression reguliere suivante (dans laquelle on a ajoute des espacespour faciliter la lecture) :

Page 26: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 26

[-+]? ( ([0-9]+ )| ([0-9]*\,[0-9]+ ) ([eE][-+]?[0-9]+)? )

decrit la notation dite scientifique des nombres decimaux, la partie ≪ exponentielle ≫ etant optionnelle.Voici une situation courante en programmation : vous avez ecrit un programme en C++, mais en faisant

les commentaires a la mode C++ (depuis \\ jusqu’a la fin de la ligne) que vous decidez de transformer encommentaires a la mode C (entre \* et *\). Il suffit pour cela, a l’aide d’un langage de macrocommandes telque perl ou tcl de remplacer dans tout le fichier les //(.*) par des /* \1 */, sachant que \1 signifie ≪ lecontenu du couple de parentheses dans la chaıne de caracteres reperee par //(.*) ≫.

D Une calculatrice en Lex et Yacc

D.1 Situation

Dans le cadre d’un projet de synthese realise en mars – avril 1996, il etait demande a des etudiants 32 derealiser une ebauche de compilateur Pascal. Nous presentons ici une (toute petite) partie de leur travail.

Il s’agissait de construire un programme (en langage C) qui accepte en entree une expression algebrique entrenombre decimaux, et qui renvoie un message d’erreur si cette expression est syntaxiquement incorrecte, et quirenvoie la valeur de cette expression sinon, cette valeur etant calculee en respectant les priorites habituellesen mathematiques ou dans les langages de programmation courants – comme Pascal. Ainsi, l’expression 1 +17, 89+∗10 devait etre signalee comme incorrecte, par contre 14∗−7+17, 89/100∗ (−3+13) devait etre evalueecomme −19, 211...

D.2 Realisation

Ce projet a ete realise sous environnement AIX (version ibm de unix systeme V) a l’aide des outils Lex etYacc.

Le travail se decompose en trois etapes :– on ecrit en Lex un analyseur lexical qui decompose le fichier d’entree – c’est-a-dire ici l’expression

arithmetique a evaluer – en elements (tokens), on remarquera l’usage d’expressions regulieres. Ici, le seultoken utilise est NOMBRE, mais dans un ≪ vrai ≫ compilateur, on utiliserait des tokens IDENTIFICATEUR,INSTRUCTION...

– cette decomposition en tokens etant realisee, on donne en Yacc les regles de grammaire ainsi que lesinstructions a executer losque l’une de ces regles est utilisee

– il reste a compiler ces deux programmes pour obtenir un programme C qui une fois qu’il sera lui-memecompile, fera le travail demande !

D.3 calc.l – Le programme Lex

%{

/********************************************************

* Analyseur Lexical de la calculatrice *

********************************************************/

#include "y.tab.h"

%}

%%

(([0-9]+)|([0-9]*\,[0-9]+)) { yylval.dval = atof(yytext);

return NOMBRE; } ;/* entiers ou flottants */

[ \t] ; /* ignore les espaces */

\n return 0; /* fin de fichier logique */

. return yytext[0]; /* on renvoie le reste */

%%

32. Ces etudiants – Sylvie Ansart, Nicolas Bredeche, Cedric Caron, Cedric Lesperres, Alexandre Mazel, Stephane Petitet Philippe Regnauld – ont travaille sous la direction de Mikal Ziane et de Max Chlebowski. Nous tenons a remercier les ditsetudiants d’avoir bien voulu realiser ces petits programmes afin de donner une illustration de ce cours de theorie des langages.

Page 27: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 27

D.4 calc.y – Le programme Yacc

%{

/* Analyseur syntaxique de la calculatrice implicite */

#include <stdio.h>

%}

%union { double dval;} /* ?? union pour utiliser un float */

%token <dval> NOMBRE /* le token NOMBRE est dval (float)*/

%nonassoc UNAIRE /* gestion des signes unaires -/+ */

%type <dval> expression /* les expressions composantes */

%type <dval> terme /* les termes des expressions */

%type <dval> facteur

%%

expression:

expression ’+’ terme { $$ = $1 + $3;}

| expression ’-’ terme { $$ = $1 - $3;}

| terme

;

terme:

terme ’*’ facteur { $$ = $1 * $3; }

| terme ’/’ facteur {

if ($3 == 0)

{ yyerror("division par zero");

return(1);

}

else $$ = $1 / $3; }

| facteur

;

facteur:

’(’ expression ’)’ {$$ = $2;}

| ’-’ facteur { $$ = -$2; }

| ’+’ facteur { $$ = $2; }

| NOMBRE

;

%%

main()

{

int res;

do

{ res = yyparse(); }

while(!res);

}

Page 28: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

Theorie des langages 28

D.5 Compilations

Il reste a compiler ces fichiers, ce qui se fait en plusieurs etapes :

>lex calc.l

>yacc -d calc.y

>cc -c lex.yy.c y.tab.c

>cc -o ako lex.yy.o y.tab.o -ly -ll

ce qui peut se lire comme suit :– par la premiere ligne, on compile dans lex le fichier calc.l et on obtient le fichier lex.yy.c decrivant notre

analyseur lexical en langage C (un utilisateur patient qui lirait ce fichier y verrait les tables de transitiondes automates fabriques par lex pour reconnaıtre les expressions regulieres donnees dans calc.l),

– par la deuxieme ligne, on compile dans yacc le fichier calc.y, on obtient les fichiers y.tab.c et y.tab.hcorrespondants (en langage C, toujours)

– par les deux dernieres lignes, on compile les differents fichiers en les liant a la librairie lex.On obtient enfin un executable ako qu’il suffit d’invoquer pour faire ses petits calculs... Cette facon de

proceder peut paraıtre lourde, mais le code (c’est-a-dire les deux fichiers calc.l et calc.y ci-dessus) est en faitextremement court, ce qui limite beaucoup le temps de mise au point.

Page 29: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

exercices de theorie des langages 1

I.U.T. de Lille - Departement InformatiqueMathematiques

Exercices de theorie des langages

version du 5 decembre 2008

Exercice 1 - Quelques operations simples entre langages.

Soient les langages Σ = {a, b, c}, L1 = {cab, ba} et L2 = {aa, ba, ε}.Decrire chacun des langages suivants :

L1 ∩ L2, L1 ∪ L2, L1 \ L2, L2 \ L1, L1 · L2, L2 · L1,

L12, L22, L2∗, L2+, Σ∗.

Exercice 2 - Exercice simple.

1 - Donner des exemples de langages finis.

2 - Soit L un langage... c’est-a-dire un ensemble de mots. On rappelle la definition inductive suivante :

L0 = {ε} et pour n ≥ 0, Ln+1 = LLn.

Soit Σ un alphabet, autrement dit, Σ est un langage dont chaque mot est de longueur 1. Montrer par recurrenceque Σn est l’ensemble des mots de longueur n construits sur Σ. Rappeler comment Σ∗ et Σ+ peuvent etreecrits comme reunion de certains Σn.

3 - 3.1 - Soit le langage L = {a}.Quel est le nombre de mots du langage L10 ? du langage Li ? Quel est le nombre de mots du langage⋃

1≤i≤10Li ou

⋃designe l’union des langages? De meme, determiner le nombre de mots de

⋃0≤i≤n Li,

puis le nombre de mots de⋃

1≤i≤n Li.

3.2 - Repondre aux memes questions pour L = {ε, a}.

3.3 - Idem pour L = {a, aa}.

3.4 - Idem pour L = {b, aa}.

Exercice 3 - Intersection, concatenation.

Soit l’alphabet Σ = {a, b} et soient les langages :

L1 = {anbp : n, p ∈ N} L2 = {anbn : n ∈ N}

etL3 = {an : n ∈ N} = a∗ L4 = {bn : n ∈ N} = b∗

On rappelle que, par convention, on pose a0 = b0 = ε.

1 - Donner des mots de chacun des langages.

2 - Determiner l’intersection L1 ∩ L2.

3 - Determiner les mots de L1 qui ne sont pas dans L3 puis ceux de L2 qui ne sont pas dans L4 (en d’autrestermes, determiner L1 \ L3 et L2 \ L4).

4 - Pourquoi peut-on ecrire que L1 = L3 · L4, c’est-a-dire que {anbp : n, p ∈ N} = a∗b∗ ?Peut-on aussi ecrire que L2 – c’est-a-dire {anbn : n ∈ N} egale aussi a∗b∗ ?

Exercice 4 - Exemples de langages.

1 - Decrire le langage dont les mots sont les elements de N (plus precisement, on demande de donner uneexpression reguliere du langage des ecritures en base dix d’entiers naturels).

2 - Decrire le langage dont les mots sont les elements de Z.

3 - Soit B = {1, 2, 3, 4, 5, 6, 7, 8, 9} et A = {0} ∪ B deux alphabets.

3.1 - Quel est le langage B · A∗ · {0} ∪ {0} ?

3.2 - Ecrire le langage des multiples entiers naturels de 5, puis celui des entiers naturels strictementinferieurs a 1000.

Page 30: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

exercices de theorie des langages 2

Exercice 5 - Quelques expressions regulieres.

Soit l’alphabet Σ = {a, b}. Montrer les resultats suivants :

1 - Σ∗ = Σ∗Σ∗,

2 - Σ∗ = Σ∗ {ab}Σ∗ ∪ b∗a∗,

3 - Σ∗ = (a∗ ∪ {b})∗,

4 - Σ∗ = (a∗ ∪ b∗)∗,

5 - Σ∗ = (a∗b∗)∗,

6 - (ab)∗a = a(ba)∗,

7 - ε∗ = {ε} (que vaut ∅∗ ?),

8 - b∗ ∪ ab∗ = {ε, a} b∗,

9 - (a∗)∗ = a∗,

10 - ({aa} ∪ (ab)∗)∗ 6= {a, ab}∗,

11 - Σ∗ 6= a∗b∗.

Exercice 6 - Quelques expressions regulieres.

Soit l’alphabet Σ = {a, b, c}. Pour chacun des langages suivants, proposer une expression reguliere :

1 - Langage des mots sur Σ commencant par a,

2 - Langage des mots sur Σ commencant et se terminant par a,

3 - Langage des mots sur Σ commencant et se terminant par la meme lettre,

4 - Langage des mots sur Σ commencant et se terminant par des lettres distinctes,

5 - Langage des mots sur Σ contenant au moins un a,

6 - Langage des mots sur Σ contenant exactement un a,

7 - Langage des mots sur Σ ne contenant aucun a,

8 - Langage des mots sur Σ contenant un nombre pair de a,

9 - Langage des mots sur Σ contenant un nombre impair de a,

Exercice 7 - Concatenation.

1 - Soit Σ un alphabet, ¡¡·¿¿ l’operation de concatenation definie sur Σ∗, et (Σ∗, ·) le monoıde libre (Unmonoıde est un ensemble muni d’une loi interne et associative, un monoıde libre est un monoıde admettantun element neutre) des mots sur Σ.

1.1 - Rappeler pourquoi (Σ∗, ·) est un monoıde libre.

1.2 - Montrer que (N, +) est un monoıde libre.

1.3 - Montrer que l’application ¡¡longueur¿¿ est un homomorphisme de monoıde libre. Cette applicationest definie par :

|. . .| : Σ∗ → N, m 7→ |m|

ou |m| designe la longueur du mot m, c’est-a-dire le nombre de lettres de m.

2 - A quelle condition sur Σ l’operation de concatenation est- elle commutative dans Σ∗ ?

3 - Montrer que la proposition suivante est fausse : (quels que soient L1, L2, L3 trois langages construits surΣ, on a : L1 · L2 = L1 · L3 ⇒ L2 = L3).

4 - Montrer en revanche que la proposition suivante est vraie : (quels que soient m1, m2, m3 trois mots deΣ∗, on a : m1 · m2 = m1 · m3 ⇒ m2 = m3).

Exercice 8 - Equations entre langages.

Soit Σ un alphabet et soient B, C, D et L des langages sur Σ.

1 - Montrer que B · (C ∪ D) = (B · C) ∪ (B · D).

2 - Montrer que B · (C ∩ D) ⊆ (B · C) ∩ (B · D).

Page 31: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

exercices de theorie des langages 3

3 - Soit B = {a, b}∗. Si C = {ε, a} et si D = {ε, b}, est-il exact que BC = BD ? A-t-on (BC = BD) ⇒ (C =D) ?

4 - Que peut-on dire de {ε}·L ? De ({ε}∪L)∗ ? De (L∗)∗ ? Et de {ε}∪(L ·L∗ ? Est-il vrai que L+ = L∗\{ε} ?

Exercice 9 - Quelques AFdc sur l’alphabet Σ = {a, l, m, n}.On considere les automates finis representes par :

Aut1

1 2

3

l | m | n

aa l | m | n

a | l | m | n

Aut2

1 2

3

l | m | n

aa l | m | n

a | l | m | n

Aut3

1 2

3

l | m | n

aa l | m | n

a | l | m | n

Aut4

1 2

3

l | m | n

aa l | m | n

a | l | m | n

Aut5

1 2

3

l | m | n

aa l | m | n

a | l | m | n

Aut6

1 2

3

l | m | n

aa l | m | n

a | l | m | n

1 - On considere Aut1.

1.1 - Comment sont lus les mots : lama, maman, laamll, ε? Quels sont ceux qui sont acceptes ?

1.2 - Memes questions pour Aut1bis :

1 2

l | m | n

a

(attention, il s’agit cette fois d’un AF deterministe mais non complet).

2 - Quel est le langage reconnu par Aut1 et par Aut1bis? Essayez de justifier votre reponse...

3 - Pour chacun des 5 automates Aut2 a Aut6, donner une expression (si possible reguliere) du langage qu’ilreconnaıt.

4 - Proposer un automate qui reconnaıt le meme langage que Aut3, mais qui soit plus simple.Meme question pour Aut4.

Exercice 10 - Constructions d’automates sur Σ = {a, b, c}. Proposer des automates (AFdc, puis, si c’estplus simple, AFd) reconnaissant chacun des langages suivants :Σ∗, {ε}, Σ, Σ2, langage des mots de longueur au plus 2, langage des mots de longueur 2 ou plus, ∅, langagedes mots commencant par a, langage des mots sans voyelle, langage des mots ne contenant pas deux lettresdifferentes, langage des mots ne contenant pas deux fois la meme lettre.Pour chacun de ces langages, proposer une expression reguliere.

Exercice 11 - Un AFnd.

Soit Σ = {a, b, c}, on desire construire un AF, le plus simple possible, qui reconnaisse le langage des mots surΣ qui contiennent le mot bac et se terminent par a.

1 - Donner une expression reguliere de ce langage.

2 - Dessiner un AF, le plus simple possible, qui reconnaisse ce langage.

3 - Indiquer comment votre AF lit chacun des mots suivants (plus precisement, on demande d’indiquer toutes

les lectures de chaque mot) :

abaca, abacb, abacbaca, bcaa, bcab, ε.

4 - Donner la ¡¡definition mathematique¿¿ complete de votre AF.

5 - Par le procede decrit en cours, transformer votre AF en un AFDC qui reconnaıt le meme langage.

6 - Indiquer comment votre AFDC lit chacun des mots proposes a la question 11.3.

Page 32: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

exercices de theorie des langages 4

Exercice 12 - Un autre AFnd.

Reprendre les questions de l’exercice 11 pour le langage sur Σ = {a, b, c} des mots qui contiennent le mot bacou se terminent par a.

Exercice 13 - Des automates finis simples.

Soit Σ = {a, b} un alphabet et soient les langages suivants : L1 = {an : n ≥ 0}, L2 = {bn : n ≥ 0} , L3 = L1L2.

1 - Determiner un automate fini dont le langage soit L1.

2 - Le langage L3 est-il le langage d’un automate fini ? Si le reponse est oui, construire un tel automate.

3 - Construire une grammaire dont le langage soit L3.

Exercice 14 - Des automates finis simples.

Soit Σ = {a, b, c} un alphabet. Determiner un automate fini associe aux langages suivants construits sur Σ :

1 - le langage L1 des mots contenant au moins la suite de 3 lettres abc,

2 - le langage L2 des mots contenant exactement 4 b,

3 - le langage L3 des mots commencant par (a ou c), et se terminant par b.

Exercice 15 - Transformations d’AFnd en AFdc.

1 - Soit l’automate ({a, b} , {0, 1, 2} , {0} , {2} , Θ) ou Θ est donnee par sa table de transition :

a b

− 0 0 | 1 11 22 + 0 | 1 | 2 1

Pourquoi cet AF n’est-il pas deterministe complet ? Construire un AFdc qui reconnaisse le meme langage.

2 - Memes questions pour l’automate ({a, b} , {0, 1, 2} , {0, 1, 2} , {2} , Θ).

3 - Memes questions pour l’automate ({a, b} , {0, 1, 2} , ∅, {2} , Θ).

4 - Memes questions pour l’automate ({a, b} , {0, 1, 2} , {0} , {0, 1, 2} , Θ).

Exercice 16 - Transformations d’AFnd en AFdc.

Pour chacun des deux automates representes ci-dessous, construire un AFdc qui reconnaisse la meme langage :

4 5

1 2 3

b

a

bb

b

b

a | b a a

a

1 4 7

2

3

5

6

a

a

a

b

c

a

c b

c

Exercice 17 - Palindromes ¡¡Esope reste ici et se repose¿¿Soit Σ un alphabet et L un langage sur Σ. On definit sur Σ∗ l’operation unaire d’¡¡image miroir¿¿ notee . . .µ :

∀m ∈ Σ∗ :

((m = a1a2 . . . an−1an et ∀i ∈ {1, 2 . . . n} : ai ∈ Σ) ⇒ mµ = anan−1 . . . a2a1) .

On pose aussi εµ = ε, le mot mµ est donc appele ¡¡image miroir¿¿ du mot m. Un mot de Σ∗ tel que mµ = mest appele palindrome (Par exemple la suite de symboles ¡¡Esope reste ici et se repose¿¿ est un palindrome, sidu moins on ne tient pas compte des espaces).On definit le langage miroir de L par

Lµ = {n ∈ Σ∗ : ∃m ∈ L, n = mµ} = {mµ : m ∈ L} .

Parmi les proprietes suivantes, indiquer celles qui sont vraies :

Page 33: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

exercices de theorie des langages 5

1 - Quel que soit le mot m ∈ L : mmµ = (mmµ)µ,

2 - quel que soit le langage L construit sur l’alphabet Σ : L = (Lµ)µ,

3 - quel que soit x appartenant au langage L ∩ Lµ, on a x = xµ,

4 - quels que soient les deux langages L1 et L2 construits sur Σ, (L1L2)µ = (L2µ)(L1µ),

5 - quel que soit le langage L construit sur Σ, quel que soit n de N : (Ln)µ = (Lµ)n,

6 - quels que soient m ∈ L et n ∈ L, on a : (nmn = (nmn)µ) ⇒ (m = mµ).

Exercice 18 - Langage impair.

On considere dans tout l’exercice l’alphabet Σ = {a, b}. On note impair l’ensemble des mots comportant unnombre impair d’occurrences de la lettre a. Soient A1, A2 les automates finis donnes par les schemas suivants :

A1

1 2a

a

b bA2

1 2 3a

a

a

b b b

1 - Soit W le langage b∗ab∗. Construire un automate fini A3 tel que L(A3) = W .

2 - Construire 5 mots de L(A1). Combien ces mots comportent-ils d’occurrences de la lettre a ? Demontrerque L(A1) est inclus dans impair.

3 - Demontrer, par recurrence sur le nombre d’occurrences de la lettre a, que impair est inclus dans L(A1).Deduire des questions precedentes que : impair = L(A1).

4 - Comparer les mots de L(A2) avec les mots de L(A1). En deduire un caracterisation de L(A2).

5 - Soit la grammaire G = (ΣT , ΣNT , S, Π) suivante : ΣNT = {S, F}, ΣT = {a, b}, Pi est l’ensemble desregles sont :

S −→ bS | aF

F −→ bF | aS | ε.

Construire 5 mots de L(G). A-t-on L(G) = L(A1) ou L(G) = L(A2) ? Presenter la demontration de votrereponse.

6 - Comparer L(A3) avec L(A1) et L(A2).

Exercice 19 - Automates finis simples.

Determiner les langages de :

1 2a, b

a | b

1

a | b

1 2a | b

a | b

1 2 3a | b a | b

a | b

Exercice 20 - Automates finis. On traitera les deux questions independamment l’une de l’autre...

1 - Soit A l’automate fini ci-dessous :

Page 34: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

exercices de theorie des langages 6

1

2

3

4

a

b

a

bba

a | b

Demontrer que : L(A) = {a, b}∗ {aa, bb} {a, b}∗.

2 - Determiner un AF dont le langage soit {a, b}∗ {aa, bb} {a, b}∗. L’automate fini sera deterministe com-plet, bien sur, mais rien n’interdit de passer d’abord par un automate fini non deterministe, de le rendredeterministe, et enfin de simplifier l’AFdc obtenu.

Exercice 21 - Automate fini simple.

Determiner le langage de chacun des automates suivants :

1 2 3 4

5

b a a

b b

aa | b

a | b

1 2b

a

a b

Exercice 22 - Automate fini simple.

Soit l’automate :

1 2

34

b

b

aa

b

b

a a

Caracteriser son langage.

Exercice 23 - Automate fini simple.

Construire un automate fini dont le langage soit Σ∗aaΣ∗, ou Σ = {a, b}.

Exercice 24 - Des langages finis.

Soit l’alphabet Σ = {a, b, c}, on pose Σ = {a, b}, puis L1 = Σ3cΣΣ et L2 = Σ3cΣ.

1 - Montrer que L1 ⊆ L2.

2 - A-t-on L2 ⊆ L1 ?

3 - Construire un automate fini A1 dont le langage soit L1.

4 - Construire une grammaire G1 dont le langage soit L1.

5 - Construire une grammaire G2 et un un automate fini A2 dont le langage soit L2.

Exercice 25 - Deux grammaires simples.

Soient G1 et G2 les deux grammaires suivantes :

G1 = ({a, b, c} , {S} , S, {S −→ aSb | c})

Page 35: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

exercices de theorie des langages 7

et :

G2 = ({a, b, c, d, e} , {S, X} , S, {S −→ aSb | X | c, X −→ eXd | ε})

1 - Donner tous les mots de longueur inferieure ou egale a 5 derives par la grammaire G1.

2 - Donner tous les mots de longueur inferieure ou egale a 5 derives par la grammaire G2.

3 - Demontrer que L(G1) = {ancbn : n ∈ N}.

4 - Quel est le langage L(G2) ?

5 - Montrer que L(G1) ⊆ L(G2).

Exercice 26 - Types de grammaire, types de langage.

Soit la grammaire G = (ΣT , ΣNT , S, Π) ou :ΣT = {a, b, c}, ΣNT = {S, X}, Π = {S −→ XabX, X −→ aX | bX | cX | ε}.

1 - Construire l’arbre de derivation du mot (ab)2(cb)2.

2 - Le mot a4cb est-il derivable dans G ? Pourquoi ?

3 - 3.1 - Determiner le langage L(G).

3.2 - Ce langage est-il produit par un automate fini ? Pourquoi ?

3.3 - Determiner un grammaire dont le langage L(G), et dont les regles sont du type suivant : X −→ mou X −→ mY avec m ∈ Σ∗

T et X, Y ∈ ΣNT (En d’autres termes, on cherche une grammaire de type 3 – ougrammaire reguliere – equivalente a G...).

3.4 - Quels sont les types de grammaires envisagees dans cet exercice ? Quel est le type du langageconsidere ?

4 - Determiner un automate fini A tel que L(A) = L(G).

Exercice 27 - Quatre grammaires.

Soient les quatre grammaires :

G1 = ({a, b} , {S, X, Y } , S, {S −→ XabaY, X −→ bX | b, Y −→ aY | bY | ε}),

G2 = ({a, b} , {S} , S, {S −→ aS | bS | a | b}),

G3 = ({a, b} , {S, X, Y } , S, {S −→ X | Y, X −→ ε, Y −→ aY | bY | a | b}),

G4 = ({a} , {S} , S, {S −→ aS | ε})

et soient les quatre langages :

E1 = a∗ , E2 = {a, b}∗ , E3 = E2 \ {ε} , E4 = b∗(ba)2E2.

1 - Attribuer a chaque grammaire son langage.

2 - Les expressions proposees pour les langages sont-elles regulieres? Si non, proposer des expressions regu-lieres pour ces langages.

3 - Les grammaires proposees sont-elles regulieres? Si non, proposer des grammaires regulieres qui engendrentles memes langages.

Exercice 28 - Un langage simple.

Soit Σ = {a, b}. Soit L le langage des mots sur Σ dont la premiere et la derniere lettre sont distinctes.

1 - Construire un automate fini engendrant ce langage.

2 - Construire une grammaire engendrant ce langage.

3 - Donner une expresion reguliere de ce langage.

Exercice 29 - Un langage non regulier.

Demontrer qu’il n’existe pas d’automate fini dont le langage est L = {anbn : n ∈ N}.En quoi cela justifie-t-il qu’il n’existe aucune expression reguliere pour ce langage ? Justifier que, en revanche,L est algebrique.

Page 36: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

exercices de theorie des langages 8

Exercice 30 - Grammaires algebriques.

Donner le langage engendre par chacune des grammaires suivantes :

G1 = ({a, b, c} , {A, X} , X, {X −→ Ac | c, A −→ aAb | ab}),

G2 = ({a, b, c} , {A, B, C} , A, {A −→ aB | CB −→ aAb, C −→ cC | c}),

G3 = ({a, b} , {S, X} , S, {S −→ XaaXX −→ aX | bX | ε}),

G4 = ({a, b, c} , {S, B, C} , S, {S −→ aB | C | ε, B −→ aSb, C −→ cC | c}).

Exercice 31 - Grammaires algebriques.

Etudier les langages dont les regles de reecriture sont les suivantes (comme habituellement, les terminaux sonten minuscule et les non terminaux sont en majuscule, le symbole initial est toujours S).

G1 : G3 :

S −→ SX S −→ aS | bX

SX −→ BS X −→ bX | c

BS −→ ab G4 :

B −→ a S −→ aaS | a | b

X −→ c G5 :

G2 : S −→ aX

S −→ aaS | aa X −→ bS | a

Exercice 32 - Exercice simple sur les grammaires.

Determiner des grammaires G1 et G2 telles que L(G1) = {apbq : p ∈ N \ {0} , q ∈ N \ {0, 1, 2}} et L(G2) ={apbq : p ∈ N \ {0} , q ∈ N \ {0}}.

Exercice 33 - Equivalence de grammaires, ambiguıte.

Soit la grammaire G = (ΣT , ΣNT , S, Π), ou ΣT = {x, y}, ΣNT = {S} et ou Π = {S −→ xSy | xS | ε}.

1 - Determiner L(G).

2 - Montrer que le mot x2y peut etre obtenu de deux facons distinctes. On dit que G est ambigue.

3 - Soit alors la grammaire G1 = (ΣT , Σ′NT , S, Π′), ou Σ′

NT = {S, T } et ou

Π′ = {S −→ xSy | xT | ε, T −→ xT | ε} .

Montrer que L(G1) = L(G).

4 - Montrer qu’a tout mot de L(G1) correspond une derivation unique dans la grammaire G1. On aura doncconstruit une grammaire non ambigue G1 equivalente a la grammaire ambigue G.

Exercice 34 - Deux grammaires pour un meme langage.

1 - Soient les deux grammaires suivantes :

G1 = ({a, b} , {S} , S, {S −→ ab | ba | SS | aSb | bSa})

G2 = ({a, b} , {S, A, B} , S,

{S −→ aB | bA, A −→ a | aS | bAA, B −→ b | bS | aBB}).

Quelle est la longueur des mots les plus courts de L(G1) ? et de L(G2) ?

2 - Determiner L(G1).

3 - Montrer que L(G1) = L(G2).

Exercice 35 - Reduction de grammaires.

Soit la grammaire G1 = (ΣT , ΣNT , S, Π), ou ΣT = {a, b, c}, ΣNT = {S, A, B, C} et Π est la liste de regles :

S −→ aB | bc A −→ BAc | bSC | a

B −→ aSB | bBC C −→ SBc | aBC | ac.

Page 37: th´eorie des langages - LIFLguyomarc/pages_perso/Teachings_(fr)_files/...Th´eorie des langages 3 1 D´efinitions g´en´erales 1.1 Alphabet, lettres et mots D´efinition 1 Un alphabet

exercices de theorie des langages 9

1 - Simplifier G1 en supprimant le plus possible de regles inutiles, sans changer le langage. La nouvellegrammaire obtenue sera notee G2.

2 - Determiner L(G2).

3 - Determiner une grammaire G3 tres simple qui engendre L(G2).

4 - Determiner un automate fini produisant L(G1).

Exercice 36 - Langages miroirs.

Soit la grammaire G = (ΣT , ΣNT , S, Π), ou : ΣT = {a, b, c}, ΣNT = {S, B, C}, les regles sont :

S −→ aB | C , B −→ aAb , C −→ cC | c .

1 - Determiner L(G).

2 - De quel type est ce langage ?

3 - Determiner une grammaire G′ dont le langage L(G′) soit le langage miroir de L(G).

4 - De facon plus generale, si l’on connait G et L(G), comment construire une grammaire G′ dont le langageL(G′) soit le langage miroir de L(G) ?