Aller au contenu principal

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

Sujets de TD2 documents

Projet1 document