CSC4251_4252 — Compilation : du langage de haut niveau à l'assembleur
Portail informatique
Mementos et Manuels
Memento JFlex
Manuel officiel JFlex
Memento CUP
Manuel officiel CUP
Memento JAVA
Memento MIPS
Memento MiniJAVA
Codes
Archétypes Maven pour JFlex et CUP
Projet MiniJAVA
Contenu
Syntaxe 1
Analyse lexicale (1/2)
Prolégomènes
Analyse Lexicale (1/2)
Introduction
(40mn)
Chapitre 0
Cours
(50mn)
Chapitre 1
Cours Pratique
(20mn)
Chapitre Maven et autres
Memento JFlex
(40mn)
Sections 1 à 4
TP
(30mn)
Exos JFlex :
1
(, 2, 3)
Introduction du cours
compilation / interpretation / traduction
phases de la compilation
Analyse lexicale versus syntaxique
Hiérarchie de Chomsky, catégorie lexicale, grammaire
Premiers pas d'analyse lexicale
Expression régulière
Outil JFlex
Syntaxe 2
Analyse Lexicale (2/2)
Cours
(50mn)
Chapitre 2
Cours Pratique
(20mn)
Memento JFlex : 5 à 7
Retours sur la pratique de Maven
(10mn)
TP
(100mn)
Exos JFlex :
4
(, 5),
6|7
(, 8)
Théorie des langages
Automate fini et langage régulier
Expressions régulières non triviales
Outillage de code avec JFlex
Syntaxe 3
Analyse Syntaxique (1/4)
Cours
(50mn)
Chapitre 3
Cours Pratique
(20mn)
Memento CUP : 1 à 4
TP
(110mn)
Exos CUP :
1
(, 2, 3)
Grammaire Algébrique
définition et exemples
ambiguïté
syntaxe BNF
Premiers pas CUP
couplage avec JFlex,
Tokens
écriture de grammaires
Syntaxe 4
Analyse Syntaxique (2/4)
Cours
(50mn)
Chapitre 4
Cours Pratique
(20mn)
Memento CUP : 5 à 7
TP
(110mn)
Exos CUP :
2
, (3,)
4
(, 5)
Analyse Syntaxique LL et LR
Déterminisme, Ambiguïté et Conflit
Valeur sémantique des symboles
Analyse complète d'un langage
Syntaxe 5
Analyse Syntaxique (3/4)
Cours Pratique
(20mn)
Memento CUP : 8
TP
(160mn)
Exos CUP :
6
,
7
Devoir Maison qui remplace le TP noté 1
Énoncé (
readme.md
) et squelette
« Calculatrice »
Interprétation à la volée
Priorité (LR)
Traitement d'erreur (LR)
Syntaxe 6
Analyse Syntaxique (4/4)
Cours
(30mn)
Chapitre 6
Cours Pratique
(30mn)
Patron de conception Visiteur
TP
(120mn)
Exos CUP :
8
,
9
(, 10)
Arbre de Syntaxe Abstraite
Interprétation sur arbre : évaluation, boucles
Arbre de Syntaxe et typage objet
Patron de conception Visiteur et parcours d'arbre
Extras
Extras
Hors présentiel d'extra
Bootstrap :
TP Brainfuck
(120mn)
TD langages
(150 mn)
En vrac :
Exercices JFlex/CUP
(??? mn)
Paradoxe du bootstrap,
compiler un compilateur Brainfuck écrit en Brainfuck ?!?,
comparaison performances compilation
versus
interprétation
Exercices de TD sur la théorie des langages
Exercices supplémentaires de TP JFlex et CUP en vrac
TP noté 1
TP noté (1/2)
Analyse lexicale et analyse syntaxique (90mn)
Archi1
Archi (1/2)
Cours
(30mn)
L'assembleur MIPS
Cours Pratique
(60mn)
Memento MIPS : 1 à 5
TP
(90mn)
Instruction, Registre
Assembleur et outil MARS
Structures algorithmiques : if, for, etc.
Appel de fonction, variables locales
Archi2
Archi (2/2)
TP
(180mn)
Sémantique 1
MiniJAVA
Cours Pratique
(30mn)
Memento JAVA : 2 et 3
Cours pratique
(30mn)
Memento MiniJAVA : 1 à 4, et 10
TP
(120mn)
Prologue et Phase 1
Langage MiniJAVA, structure du compilateur
Démarrage avec les analyses lexicale et syntaxique de MiniJAVA
Arbre de Syntaxe Abstraite de MiniJAVA
Sémantique 2
Analyse Sémantique (1/2)
Cours
(30mn)
Chapitre 7
Cours pratique
(30mn)
Memento MiniJAVA : 5 à 7
TP
(120mn)
Phase 2
Phases de Compilation
Analyse sémantique
Principes
Arbres décorés, attributs sémantiques
Des fonctions sémantiques
Table de symboles : liaison et visibilité des identificateurs
Sémantique 3
Analyse sémantique (2/2)
Cours
(20mn)
Chapitre 8
TP
(160mn)
Phase 3
Contrôle de type
Sémantique 4
Finalisation de l'analyse sémantique
TP
(180mn)
Revoir l'ensemble des visiteurs de l'analyse sémantique
Enchaînement des visiteurs dans le compilateur
Sémantique 5
Forme Intermédiaire
Cours
(40mn)
Chapitre 9
Cours pratique
(10mn)
Memento MiniJAVA : 8
TP
(150mn)
Phase 4
Partie avant et arrière d'un compilateur
Linéarisation, Canonisation
Code à 3 adresses
Sémantique 6
Génération MIPS
Cours
(50mn)
Chapitre 10
Cours pratique
(10mn)
Memento MiniJAVA : 9
TP
(150mn)
Phase 5
Allocation mémoire, registre
Cadre et Convention d'appel
Sélection d'instruction
Sémantique 7
Finalisation de MiniJAVA
TP
(180mn)
Rendu Moodle
Finalisation et Test du compilateur
Revoir l'ensemble des phases de compilation
TP noté 2
TP noté (2/2)
Analyse sémantique, principalement (90mn)
Fiche Programme
Emploi du temps
Sorry, the requested resource doesn't exist