Language Theory / Theory of compiling

Transcription

Language Theory / Theory of compiling
Language Theory / Theory of compiling
Introduction à la compilation
Bible de la compilation : Compilers, Principles, Techniques and Tools. Référencé à « Dragon Book »
Le compilateur prend en source un programme de haut niveau (C, JAVA,….) pour en restituer un
programme de bas niveau en langage objet.
Certains langages ne nécessitent qu’un interpréteur, ils sont écrits en langage exécutable.
D’autres langages nécessitent un préprocesseur pour traduire le code source en langage exécutable.
Un compilateur est toujours construit de la même façon :
Tout d’abord le code source est passé à l’analyse lexicale, pour vérifier que toutes les instructions
appartiennent au langage. L’analyse syntaxique sert à vérifier que les lignes sont bien écrites. Puis
viens la génération du code intermédiaire. Le code est ensuite optimisé. Puis générer, et en fin le
programme objet.
En parallèle est crée une gestion des tables et une gestion des erreurs. La gestion des tables permet
aux fonctions du programme d’accéder aux variables et aux constantes. La gestion des erreurs
permet de notifier et éventuellement corriger les différentes erreurs qui surviennent.
L’analyseur doit identifier les symboles, les étiquettes, les mots clefs. Ce qui est reconnu est regroupé
en lexen.
Toutes ces choses sont rangées dans une table des symboles avec leur type et éventuellement leur
valeur.
L’analyseur lexical a la structure d’un automate fini.
L’analyseur lexical envoie ses résultats à l’analyseur syntaxique. L’analyseur syntaxique vérifie l’ordre
des expressions grâce à la grammaire du programme.
L’optimisation du code permet de simplifier les expressions en renommant des expressions pour
éviter d’avoir à faire plusieurs fois les mêmes calculs.
La gestion des erreurs intervient tout au long du code, pour référencer les erreurs qui peuvent se
produire tout du long.
Chapite 1 : Grammaires et dérivations
Une grammaire est composé d’un alphabet terminal, une alphabet de varivable, et d’un ensemble de
règles de production.