Ecole
Polytechnique Universitaire de Marseille
Département
Génie Industriel et Informatique
3 ième année
1998-1999
TITRE DU COURS : THEORIE DES
LANGAGES FORMELS ET COMPILATION
NOM DE L'INTERVENANT : Bernard ESPINASSE
OBJECTIFS VISES PAR LE COURS :
Les microprocesseurs disposent généralement d'un jeu d'instructions très
sommaire, peu convivial et qui varie d'un processeur à l'autre. Afin de
fournir à l'utilisateur de systèmes informatiques des formalismes universels,
expressifs et concis, de nombreux langages de programmation ont été créés.
L'objet de la théorie des langages est de les définir. La compilation, pour
sa part, à pour objet de transformer les programmes écrits dans ces langages
en code machine. L'objectif de ce cours est de fournir au futur ingénieur les
connaissances conceptuelles qui lui permettront de mieux comprendre les
langages informatiques ainsi que leur compilation.
PREREQUIS : Eléments d'algèbre.
OUVRAGES DE REFERENCE
- M. GROSS, A.LENTIN, "Notions sur les grammaires formelles",
Gauthier-Villards, Paris, 1967.
- A. AHO, R.SETHI, J. ULLMAN, "Compilateurs : principes, techniques et
outils", InterEditions, 1993.
PROGRAMME (séances de 2 heures)
Séance 1 : Théorie des mots
• Présentation générale du cours
• Cadre dans lequel se situe la théorie des langages (définitions).
• Structure de monoïde libre : cas des chaînes de caractères munies de la
concaténation
Lecture recommandée : Livre 1, chapitre 1.
Séance 2 : Calcul sur les mots
• Calcul associatif construit sur la congruence et l'équivalence de Thue
• Problème des mots et sa résolution
Lecture recommandée : Livre 1, chapitre 1.
Séance 3 : Les systèmes combinatoires (systèmes de
réécriture)
• Systèmes combinatoires dans le monoïde libre
• Notions de production
• Schéma de production
• Types de production : Semi-Thueiennes, normales et antinormales.
• Definition et propriétés des systèmes combinatoires (caractère
monogénique, l'ambiguïté d'une démonstration, ...)
Lecture recommandée : Livre 1, chapitre 3.
Auto-apprentissage 1
Étudier livre 1, chapitre 4 : Machine de Turing.
Séance 4 : Introduction aux grammaires et aux langages
formels
• Notion de langage, en lien avec celle d'algorithme devant être effectués
par des machines :
• Syntaxe et sémantique d'un langage
• Notion de grammaire
• Notion de dérivation dans une grammaire
• Langage de Backus pour l'écriture des grammaires des langages de
programmation.
Lecture recommandée : Livre 1, chapitre 7 (cf. aussi livre 3, chapitre
2.7)
Séance 5 : Grammaires et langages de Chomsky (C-grammaires et
C-langages)
• Différentes classes de grammaires selon leur capacité descriptive
• Classification de Chomsky
• Grammaires régulières et grammaires hors contexte
• Grammaires ambigues
• Opérations ensemblistes et symboliques sur les langages
• Expressions régulières : definition et propriétés
Lecture recommandée : Livre 1, chapitre 7 (cf. aussi livre 3, chapitre
2.7)
Séance 6 : Les automates à états finis
• Introduction aux automates
• Automates à états finis
• Langage reconnu (grammaires régulières)
• Caractère déterministe ou non déterministe
Lecture recommandée : Livre 1, chapitre 10 (cf. aussi livre 4, chapitre
4)
Séance 7 : Les automates à états finis
• Passage d'un automate non déterministe à un automate déterministe
• Passage d'une grammaire régulière à un automate à états fini
Lecture recommandée : Livre 1, chapitre 10 (cf. aussi livre 4, chapitre
6)
Séance 8 : Les automates à pile
• Langage reconnu (grammaires hors contexte)
• Caractère déterministe ou non déterministe
• Passage d'une grammaire hors contexte à un automate à pile
Lecture recommandée : Livre 1, chapitre 10 (cf. aussi livre 4, chapitre
10)
Auto-apprentissage 2
Étudier livre 2, chapitre 2 : Un compilateur simple en une passe.
Séance 9 : Introduction à la compilation
• Notions de traducteur, interpréteur et compilateur
• Architecture et grandes fonctions des compilateurs :
• Analyse lexicographique
• Analyse syntaxique
• Génération et optimisation du code
Lecture recommandée : Livre 2, chapitre 1.
Séance 10 : Analyse syntaxique d'un compilateur
• Méthodes générales :
• Méthode générale descendante
• Méthode générale montante
• Autres méthodes
Lecture recommandée : Livre 2, Chapitre 3.
Examen sans document le ....
BIBLIOGRAPHIE COMPLEMENTAIRE
- Cl.BENZAKEN, "Systèmes formels : Introduction à la logique et à la
théorie des langages", Masson éditeur, 1991.
- J-M. AUTEBERT, "Théorie des langages et des automates", Masson,
1994.