Wie Schreibt Man Einen Übersetzer

Inhaltsverzeichnis:

Wie Schreibt Man Einen Übersetzer
Wie Schreibt Man Einen Übersetzer

Video: Wie Schreibt Man Einen Übersetzer

Video: Wie Schreibt Man Einen Übersetzer
Video: Google Übersetzer: Tap to Translate 2024, November
Anonim

Es gibt viele Programmiersprachen, die ihre eigenen einzigartigen Eigenschaften haben. Aber damit ein Programm, das in einem von ihnen geschrieben ist, funktioniert, müssen Sie es senden. Manchmal werden Programmiersprachen für den eigenen Bedarf entwickelt (zum Beispiel Unterstützung für die Automatisierung in großen Anwendungen) und dann wird es notwendig, einen Übersetzer zu schreiben.

Wie schreibt man einen Übersetzer
Wie schreibt man einen Übersetzer

Notwendig

  • - natürliche Grammatik oder BNF der Ausgangssprache;
  • - Entwicklungswerkzeuge.

Anweisungen

Schritt 1

Bereiten Sie die Daten für die lexikalische Analyse des Textes in der Ausgangssprache vor. Listen Sie alle Token in der Sprache auf. Unterteilen Sie sie in Kategorien (Schlüsselwörter, numerische und Zeichenfolgenliterale, Bezeichner, Leerzeichen, Satzzeichen usw.).

Schritt 2

Implementieren Sie ein Modul oder einen Lexer. Am Eingang sollte es einen "rohen" Datenstrom erhalten und am Ausgang eine Liste von Elementen bilden, die Token und ihre Typkennungen in der Reihenfolge enthalten, in der sie im Quelltext vorkommen. Das Parsing-Programm kann ein ziemlich einfaches " einstufiger" Scanner. Die Implementierung einer Fehlerbehebung ist nicht sinnvoll. Ungültige Zeichen sollten als Fehler behandelt werden.

Schritt 3

Bereiten Sie die Daten für das Parsen vor. Erstellen Sie basierend auf der natürlichen Grammatik oder BNF der Quellsprache ihre LL1-Grammatik. Erstellen Sie basierend auf dieser Art von Grammatik ein Parsing-Schema hinsichtlich der Kategorien gültiger Token und semantischer Konstrukte der Sprache.

Schritt 4

Implementieren Sie ein Modul oder einen Parser. Bei der Eingabe sollte es eine Liste von Token erhalten, die in der Phase des lexikalischen Parsens vorbereitet wurde. Entwickeln Sie rekursive Syntaxprüfungsalgorithmen unter Verwendung des Schemas, das Sie in Schritt 3 erstellt haben. Implementieren Sie bei Bedarf Fehlerwiederherstellungsmechanismen Fügen Sie den Analysealgorithmen Funktionen hinzu, um einen Baum zum Berechnen von Funktionen und Klassenmethoden zu erstellen. Mit dem richtigen Aufbau von Parsing-Algorithmen lässt sich diese Funktionalität problemlos implementieren. Dadurch entfällt die Notwendigkeit, es als separates Modul zu implementieren. Die erstellten Datenstrukturen sollten Listen von Befehlen in Form von "flachen" Sequenzen enthalten (arithmetische Ausdrücke, die für die Berechnung auf einer Stapelmaschine in Postfixform erweitert wurden, Schleifen, die in Kombinationen von Sequenzen von Berechnungsbefehlen und bedingten oder unbedingten Sprüngen umgewandelt wurden usw.).

Schritt 5

Erstellen Sie bei Bedarf ein Optimierungsmodul. Es sollte die im vorherigen Schritt vorbereiteten Datenstrukturen verarbeiten und transformieren. Optimierungsalgorithmen und -methoden sind sehr vielfältig.

Schritt 6

Entwickeln Sie einen Codegenerator. Bei der Verarbeitung der im vierten oder fünften Schritt vorbereiteten Strukturen sollte es einfach die Folgen abstrakter Anweisungen in Anweisungen zur Ausführung auf einer bestimmten Plattform umwandeln.

Schritt 7

Erstellen Sie bei Bedarf ein Bindeprogramm (Linker). Es sollte das resultierende ausführbare Modul bilden, indem es die Position der Codesegmente wählt, die Adressen der Labels berechnet usw.

Empfohlen: