Languages and translators

LINGI2132  2019-2020  Louvain-la-Neuve

Languages and translators
6.0 crédits
30.0 h + 30.0 h
2q

Enseignants
Langue
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

  • 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 :

    • 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

La contribution de cette UE au développement et à la maîtrise des compétences et acquis du (des) programme(s) est accessible à la fin de cette fiche, dans la partie « Programmes/formations proposant cette unité d’enseignement (UE) ».

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)
  • Scala et les spécificités du langage pour conduire des DSL
  • Quelques notions de programmations fonctionnelles relatives aux DSL (monads, etc.)
Méthodes d'enseignement
  • Cours magistral
  • Séances d'exercices
  • Projet (conception et implémentation d'un compilateur)
Modes d'évaluation
des acquis des étudiants
  • examen écrit
  • 3 assignements par groupe de 2
  • 1 projet relatif aux DSL

Le projet et les assignements valent pour 40% de la note et ne peuvent pas être repassés en deuxième session.

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
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
Faculté ou entité
en charge


Programmes / formations proposant cette unité d'enseignement (UE)

Intitulé du programme
Sigle
Crédits
Prérequis
Acquis
d'apprentissage
Master [120] : ingénieur civil en informatique
6
-

Master [120] en sciences informatiques
6
-

Master [60] en sciences informatiques
6
-