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.