Languages and translators [ LINGI2132 ]
6.0 crédits ECTS
30.0 h + 30.0 h
2q
Enseignant(s) |
Schaus Pierre ;
|
Langue d'enseignement: |
Anglais
|
Lieu de l'activité |
Louvain-la-Neuve
|
Ressources en ligne |
> https://icampus.uclouvain.be/claroline/course/index.php?cid=ingi2132
|
Préalables |
-
Méthodes rigoureuses de conception de programmes (p.e. INGI1122)
-
langage de programmation de haut niveau, algorithmique et structures de données (p.e. SINF1121)
-
Logique et structures discrètes (p.e. INGI1101)
|
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 |
Les étudiants ayant suivi avec fruit ce cours seront capables de
-
expliquer de façon pratique la structure des compilateurs pour des langages algorithmiques
-
concevoir et implémenter un compilateur pour un langage pratique qui résout un problème à intérêt intrinsèque
-
montrer l'intérêt des techniques de compilation dans la résolution de problèmes dans d'autres domaines
Les étudiants auront développé des compétences méthodologiques et opérationnelles. En particulier, ils ont développé leur capacité à
-
traiter avec rigueur une problématique en justifiant et validant chaque étape d'un projet pour pouvoir s'appuyer sur celle-ci pour mettre en oeuvre la suivante
-
expliquer de façon pratique comment un code-source (Java) est finalement traduit en byte-code.
-
expliquer les mécanismes d'exécution du byte-code par une JVM
-
expliquer la gestion mémoire lors de l'exécution d'un programme
-
expliquer le fonctionnement des mécanismes de garbage collection
|
Modes d'évaluation des acquis des étudiants |
-
examen oral
-
3 assignements par groupe de 2
-
1 projet relatif aux DSL
Le projet et les assignements ne peuvent pas être repassés en deuxième session.
|
Méthodes d'enseignement |
-
Cours magistral
-
Séances d'exercices
-
Projet (conception et implémentation d'un compilateur)
|
Contenu |
-
Introduction
-
Langages formels
-
Grammaires Formelles de Chomsky
-
Langages et Expressions Régulières, Automates à Ensemble Fini d'États
-
Analyse Lexicale
-
Analyse syntaxique descendante : méthode générale
-
Analyse syntaxique descendante basée sur les grammaires LL(1)
-
Analyse syntaxique ascendante et relations de priorités
-
Scala et les spécificités du langage pour conduire des DSL
-
Quelques notions de programmations fonctionnelles relatives aux DSL (monads, etc.)
|
Bibliographie |
Supports du cours en ligne (site web du cours)
Ouvrage(s) recommandé(s) :
-
Introduction to Compiler Construction in a Java World, Bill Campbell, Swami Iyer, Bahar Akbal-Deliba' http://www.cs.umb.edu/j--/
-
Scala for the Impatient, Cay Horstmann, Addison-Wesley 2012
-
Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition, Martin Odersky , Lex Spoon, Bill Venners
|
Cycle et année d'étude |
> Master [120] : ingénieur civil en informatique
> Master [120] en sciences informatiques
> Master [60] en sciences informatiques
> Master [120] : ingénieur civil biomédical
|
Faculté ou entité en charge |
> INFO
|
<<< Page précédente
|