6.00 crédits
30.0 h + 30.0 h
Q2
Enseignants
Laurent Nicolas;
Langue
d'enseignement
d'enseignement
Anglais
Thèmes abordés
- Méthodes d'analyse de langages "context-free", méthodes ascendantes et méthodes descendantes. Applications
- Générateurs d'analyseurs lexicaux et syntaxiques
- Sémantique statique et grammaires attribuées
- Méthode de définition de traduction du code source en code cible et génération du code cible
- Machine virtuelle et byte-code (JVM)
- Garbage Collection et gestion mémoire
- Domain Specific Languages (DSL)
Acquis
d'apprentissage
d'apprentissage
A la fin de cette unité d’enseignement, l’étudiant est capable de : | |
1 |
Eu égard au référentiel AA du programme « Master ingénieur civil en informatique », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :
|
Contenu
Le cours présente la théorie et la pratique de l'implémentation des langages de programmation, et de l'architecture des compilateurs. Nous balayerons les composants standards d'un compilateur, du front-end (analyse lexicale et syntactique) au back-end (émission de code machine, ou interpréteur) en passant par l'analyse statique et les systèmes de types. A terme, les étudiants seront capables de comprendre les tenants et les aboutissants des différentes méthodes d'implémentation de langage en usage aujourd'hui.
Au cours du quadrimestre, les étudiants seront amenés à implémenter leur propre langage de programmation.
Au cours du quadrimestre, les étudiants seront amenés à implémenter leur propre langage de programmation.
Méthodes d'enseignement
Le cours consiste d'une série de présentations pré-enregistrées, ainsi que de sessions de consolidation hebdomadaire ou bimensuelles où les étudiants ont l'occasion de poser leurs questions. Il y aura également des séances de travaux pratique afin de préparer les étudiants au projet.Au cours du quadrimestre, les étudiants devront réaliser le projet, qui consiste à étendre un interpreteur/compilateur pour un language de programmation basique avec de nouveaux paradigmes.
Modes d'évaluation
des acquis des étudiants
des acquis des étudiants
Le projet (fait par groupe de deux) compte pour deux tiers de la note du cours. Il consiste à étendre l'implémentation d'un language de programmation basique avec de nouveaux paradigmes. Un examen écrit compte pour le tiers restant.
En cas de seconde session, les étudiants sont libres de représenter le projet, l'examen, ou les deux.
En cas de seconde session, les étudiants sont libres de représenter le projet, l'examen, ou les deux.
Autres infos
Préalables :
- LINGI1122 : Méthodes rigoureuses de conception de programmes
- LSINF1121 : langage de programmation de haut niveau, algorithmique et structures de données
- LINGI1101 : Logique et structures discrètes
Ressources
en ligne
en ligne
Bibliographie
Ouvrage(s) recommandé(s) :
- Crafting Interpreters, Bob Nystrom (https://craftinginterpreters.com/)
- How To Create Pragmatic Lightweight Languages, Federico Tomassetti
- Introduction to Compiler Construction in a Java World, Bill Campbell, Swamilyer, Bahar Akbal-Deliba
- Modern Compiler Implementation in Jaav, Andrew W. Appel
Support de cours
- Supports du cours en ligne
Faculté ou entité
en charge
en charge
INFO