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- C1Non commencé
Vue d'ensemble
1 leçon · 6 hObjectif. 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.
- C2Non commencé
Analyse lexicale
1 leçon · 8 hObjectif. Transformer un flot de caractères en unités lexicales, à la main puis avec Flex — la théorie des automates mise au travail.
- C3Non commencé
Analyse syntaxique
3 leçons · 18 hObjectif. Le cœur du cours : préparer une grammaire, l'analyser en descendant puis en montant, et comprendre d'où vient un conflit LR.
- 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
- 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
- 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
- C4Non commencé
Analyse sémantique
2 leçons · 10 hObjectif. 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.
- 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
- 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
- C5Non commencé
Génération de code intermédiaire
2 leçons · 10 hObjectif. Passer de l'arbre à une représentation linéaire, et traduire les constructions du langage — à fond if et while.
- Représentations intermédiairesCode à trois adresses ; quadruplets et triplets ; arbre syntaxique abstrait annoté ; aperçu de la forme SSA.5 h · non commencée
- 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
- C6Non commencé
Environnement d'exécution et code cible
2 leçons · 8 hObjectif. Organiser la mémoire à l'exécution, puis produire et optimiser le code final.
- 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
- 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