Qu’est-ce qu’une conception de compilateur ? Types, outils de construction, exemple

Qu'est-ce qu'un compilateur ?

Un compilateur est un programme informatique qui vous aide à transformer le code source écrit dans un langage de haut niveau en langage machine de bas niveau. Il traduit le code écrit dans un langage de programmation dans un autre langage sans changer la signification du code. Le compilateur rend également le code final efficace, optimisé pour le temps d'exécution et l'espace mémoire.

Le processus de compilation comprend des mécanismes de traduction de base et une détection d'erreurs. Le processus du compilateur passe par une analyse lexicale, syntaxique et sémantique au niveau du front-end et par la génération et l'optimisation du code au niveau du back-end.

Compilateur

Caractéristiques des compilateurs

  • Correction
  • Vitesse de compilation
  • Préserver la signification correcte du code
  • La vitesse du code cible
  • Reconnaître les constructions de programmes légales et illégales
  • Bon rapport/gestion des erreurs
  • Aide au débogage du code

Types de compilateur

Voici les différents types de compilateur :

  • Compilateurs à passe unique
  • Compilateurs à deux passes
  • Compilateurs multipasses

Compilateur à passe unique

Compilateur à passe unique
Compilateur à passe unique

En un seul passage, le code source du compilateur se transforme directement en code machine. Par exemple, le langage Pascal.

Compilateur à deux passes

Compilateur à deux passes
Compilateur à deux passes

Le compilateur à deux passes est divisé en deux sections, à savoir.

  1. L'extrémité avant: Il mappe le code juridique en représentation intermédiaire (RI).
  2. Arrière-plan : Il mappe l'IR sur la machine cible

La méthode du compilateur à deux passes simplifie également le processus de reciblage. Il permet également plusieurs frontaux.

Compilateurs multipasses

Compilateurs multipasses
Compilateurs multipasses

Le compilateur multipasse traite plusieurs fois le code source ou l'arbre syntaxique d'un programme. Il divise un grand programme en plusieurs petits programmes et les traite. Il développe plusieurs codes intermédiaires. Tous ces multipasses prennent la sortie de la phase précédente comme entrée. Cela nécessite donc moins de mémoire. Il est également connu sous le nom de « Wide Compiler ».

Tâches du compilateur

Les principales tâches effectuées par le Compilateur sont :

  • Divise le programme source en morceaux et leur impose une structure grammaticale
  • Permet de construire le programme cible souhaité à partir de la représentation intermédiaire et également de créer la table des symboles
  • Compile le code source et y détecte les erreurs
  • Gérer le stockage de toutes les variables et codes.
  • Prise en charge de la compilation séparée
  • Lisez, analysez l'intégralité du programme et traduisez-le en équivalent sémantique
  • Traduire le code source en code objet selon le type de machine

Histoire du compilateur

Un point important de l'histoire du compilateur est le suivant :

  • Le mot « compilateur » a été utilisé pour la première fois au début des années 1950 par Grace Murray Hopper.
  • Le premier compilateur a été construit par John Backum et son groupe entre 1954 et 1957 à IBM.
  • COBOL a été le premier langage de programmation qui a été compilé sur plusieurs plateformes en 1960
  • L'étude des problèmes de numérisation et d'analyse syntaxique s'est poursuivie dans les années 1960 et 1970 pour apporter une solution complète.

Étapes pour les systèmes de traitement du langage

Avant de connaître le concept des compilateurs, vous devez d'abord comprendre quelques autres outils qui fonctionnent avec les compilateurs.

Étapes pour les systèmes de traitement du langage
Étapes pour les systèmes de traitement du langage
  • Préprocesseur: Le préprocesseur est considéré comme faisant partie du compilateur. C'est un outil qui produit des entrées pour le compilateur. Il traite du traitement des macros, de l'augmentation, de l'extension du langage, etc.
  • Interprète: Un interprète est comme un compilateur qui traduit le langage de haut niveau en langage machine de bas niveau. La principale différence entre les deux est que l’interpréteur lit et transforme le code ligne par ligne. Le compilateur lit l'intégralité du code en une seule fois et crée le code machine.
  • Assembleur: Il traduit le code du langage assembleur en un langage compréhensible par la machine. Le résultat de sortie de l'assembleur est connu sous le nom de fichier objet qui est une combinaison d'instructions machine ainsi que des données nécessaires pour stocker ces instructions en mémoire.
  • links: L'éditeur de liens vous aide à lier et fusionner divers fichiers objets pour créer un fichier exécutable. Tous ces fichiers pourraient avoir été compilés avec des assembleurs distincts. La tâche principale d'un éditeur de liens est de rechercher les modules appelés dans un programme et de connaître l'emplacement mémoire où tous les modules sont stockés.
  • Chargeur: Le chargeur fait partie du système d'exploitation, qui effectue les tâches de chargement des fichiers exécutables en mémoire et de leur exécution. Il calcule également la taille d'un programme qui crée de l'espace mémoire supplémentaire.
  • Compilateur croisé: Un compilateur Cross dans la conception du compilateur est une plate-forme qui vous aide à générer du code exécutable.
  • Compilateur source à source: Le compilateur source à source est un terme utilisé lorsque le code source d'un langage de programmation est traduit dans la source d'un autre langage.

Outils de construction du compilateur

Les outils de construction de compilateurs ont été introduits à mesure que les technologies informatiques se répandaient dans le monde entier. Ils sont également connus sous le nom de compilateurs-compilateurs, compilateurs-générateurs ou traducteurs.

Ces outils utilisent un langage ou un algorithme spécifique pour spécifier et implémenter le composant du compilateur. Voici l’exemple d’outils de construction de compilateur.

  • Générateurs de scanners: Cet outil prend des expressions régulières en entrée. Par exemple LEX pour Unix Operasystème de réglage.
  • Moteurs de traduction orientés syntaxe: Celles-ci des outils logiciels proposer un code intermédiaire en utilisant l'arbre d'analyse. Il a pour objectif d'associer une ou plusieurs traductions à chaque nœud de l'arbre d'analyse.
  • Générateurs d'analyseurs : Un générateur d'analyseur prend une grammaire en entrée et génère automatiquement un code source qui peut analyser des flux de caractères à l'aide d'une grammaire.
  • Générateurs de codes automatiques: Prend le code intermédiaire et le convertit en langage machine.
  • Moteurs de flux de données: Cet outil est utile pour l'optimisation du code. Ici, les informations sont fournies par l'utilisateur et le code intermédiaire est comparé pour analyser toute relation. Elle est également connue sous le nom d’analyse des flux de données. Il vous aide à découvrir comment les valeurs sont transmises d'une partie du programme à une autre.

Pourquoi utiliser un compilateur ?

  • Le compilateur vérifie l'intégralité du programme, il n'y a donc aucune erreur de syntaxe ou de sémantique.
  • Le fichier exécutable est optimisé par le compilateur, il s'exécute donc plus rapidement.
  • Vous permet de créer une structure interne en mémoire.
  • Il n’est pas nécessaire d’exécuter le programme sur la même machine sur laquelle il a été construit.
  • Traduire l'intégralité du programme dans une autre langue.
  • Générez des fichiers sur le disque.
  • Liez les fichiers dans un format exécutable.
  • Vérifiez les erreurs de syntaxe et les types de données.
  • Vous aide à améliorer votre compréhension de la sémantique du langage.
  • Aide à gérer les problèmes de performances linguistiques.
  • Opportunité pour un projet de programmation non trivial.
  • Les techniques utilisées pour construire un compilateur peuvent également être utiles à d’autres fins.

Application des compilateurs

  • La conception du compilateur facilite la mise en œuvre complète des langages de programmation de haut niveau.
  • Optimisation du support pour ordinateur Architecture Parallélisme.
  • Conception de nouvelles hiérarchies de mémoire de machines.
  • Largement utilisé pour la traduction de programmes.
  • Utilisé avec d'autres outils de productivité logiciels.

Résumé

  • Un compilateur est un programme informatique qui vous aide à transformer le code source écrit dans un langage de haut niveau en langage machine de bas niveau.
  • L'exactitude, la vitesse de compilation et la préservation de la signification correcte du code sont quelques caractéristiques importantes de la conception du compilateur.
  • Les compilateurs sont divisés en trois parties 1) Compilateurs à passe unique 2) Compilateurs à deux passes et 3) Compilateurs multipasses.
  • Le « compilateur » est un mot utilisé pour la première fois au début des années 1950 par Grace Murray Hopper.
  • Les étapes du système de traitement du langage sont : préprocesseur, interprète, assembleur, éditeur de liens/chargeur.
  • Les outils de construction de compilateurs importants sont 1) les générateurs de scanner, 2) la syntaxe-3) les moteurs de traduction dirigée, 4) les générateurs d'analyseurs, 5) les générateurs de code automatiques.
  • La tâche principale du compilateur est de vérifier l’intégralité du programme afin qu’il n’y ait aucune erreur de syntaxe ou de sémantique.