Généralités sur le compilateur

Dans les années soixante, grâce à l’évolution de la technologie des semi-conducteurs, une troisième génération d’ordinateurs, capables de réaliser des applications jusque-là impossibles, est apparue. Mais l’accomplissement de ces applications exigea la construction de grands systèmes logiciels, or les méthodes de développement de système de l’époque n’étaient pas adéquates. Alors le développement de logiciel est entré dans une situation de crise : les coûts du matériel s’effondraient, tandis que les coûts du logiciel augmentaient rapidement.

Pour résoudre la situation, une conférence sur la « Crise du Logiciel » a été organisée et le « Génie Logiciel » a été introduit [1] [2] [3]. Ce dernier engendre les nouvelles techniques et méthodes qui permettent de maîtriser la complexité liée nécessairement aux grands systèmes logiciels. Il utilise les principes d’ingénierie et comporte à la fois des aspects technique et non technique comme la communication. Grâce au génie logiciel, la relation homme – système s’est désormais améliorée avec l’apparition des langages de programmation plus aisés et conviviaux que le langage machine. Mais les programmes rédigés dans ces langages dits de « Haut Niveau » ne sont pas compris directement par la machine, donc il faut les traduire en « Langage Machine ». Pour accomplir cette tâche, un programme spécial est placé entre les deux et ce programme c’est « Le Compilateur ».

GENERALITES SUR LE COMPILATEUR 

Un programme rédigé dans un langage de programmation évolué ne peut être exécuté sur un ordinateur que s’il a été traduit en instructions exécutables (langage machine).

Cette traduction du programme est réalisée par un programme spécial appelé compilateur. Précisément, le travail de tout traducteur peut être décrit en plusieurs phases distinctes : l’analyseur lexical « scanner », l’analyseur syntaxique « parser », l’analyseur sémantique et le générateur de code. Les aspects lexicaux et syntaxiques portent sur la forme externe des textes sources ; les aspects sémantiques établissent la signification de ces textes.

COMPILATION ET EDITION DE LIENS

De façon générale, le programme est un simple fichier texte écrit avec un traitement de texte ou un éditeur de texte, appelé fichier source. Ce dernier contient les lignes de programme ou code source [4]. Ce fichier source, une fois terminé, doit être compilé.

Les différentes étapes nécessaires avant l’exécution :

• Avant l’exécution proprement dite du programme, le compilateur transforme le code source en code objet, et le sauvegarde dans un fichier objet, c’est-à-dire qu’il traduit le fichier source en langage machine.

• L’éditeur de liens (« linker » ou « binder ») permet ensuite d’intégrer dans le fichier final tous les éléments annexes (fonctions ou librairies) auxquels le programme fait référence. En effet, ces éléments ne sont pas stockés dans le fichier source. S’il n’y a pas d’erreurs, il crée un fichier exécutable qui contient tout ce dont le programme a besoin pour fonctionner. Le fichier ainsi crée possède l’extension ».exe  » .

L’ANALYSEUR LEXICAL

L’analyseur lexical a pour tâche de lire de gauche à droite le programme source, caractère par caractère, jusqu’à la fin à l’aide d une fonction qui retourne le caractère lu [4]. Ce caractère est affecté à une variable globale représentant le dernier caractère lu. Autrement dit, il transforme un flot de caractères en une liste de symboles (identificateurs, nombres, mots clés…) appelés unités lexicales « tokens » après élimination des symboles non signifiants (commentaires, tabulations, fins de ligne…).

L’instruction  » A : = A + B « ; donne, par exemple, les unités lexicales A, :=, A, +, B, ;.

Son rôle est d’identifier tous les éléments constitutifs du programme source. Pour ce faire, il doit d’abord gérer les caractères spéciaux comme la fin du fichier source ainsi que tout autre caractère non imprimable. Il doit aussi reconnaître un terminal avant de le rendre accessible à l’analyseur syntaxique. Ceci est valable pour n’importe quel terminal, simple ou composé, constante numérique ou alphanumérique.

Enfin, il doit détecter les erreurs lexicales comme un caractère illégal ou une chaîne de caractères non fermée. A la sortie de l’analyseur lexical, on a un fichier liste copie conforme du fichier source où chaque ligne du programme est numérotée et dans lequel figurent les messages d’erreurs éventuels.

L’ANALYSEUR SYNTAXIQUE

Le travail de l’analyseur syntaxique consiste à construire l’arbre de dérivation à partir de la grammaire du langage de programmation et ceci pour l’ensemble des phrases du programme source [4].

Comme tout langage formel, un langage de programmation est basé sur un vocabulaire. En informatique, un « Vocabulaire » est un ensemble non vide de mots appelés « Symboles ».

L’analyseur syntaxique a pour but de déterminer si une séquence de symboles donnée constitue une phrase bien formée du langage ou non.

La syntaxe d’un langage est l’ensemble des règles qui permettent de définir les phrases bien formées du langage. Cet ensemble est appelé « Grammaire du langage ». Une grammaire d’un langage peut être formalisée par le quadruplet : <T, N, S, P> avec

T : ensemble des symboles terminaux,
N : ensemble des symboles non terminaux,
S : symbole distingué ou initial. Il doit faire partie de l’ensemble N,
P : ensemble des productions. Ce sont les règles syntaxiques.

L’intersection des ensembles T et N doit être vide. V désigne l’ensemble formé par la réunion des ensembles T et N. Les productions sont de la forme x -› y (c’est-à dire la chaîne x est remplacée par la chaîne y ou encore, y dérive directement de x) où x appartient a V+ et y appartient à V*. V+ est l’ensemble de toutes les chaînes formées avec les éléments de V, une chaîne étant une suite finie de symboles. V* est la réunion de l’ensemble V+ avec le singleton {Ø} où Ø est la chaîne vide de longueur 0.

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela rapport-gratuit.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

INTRODUCTION
Chapitre I Généralités sur le compilateur
1.1. COMPILATION ET EDITION DE LIENS
1.2. L’ANALYSEUR LEXICAL
1.3. L’ANALYSEUR SYNTAXIQUE
1.4. L’ANALYSEUR SEMANTIQUE
1.5. LE GENERATEUR DE CODE
1.6. OPTIMISATION DE CODE
Chapitre II Le langage Ada et Génie Logiciel
2.1. HISTORIQUE
2.2. CARACTERISTIQUES DU LANGAGE
a. Les Bases
i. Constantes littérales
ii. Opérateurs
iii. Instructions
b. Unités de programme
i. Sous programmes
ii. Paquetages
c. Traitement d’exceptions
d. Unités de programmes génériques
2.3 SPECIFICATIONS
a. Objectifs
b. Concept de norme
2.4 LE GENIE LOGICIEL
a. Critères de qualité
b. Spécifications en Génie Logiciel
i. Modèle conceptuel d’un courrier électronique
ii. Spécifications de paquetage
Chapitre III PRESENTATION DE LOVELACE 1.0
3.1. PRESENTATION DES OUTILS
3.2. PRESENTATION DE L’INTERFACE
a. Environnement
b. Barre d’outils
3.3. DEVELOPPEMENT D’UNE APPLICATION
a. Le fichier texte
i. Zone 1
ii. zone 2
iii. Zone 3
b. Création de l’application
c. Sauvegarde du fichier
3.4. COMPILATION
a. Analyse Lexicale
b. Analyse Syntaxique
c. Analyse Sémantique
3.5. EXECUTION
3.6. LA RUBRIQUE D’AIDE
CONCLUSION
ANNEXES
ANNEXE 1 MACHINE , INTERPRETE ET COMPILATEUR
ANNEXE 2 UNE BREVE HISTORIQUE DE ADA
ANNEXE 3 LES INSTRUCTIONS EN ADA
ANNEXE 4 SUJETS DE TRAVAUX PRATIQUES
ANNEXE 5 MODELE DE LA CASCADE
BIBLIOGRAPHIE

Lire le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *