II.3516 Langages et compilation (2,5 crédits)
Prérequis : II.2404 Niveau : Avancé Responsable du module : Olivier Hermant Déroulement : 7 * 4 heures de cours-TP Nbre d'heures : 28 h Evaluation : Projet (40%) et Examen (60%)
Contexte
Les langages de programmation sont les fondements qui permettent aux programmeurs de contrôler la machine et de lui faire résoudre des problèmes plus ou moins complexes. Suivant le domaine d’application visé, le niveau d’abstraction et d’expressivité du langage varie, ce qui explique la grande diversité de langages disponibles sur le marché. Les compilateurs sont des logiciels qui, à partir d’un programme écrit dans un langage donné, génèrent le code directement exécutable par la machine. La construction d’un langage et de son compilateur associé est un processus complexe qui sera détaillé par la pratique dans ce module.
Objectifs
Compétences
Construction de langages, conception et implémentation d’interpréteurs et de compilateurs.
Connaissances
Concepts
- Analyseurs lexicaux
- Syntaxe et grammaire
- Arbres Abstraits de Syntaxe (AST)
- Inférence de types
- Algorithmes de compilation
- Structure des compilateurs (Visiteurs d’AST)
Savoir-faire
- Définition d’une grammaire BNF
- Utilisation de générateurs de parsers en Java (JFlex, CUP, ou équivalents)
- Implémentation de langages et de compilateurs
Approche pédagogique
Présentation des fondamentaux en cours avec des exercices et études de cas (environ 60% du temps). Implémentation sous forme d’un projets individuel ou en binôme.
Bibliographie
|