Phases essentielles de la compilation
Phases essentielles de la compilation
L'analyse lexicale est la première phase d'un compilateur. Elle prend le code source modifié.
préprocesseurs de langue qui s'écrivent sous la forme de déclarations. L'analyseur lexical se
rompecesyntaxisenunaseriedefichas,quitandocualquierespacioenblancoolos
commentaires dans le code source.
Si l'analyseur lexical trouve un jeton non valide, une erreur est générée. L'analyseur lexical travaille
en étroite collaboration avec le parser de syntaxe. Lit des caractères courants depuis le code
source, vérifie les jetons, et passe les données à la syntaxe d'analyse lorsque cela est exigé.
Phase 2 : Analyse Syntaxique (Parseur) :
L'analyse syntaxique est la deuxième phase d'un compilateur. Dans ce chapitre, nous allons apprendre les
concepts de base utilisés dans la construction d'un analyseur.
Nous avons vu qu'un analyseur lexical peut identifier les jetons avec l'aide d'expressions.
réguliers et règles de motifs. Mais un analyseur lexical ne peut pas vérifier la syntaxe d'un
phrase en raison des limitations des expressions régulières. Les expressions régulières ne peuvent pas
vérifier l'équilibre des jetons, comme entre parenthèses. Par conséquent, cette phase utilise une grammaire libre de
contexte (CFG), qui est reconnu par la poussée des automates.
CFG, d'autre part, est un surensemble de la grammaire régulière, comme il est illustré ci-dessous :
Cela implique que chaque grammaire régulière est également libre de contexte, mais il y a quelques
problèmes qui dépassent le cadre de la grammaire régulière. CFG est un outil utile pour
décrire la syntaxe des langages de programmation.
Un analyseur syntaxique reçoit l'entrée d'un analyseur lexical sous forme de flux de tokens. Le
l'analiseur analyse le code source (token) par rapport aux normes de production pour détecter les
erreurs dans le code. Le résultat de cette phase est d'analyser un arbre.
De cette manière, l'analyseur effectue deux tâches, à savoir analyser le code et rechercher les erreurs.
générer une analyse d'arbre comme la sortie de l'étape.
On s'attend à ce que les analyseurs analysent tout le code, bien qu'il y ait quelques erreurs dans le programme.
Erreur lors de la récupération. Les analyseurs utilisent des stratégies que nous allons apprendre plus tard.
dans ce chapitre.
Analyse sémantique
Vous pouvez effectuer des vérifications plus avancées, telles que le contrôle de flux et l'attribution de
mémoire.
La sémantique aide à interpréter les symboles, les sous-ensembles et leurs relations avec les autres. Analyse
sémantique les juges si la syntaxe structure construite dans le programme d'origine en dérive
signification ou non.
La phase de génération de code intermédiaire est une étape critique dans le processus de compilation.
L'objectif principal est de créer une représentation intermédiaire du programme qui soit indépendante de
la plateforme de destin, ce qui facilite l'optimisation et la portabilité du code.
Le code intermédiaire est un niveau d'abstraction entre le code source et le code machine et se
utilise pour faciliter l'optimisation et la portabilité.
Optimisation du code
L'optimisation du code est une phase au cours de laquelle le compilateur cherche à améliorer l'efficacité et le
performance du programme, transformation technique, qui vise à améliorer le code car
consomment moins de ressources (c'est-à-dire CPU, mémoire) et offrent une grande vitesse.
Dans l'optimisation de haut niveau général de la programmation, ils sont remplacés par des constructions très
efficace de bas niveau les codes de programmation. Un code processus en phase d'optimisation
debe seguir les trois règles qui sont expliquées ci-dessous :
La génération de code objet peut être considérée comme la phase finale de la compilation. Grâce à
La génération de code, le processus d'optimisation peut être appliqué au code, mais cela peut
être vu comme faisant partie de la génération de code propre à cette phase. Le code généré par le compilateur est
un code objet de certains langages de programmation de niveau inférieur.
Dans la phase finale, le compilateur génère du code objet spécifique pour la machine de destination.
Le code objet est du code machine ou du code assembleur qui peut être exécuté
directement par le CPU de l'ordinateur de destination.