Compilation
Le cours de compilation du semestre 7 suit les étapes d'un compilateur, du texte source au code produit : analyse lexicale par automates, grammaires algébriques et analyse ascendante, grammaires attribuées et actions sémantiques Lex/Yacc, puis génération de code 3 adresses. Les notes reprennent le cours de David Janin, dont une partie était diffusée en vidéo. Le projet, mené en binôme, consiste à écrire un compilateur du mini-langage MyC vers du code 3 adresses.
Notes de cours
Cours7 pages
- IntroductionIntroduction à la compilation : intérêt, objectifs d'un compilateur et découpage en analyse lexicale, syntaxique, sémantique et représentation intermédiaire.
- Analyse lexicaleLangages réguliers, construction de Thompson, déterminisation et minimisation d'automates, reconnaissance des lexèmes.
- Grammaires algébriquesRègles de production, plus petit point fixe, dérivations gauches, arbres de dérivation, ambiguïté et grammaire ETF des expressions arithmétiques.
- Grammaires attribuéesAttributs synthétisés et hérités, actions sémantiques Yacc et ordre d'évaluation postfixe sur l'arbre de dérivation.
- Analyse ascendanteAnalyse ascendante par décalage-réduction : déroulé sur un exemple, conflits, table d'actions et manipulation des attributs sur la pile d'analyse.
- Analyse sémantique et production de codeOutils pour l'analyse sémantique et la production de code : actions sémantiques Lex/Yacc, table des symboles, récursion gauche, analyse de noms et de types.
- Sous-blocs et appels de fonctionProduction de code pour les sous-blocs et les appels de fonction : variables locales en pile, pointeur d'environnement (frame pointer), adresse de retour.
Travaux dirigés2 pages
- Feuille 1 : code 3 adressesCode 3 adresses pour les expressions, nombre de registres nécessaires, schémas de compilation des instructions de contrôle et compilation paresseuse des booléens.
- Feuille 2 : grammaires et ambiguïtéGrammaires, ambiguïté, langage engendré, ambiguïté du « else pendant » et actions sémantiques Yacc produisant du code 3 adresses.
Ressources
Supports de l'enseignant (Moodle)8 documents
- Introduction
- Analyse lexicale
- Analyse syntaxique
- Vidéo 4 : grammaires algébriques
- Vidéo 5 : grammaires attribuées
- Vidéo 6.2 : analyse ascendante
- Vidéo 7.1 : analyse sémantique et production de code
- Vidéo 7.2 : sous-blocs et appels de fonction (support non référencé)
Sujets de TD2 documents
Projet1 document