Languages and translators

lingi2132  2019-2020  Louvain-la-Neuve

Languages and translators
In view of the health context linked to the spread of the coronavirus, the methods of organisation and evaluation of the learning units could be adapted in different situations; these possible new methods have been - or will be - communicated by the teachers to the students.
6 credits
30.0 h + 30.0 h
Q2
Teacher(s)
Language
English
Main themes
  • 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)
Aims

At the end of this learning unit, the student is able to :

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
 

The contribution of this Teaching Unit to the development and command of the skills and learning outcomes of the programme(s) can be accessed at the end of this sheet, in the section entitled “Programmes/courses offering this Teaching Unit”.
Content
  • 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.)
Teaching methods
  • Cours magistral
  • Séances d'exercices
  • Projet (conception et implémentation d'un compilateur)
Evaluation methods
  • 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.
Other information
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
Bibliography
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
Faculty or entity


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

Title of the programme
Sigle
Credits
Prerequisites
Aims
Master [120] : ingénieur civil en informatique
6

Master [60] en sciences informatiques

Master [120] en sciences informatiques
6