Objectifs de l’enseignement :
Etudier les phases et techniques d’analyse du texte-source au code assembleur. Il présente les différentes phases d’analyse et présente les outils de génération de compilateurs comme Lex et Yacc.
Connaissances préalables recommandées : ///
Contenu de la matière :
- Rappel des notions fondamentales de la théorie des langages
- Introduction à la Compilation
- Les différentes étapes de la Compilation
- Compilation, Interprétation, Traduction
- Analyse lexicale
- Expressions régulières
- Grammaires
- Automates d’états finis
- Un exemple de générateur d’analyseurs lexicaux : LEX
- Analyse syntaxique
- Définitions : grammaire syntaxique, récursivité gauche, factorisation d’une grammaire, grammaire e-libre.
- Calcul des ensembles des débuts et
- Méthodes d’analyse descendantes : la descente récursive, LL(1).
- Méthodes d’analyse ascendantes : LR(1), SLR(1), LALR(1), (méthode des items).
- Un exemple de générateur d’analyseur syntaxique :
- Traduction dirigée par la syntaxe (Analyse sémantique)
- Formes intermédiaires
- forme postfixée
- quadruplés
- triplés directs et indirects
- arbre abstrait
- Allocation – Substitution- Organisation des données à l’exécution
- Optimisation du code objet
- Génération du code objet
Mode d’évaluation :
Examen (50%), contrôle continu (50%)
Références bibliographiques :
- Aho, M. Lam, R. Sethi, J. Ullman, Compilateurs principes, techniques et outils, 2ème édition. Pearson Education, 2007.
- Hopcroft, R. Motwani, J. Ullman, Introduction to Automata Theory, Languages and Computation, 2ème édition Pearson Education International, 2001.
- Appel, Modern compiler implementation in C, Cambridge University Press, 1998.
- Fraser, D.Hanson. A Retargetable C Compil.: Design and Implement. Benjamin/Cumming, 1995.
Polycopiés et sites internet à consulter :