<- Archives UCL - Programme d'études ->



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

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

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 :

  • INFO1.1-3
  • INFO2.2-4
  • INFO5.2, INFO5.4, INFO5.5
  • INFO6.1, INFO6.4

Eu égard au référentiel AA du programme « Master [120] en sciences informatiques », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :

  • SINF1.M2
  • SINF2.2-4
  • SINF5.2, SINF5.4, SINF5.5
  • SINF6.1, SINF6.4

Eu égard au référentiel AA du programme « Master [60] en sciences informatiques », ce cours contribue au développement, à l'acquisition et à l'évaluation des acquis d'apprentissage suivants :

  • 1SINF1.M2
  • 1SINF2.2-4
  • 1SINF5.2, 1SINF5.4, 1SINF5.5
  • 1SINF6.1, 1SINF6.4

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
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
Cycle et année
d'étude
> Master [120] en sciences informatiques
> Master [120] : ingénieur civil biomédical
> Master [60] en sciences informatiques
> Master [120] : ingénieur civil en informatique
Faculté ou entité
en charge
> INFO


<<< Page précédente