Langages de programmation et compilation 2016-2017
Jean-Christophe Filliâtre
Cours donné aux élèves de première année à
l'École Normale Supérieure.
- Cours le vendredi de 8:30 à 10:30 en salle
U ou V
- TDs le jeudi ou le vendredi, de 10h30 à 12h15 en salle INFO 4 NIR
avec Lélio Brun
- Évaluation : un examen + un projet
Cours
Note : Une copie des transparents sera
distribuée à chaque cours. Il est donc inutile d'imprimer les PDF
ci-dessous.
- Cours 1 (23 septembre 2016): Mise à niveau OCaml
- Cours 2 (30 septembre 2016): Aperçu de la compilation / Assembleur x86-64
- Cours 3 (7 octobre 2016): Syntaxe abstraite / Sémantique / Interpréteurs
- Cours 4 (14 octobre 2016): Typage
- Cours 5 (21 octobre 2016): Analyse lexicale
- pas de cours le vendredi 28 octobre 2016
- Cours 6 (4 novembre 2016): Analyse syntaxique 1/2
- pas de cours le vendredi 11 novembre 2016
- Cours 7 (18 novembre 2016): Analyse syntaxique 2/2
- Cours 8 (25 novembre 2016): mode de passage des paramètres
- Cours 9 (2 décembre 2016): Compilation des langages fonctionnels
- Cours 10 (9 décembre 2016): Compilation des langages objets
- Cours 11 (16 décembre 2016): Allocation mémoire
- Cours 12 (6 janvier 2017): Production de code efficace, partie 1
- Cours 13 (13 janvier 2017): Production de code efficace, partie 2
TD
- TD 1 :
Mise à niveau OCaml
- TD 2 :
Assembleur x86-64
- TD 3 :
Interprète mini-Python
- TD 4 :
Algorithme W
- TD 5 :
Construction d'automates déterministes à partir d'expressions régulières
- pas de TD le vendredi 28 octobre et le jeudi
3 novembre
- TD 6 :
Analyse descendante
- pas de TD le vendredi 11 novembre et le jeudi
17 novembre
- TD 7 :
Analyse syntaxique d'un petit langage
- TD 8 :
Aide au projet
- TD 9 :
Aide au projet
- TD 10 :
Production de code
- TD 11 :
GC stop & copy
- TD 12 :
Coloriage de graphe
Examen
L'examen aura lieu le vendredi 20 janvier
de 8h30 à 11h30 en salle U/V.
Les notes de cours manuscrites ou reprographiées sont les seuls
documents autorisés.
Archives :
janvier 2009
(corrigé) /
janvier 2010
(corrigé) /
janvier 2011
(corrigé) /
janvier 2012
(corrigé) /
janvier 2013
(corrigé) /
janvier 2014
(corrigé) /
janvier 2015
(corrigé) /
janvier 2016
(corrigé) /
janvier 2017
(corrigé)
Projet
Le projet est à rendre en deux fois : première partie pour le dimanche
11 décembre (avant 18:00), seconde partie pour le dimanche 15 janvier
(avant 18:00).
Sujet (version 3 - 29 décembre 2016)
Quelques tests sont fournis
(les télécharger
: tests-02-jan.tar.gz).
Ce script shell peut être utilisé pour
automatiser les tests, avec la syntaxe ./test -n
binaire-compilo où n vaut 1 (tests parseur), 2
(tests typage) ou 3 (tests production de code).
Un module OCaml est fourni pour construire du code x86-64 :
x86_64.ml
/ x86_64.mli /
documentation /
télécharger.
Libre à vous de le compléter si besoin.
Liens / Bibliographie
Outils
Cartes de référence
Ouvrages en rapport avec le cours
Ces trois ouvrages sont disponibles à la bibliothèque.
Le cours ci-dessus ne suit pas vraiment ces ouvrages.
Néanmoins, se sont de très bons ouvrages, conseillés pour aller plus loin.
For foreign students not yet fluent in French
- A tiny French-English dictionary
- a rough correspondence between the lectures and chapters from the
books above (which are in English):
| Lecture | Chapters
|
2 | Assembly | Bryant & O'Hallaron 3
|
3 | Semantics | Pierce 3-4-5
|
4 | Typing | Pierce 8-9-10 et 22
|
5 | Lexical analysis | Dragon 3
|
6-7 | Syntactic analysis | Dragon 4
|
11 | Memory allocation
| Bryant & O'Hallaron 9
|
Remerciements : merci à Christine Paulin, François Pottier et
Xavier Leroy pour leur aide dans la préparation de ce cours