ISS8BB - Advanced Compilation

Advanced Compilation and Semantics

Responsable : Guillaume BONFANTE, Maître de Conférences

Guillaume.Bonfante@univ-lorraine.fr

Durée du module : 21 heures

Crédits ECTS : 2

Objectif général : appréhender les notions de sémantiques des langages de programmation

Syllabus : Sémantique

Contenu

  • sémantique opérationnelle

  • sémantique axiomatique, invariants de boucle

  • notion d'arbre de syntaxe abstraite

  • transformation de code

  • compilation

Support

Nous utilisons un livre comme support de cours :

  • Compilateurs, principes, techniques et outils

        • A. Aho, R.Sethi, J.Ullman

Programme

  1. Sémantique opérationnelle

    • Notions abordées : mini-C, un langage à boucle, sémantique opérationnelle

    • TD : programmation en mini-C

  2. Etude du langage Mini-C

    • Notions abordées : équivalence de langages de programmation, complétude pour la machine de Turing, boucle for

    • TD : compilation de la récursion primitive vers mini-C

  3. Sémantique axiomatique

    • Notions abordées : chaîne de compilation, arbre de syntaxe abstraite, conception générale d'un compilateur

    • TD : mise en oeuvre de l'analyse lexicale

  4. Conception de grammaire pour un langage de programmation

    • Notions abordées : langage, grammaire

    • TD : construction de l'arbre de syntaxe abstraite

  5. Compilation

    • Notions abordées : X86, modèle de la mémoire, instructions, transformation de l'arbre de syntaxe abstraite

    • TD : génération de code X86

  6. Suivi de projet

    • Extension du langage mini-C

  7. Evaluation finale

    • Présentation générale

    • et des sous-projets par groupe

Niveau requis

Une aisance en programmation est nécessaire : maîtrises des notions de collection, de généricité, d'héritage, de classe, d'objets

Niveau à atteindre

  • Connaitre la notion de sémantique opérationnelle

  • Comprendre la chaîne de compilation

  • Être capable de définir une syntaxe, et le mécanisme d'analyse

  • Être capable de construire un compilateur

Modalité d'évaluation

  • Contrôle continu en séance de TD

  • Évaluation par groupe de projet à la fin du semestre