Vous êtes sur la page 1sur 87

Université Paris-Sud

Licence d’Informatique

Informatique Théorique :

Théorie des Langages, Analyse Lexicale, Analyse Syntaxique

Jean-Pierre Jouannaud Professeur

Adresse de l’auteur :

LIX

École Polytechnique F-91128 Palaiseau CEDEX

URL : http://www.lix.polytechnique.fr/

ii

Table des matières

Table des matières

1 Introduction

2

2 Langages formels

 

3

3 Automates de mots finis

 

4

3.1 Automates déterministes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

3.2 Automates non déterministes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

5

 

Déterminisation d’un automate non-déterministe

.

.

.

.

.

.

.

.

.

.

.

6

3.3 Automates non déterministes avec transitions vides Élimination des transitions vides d’un automate

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

8

3.4 Minimisation d’un automate déterministe

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

9

3.4.1 Automate minimal

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

9

3.4.2 Calcul de l’automate minimal

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

11

3.5 Exercices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

4 Nettoyage des automates

 

18

4.1 Décision du vide

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

18

4.2 Décision de la finitude

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

4.3 Décision du plein

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

4.4 Exercices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

5 Propriétés de clôture des langages reconnaissables

 

21

5.1 Clôture Booléenne

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

5.2 Clôture par produits

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

22

5.3 Clôture par morphisme

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

5.4 Pompage des langages reconnaissables .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

6 Expressions rationnelles

 

25

6.1 Expressions rationnelles

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

6.2 Théorème de Kleene

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

6.3 Identités remarquables

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

6.4 Analyse lexicale avec l’outil LEX

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

6.4.1 Notion de token .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

6.4.2 Fichier de description LEX .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

6.4.3 Description des tokens

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

6.4.4 Règles de priorité .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

29

6.5 Exercices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

Table des matières

iii

7 Grammaires formelles

 

32

7.1 Grammaires

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

32

7.2 Langage engendré par une grammaire

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

33

7.3 Classification de Chomsky

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

 

7.3.1 Grammaires contextuelles

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

7.3.2 Grammaires hors-contexte

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

7.3.3 Grammaires régulières

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

34

7.4 Forme normale de Chomsky

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

35

7.5 Dérivations gauches et droites

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

36

7.6 Arbres syntaxiques

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

7.7

Exercices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

40

8 Automates à pile

 

41

8.1 Langages reconnaissables par automates à pile .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

8.2 Automates à pile et grammaires hors-contexte

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

8.3 Exercices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

44

9 Propriétés de clôture des langages algébriques

 

45

9.1 Vide et finitude des langages algébriques .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

9.2 Pompage des langage algébriques

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

 

9.2.1 Propriété de pompage des algébriques

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

9.2.2 Un peu de logique

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

9.3 Propriétés de clôture

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

47

 

Union, produit et étoile de

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

47

Intersection et

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

 

9.3.1 Substitution et homomorphisme

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

9.3.2 Homomorphisme inverse .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

49

9.3.3 Applications

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

49

9.4 Exercices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

49

10 Analyse syntaxique

 

50

10.1 Analyse syntaxique descendante

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

50

 

10.1.1 Analyse descendante non-déterministe .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

10.1.2 Analyse descendante déterministe

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

10.1.3 Automate d’analyse prédictive descendante

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

53

10.1.4 Condition de déterminisme .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

54

10.1.5 Factorisation des membres droits .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

54

10.2 Analyse syntaxique ascendante .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

55

 

10.2.1 Automate non-déterministe d’analyse ascendante

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

10.2.2 Déterminisation de l’analyse ascendante

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

57

10.2.3 Principes d’une analyse ascendante prédictive

 

.

.

.

.

.

.

.

.

.

.

.

57

 

Conditions de déterminisme

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

59

 

10.2.4 Automate SLR d’analyse ascendante .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

60

 

Variantes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

63

 

10.2.5 Génération d’analyseurs syntaxiques avec YACC

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

64

10.3 Exercices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

11 Syntaxe abstraite des langages

 

68

11.1 Grammaires abstraites

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

68

11.2 Arbres de syntaxe abstraite

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

69

11.3 Représentation des valeurs des tokens dans l’arbre .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

70

11.4 Calcul des arbres de syntaxe abstraite

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

70

iv

Table des matières

11.5 Codages des arbres de syntaxe abstraite

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

72

11.6 Exercices

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.