Übersetzerbau - Phasen der Compiler


Advertisements

Der Übersetzungsvorgang ist eine Folge von verschiedenen Phasen. Jede Phase dauert Eingang von seinem vorherigen Stufe, hat seine eigene Darstellung des Quellprogramms, und seine Ausgabe an die nächste Phase des Compilers. Lassen Sie uns zu verstehen, die Phasen eines Compilers.

Phases of compiler

Lexikalische Analyse

Die erste Phase der Scanner arbeitet als Textscanner. Diese Phase scannt den Quellcode als Strom von Zeichen und wandelt sie in sinnvoll Lexeme. lexikalisch Analysator repräsentiert diese Lexeme in Form von Token als:

<token-name, attribute-value>

Syntaxanalyse

der nächsten Phase wird als die Syntaxanalyse oder parsing. Es nimmt die durch lexikalische Analyse als Eingabe erzeugte Token und erzeugt einen Syntaxbaum (oder Syntaxbaum). In dieser Phase werden Token Arrangements geprüft gegen den Quellcode Grammatik dh der Parser überprüft, ob die Expression durch den Token vorgenommen syntaktisch korrekt ist.

Semantische Analyse

Semantische Analyse prüft, ob der Parse-Baum aufgebaut folgt den Regeln der Sprache. Zum Beispiel ist die Zuweisung von Werten zwischen kompatible Datentypen, und Hinzufügen Zeichenfolge in eine ganze Zahl ist. Außerdem hält die semantische Analyse Spur von Bezeichnern, deren Typen und Ausdrücke; ob Bezeichner werden vor der Verwendung oder nicht, usw. Die semantische Analysegerät erzeugt eine kommentierte Syntaxbaum als Ausgang.

Zwischen-Code Generation

Nach der semantischen Analyse erzeugt der Compiler einen Zwischencode des Quellcodes für die Zielmaschine. Es repräsentiert ein Programm für einige abstrakte Maschine. Es befindet sich zwischen dem High-Level-Sprache und die Maschinensprache. Dieser Zwischencode sollte erzeugt in einer Weise, die es erleichtert, in die Zielmaschinencode übersetzt werden.

Code-Optimierung

der nächsten Phase macht Code-Optimierung des Zwischencodes. Die Optimierung kann als etwas, das unnötige Codezeilen entfernt davon ausgegangen werden, und ordnet die Folge von Anweisungen, um die Beschleunigung der Programmausführung ohne Verschwendung von Ressourcen (CPU, Speicher).

Code Generation

In dieser Phase nimmt der Codegenerator die optimierte Darstellung des Zwischencodes und ordnet sie dem Zielrechner Sprache. Der Code-Generator übersetzt den Zwischencode in eine Folge von (im Allgemeinen) Wieder lokalisierbar Maschinencode. Folge von Anweisungen der Maschinencode führt die Aufgabe als Zwischencode tun würde.

Symboltabelle

Es ist eine Datenstruktur in allen Phasen eines Compilers gehalten. Alle Namen der Kennung ist zusammen mit ihren Typen werden hier gespeichert. Die Symboltabelle erleichtert es der Compiler zur schnellen Suche der Kennung Rekord und abrufen. Die Symboltabelle wird auch Umfang Führung verwendet werden.

Advertisements