Ce cours a pour objectif principal l'introduction aux méthodes de compilation. Les compétences attendues à la fin de ce cours sont:
Savoir montrer qu'un langage est algébrique en donnant soit une grammaire algébrique ou un automate à pile le reconnaissant.
Savoir écrire une grammaire attribuée pour un langage de programmation manipulant des variables, conditions et branchements.
Savoir utiliser l'outil Antlr pour écrire un analyseur syntaxique et sémantique.
Savoir utiliser l'outil Antlr pour la génération de code vers un langage cible.
Savoir lire une documentation techniaque d'un outil et d'un langage de programmation
Plan du cours
Une introduction à la compilation : la présentation des différentes étapes de la compilation.
Grammaires attribuées, arbres de dérivation, analyse lexicale, syntaxique et sémantique.
Une présentation d'une machine virtuelle ainsi que son langage (qui sera le langage cible pour les TPs).
Une présentation des notions de variables, conditions et branchements.
Les familles de grammaires LL(k) et LR(k).
Description des TP
L'objectif des TPs c'est l'écriture d'un langage de programmation dont les calculs sont les expressions arithmetiques et booleennes et autorisant les branchements classiques des langages de programmation : if then else, boucles et blocs d'instruction.
TP 1 : c'est pour se familiariser avec le générateur de compilateur Antlr, et en particulier comment l'utiliser pour faire un analyseur lexical, syntaxique et la manipulation de l'arbre de dérivation produit.
TP 2 : pour se familiariser avec le langage machine MVaP et écrire un langage de programmation manipulant des expressions arithmétiques et booléennes et générant du code assembleur MVaP.
TP 3 : enrichir la grammaire du TP2 pour inclure les constructions classiques des langages de programmation : gestion de variables et de typage simple avec les types booleen, entier et flottant, branchements classiques (if then else et boucles) et fonctions d'entrées/sorties
Connaissances requises
Langages algébriques, grammaires algébriques, expressions régulières, automates à états finis, automates à pile, lemme de l'étoile des langages réguliers et algébriques.
RSE (Responsabilité Sociale et Environnementale)
Bibliographie
Michael Sipser. Introduction to the theory of Computation. MIT press. Chapitres 1 et 2.
Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman. Compilers : principles, techniques and tools.
La page web de Antlr : https://www.antlr.org Vous y trouverez une documentation en ligne
La documentation fournie pendant les cours surle langage MVaP