cursus.
Licence 3 · 6 cours · 11 leçons · 60 h

Compilation

Aller du texte source au code exécutable, phase par phase : analyses lexicale, syntaxique et sémantique, génération de code intermédiaire puis cible.

Commencer : Anatomie d'un compilateur
0 % · 0 / 11 leçons
  1. C1

    Vue d'ensemble

    1 leçon · 6 h
    Non commencé

    Objectif. Situer les phases d'un compilateur et comprendre pourquoi on sépare front-end et back-end — la carte que tout le reste du cours remplit.

    1. Anatomie d'un compilateurVous êtes iciCompilation contre interprétation ; les phases d'analyse et de synthèse ; table des symboles et gestion des erreurs comme services transversaux ; front-end, back-end et l'intérêt de les séparer.6 h · en cours
  2. C2

    Analyse lexicale

    1 leçon · 8 h
    Non commencé

    Objectif. Transformer un flot de caractères en unités lexicales, à la main puis avec Flex — la théorie des automates mise au travail.

    1. Du texte aux lexèmesUnité lexicale, lexème, motif ; spécification par expressions régulières et automate reconnaisseur ; règle du plus long lexème et priorité ; commentaires, espaces, littéraux ; Flex ; erreurs lexicales.8 h · non commencée
  3. C3

    Analyse syntaxique

    3 leçons · 18 h
    Non commencé

    Objectif. Le cœur du cours : préparer une grammaire, l'analyser en descendant puis en montant, et comprendre d'où vient un conflit LR.

    1. Grammaires pour la compilationArbre syntaxique concret et abstrait ; ambiguïté, priorité et associativité des opérateurs ; élimination de la récursivité gauche ; factorisation gauche.4 h · non commencée
    2. Analyse descendanteDescente récursive ; ensembles PREMIER et SUIVANT ; table LL(1) ; limites du prédictif ; récupération sur erreur syntaxique.6 h · non commencée
    3. Analyse ascendanteDécalage-réduction ; items et automate LR(0) ; SLR(1), LR(1) canonique, LALR(1) ; conflits décalage/réduction et réduction/réduction ; Bison ; LL contre LR.8 h · non commencée
  4. C4

    Analyse sémantique

    2 leçons · 10 h
    Non commencé

    Objectif. Donner un sens à l'arbre : gérer les portées dans la table des symboles, puis vérifier les types par traduction dirigée par la syntaxe.

    1. Table des symbolesPortées et blocs imbriqués ; organisation et implémentation ; déclaration et résolution des identificateurs ; portée statique contre dynamique.4 h · non commencée
    2. Vérification de typesSystèmes de types ; expressions de types et équivalence ; vérification et conversions implicites ; grammaires attribuées, attributs synthétisés et hérités ; traduction dirigée par la syntaxe ; erreurs sémantiques.6 h · non commencée
  5. C5

    Génération de code intermédiaire

    2 leçons · 10 h
    Non commencé

    Objectif. Passer de l'arbre à une représentation linéaire, et traduire les constructions du langage — à fond if et while.

    1. Représentations intermédiairesCode à trois adresses ; quadruplets et triplets ; arbre syntaxique abstrait annoté ; aperçu de la forme SSA.5 h · non commencée
    2. Traduction des constructionsExpressions et affectations ; expressions booléennes en court-circuit ; if et boucles par patchage de listes ; appels de fonctions ; accès aux tableaux et aux structures.5 h · non commencée
  6. C6

    Environnement d'exécution et code cible

    2 leçons · 8 h
    Non commencé

    Objectif. Organiser la mémoire à l'exécution, puis produire et optimiser le code final.

    1. Organisation mémoireSegments code, données statiques, tas et pile ; enregistrement d'activation et pile d'appels ; passage de paramètres et valeur de retour ; variables locales et chaînage.4 h · non commencée
    2. Génération et optimisationSélection d'instructions ; allocation de registres par coloriage de graphe ; blocs de base et graphe de flot ; optimisations locales et aperçu des optimisations globales.4 h · non commencée