U. Kastens, Übersetzerbau / Inhalt
Handbuch der Informatik 3.3
Oldenbourg, 1990
- 1.
- Einführung
- 1.1
- Von der Quellsprache zur Zielmaschine
- 1.2
- Eigenschaften der Quellsprache
- 1.2.1
- Notation der Grundsymbole
- 1.2.2
- Syntaktische Struktur
- 1.2.3
- Kontextabhängigkeiten (statische Semantik)
- 1.2.4
- Bedeutung (dynamische Semantik)
- 1.3
- Eigenschaften der Zielmaschine
- 2.
- Übersetzerstruktur und Schnittstellen
- 2.1
- Aufgabenorientierte Übersetzerstruktur
- 2.1.1
- Analyse
- 2.1.2
- Abstrakte Maschine, Zwischensprache
- 2.1.3
- Synthese
- 2.2
- Schnittstellen
- 2.2.1
- Filter
- 2.2.2
- Datenmodule
- 2.2.3
- Übersetzerpässe
- 2.3
- Portierung von Übersetzern
- 2.4
- Übersetzerumgebung
- 2.5
- Übersetzergeneratoren
- 3.
- Lexikalische Analyse
- 3.1
- Spezifikation von Grundsymbolen
- 3.2
- Konstruktion endlicher Automaten
- 3.3
- Implementierung der Lexikalischen Analyse
- 3.3.1
- Rahmen und Schnittstellen
- 3.3.2
- Implementierung des endlichen Automaten
- 3.4
- Generatoren
- 4.
- Syntaktische Analyse
- 4.1
- Kontextfreie Grammatiken, abstrakte und konkrete Syntax
- 4.2
- Zielbezogene Zerteiler
- 4.3
- Quellbezogene Zerteiler
- 4.4
- Behandlung syntaktischer Fehler
- 4.5
- Zerteiler-Generatoren
- 5.
- Attributierte Grammatiken
- 5.1
- Definition und Beispiel
- 5.2
- Konstruktion von Attributauswertern
- 5.2.1
- Abhängigkeitsgraphen und Zerlegungen
- 5.2.2
- Besuchssequenzen
- 5.2.3
- LAG - Attributauswerter
- 5.3
- Implementierung von Attributauswertern
- 5.4
- Generatoren für Attributauswerter
- 6.
- Semantische Analyse
- 6.1
- Typprüfung
- 6.2
- Bezeichneridentifikation
- 6.2.1
- Attributierung von Gültigkeitsbereichen
- 6.2.2
- Implementierung der Bezeichneridentifikation
- 6.3
- Fehlerbehandlung
- 6.4
- Zwischen-Code-Erzeugung
- 7.
- Code-Erzeugung
- 7.1
- Eigenschaften der Zielmaschine
- 7.1.1
- Speicherklassen
- 7.1.2
- Operanden und Adressierungsarten
- 7.1.3
- Instruktionen
- 7.2
- Speicherabbildung
- 7.2.1
- Datentypen
- 7.2.2
- Maschinenzustand
- 7.3
- Abbildung der Operationen
- 7.3.1
- Prozeduraufrufe
- 7.3.2
- Ablaufstrukturen
- 7.3.3
- Kurzauswertung logischer Ausdrück
- 7.3.4
- Ausdrücke
- 7.4
- Code-Auswahl
- 7.4.1
- Ausdrucksbäume
- 7.4.2
- Ablaufstrukturen
- 7.4.3
- Generatoren zur Code-Auswahl
- 7.5
- Registerzuteilung
- 7.5.1
- Registerzuteilung in einem Durchgang
- 7.5.2
- Registerzuteilung für Grundblöcke in zwei Durchgängen
- 7.5.3
- Optimale Registerzuteilung für Ausdrucksbäume
- 7.5.4
- Registerzuteilung durch Graphfärbung
- 7.6
- Assemblierung
- 7.6.1
- Formatierung der Instruktionen
- 7.6.2
- Sprungadressierung
- 7.6.3
- Code-Datei
- 8.
- Optimierung
- 8.1
- Verbessernde Transformationen in Grundblöcken
- 8.1.1
- Konstantenfaltung und algebraische Vereinfachung
- 8.1.2
- Eliminieren von Bereichsprüfungen
- 8.1.3
- Gemeinsame Teilausdrücke
- 8.1.4
- Überflüssige Zuweisungen
- 8.2
- Datenflußanalyse
- 8.2.1
- Ablaufgraphen
- 8.2.2
- Schleifenerkennung
- 8.2.3
- Code-Verschiebung aus Schleifen
- 8.2.4
- Datenflußgleichungen
- 8.2.5
- Iteratives Lösungsverfahren
- 8.2.6
- Hierarchische Lösungsverfahren
- 8.3
- Anwendungen der Datenflußinformation
- 8.3.1
- Erreichende Definitionen
- 8.3.2
- Globale gemeinsame Ausdrücke
- 8.3.3
- Lebendige Variable
- 8.3.4
- Redundante Berechnungen in Schleifen
- 8.3.5
- Aliasnamen
- 8.3.6
- Prozeduren
- 8.4
- Nachoptimierung
- 8.5
- Anordnung von Instruktionen
- 8.5.1
- Parallele Funktionseinheiten
- 8.5.2
- Fließbandverarbeitung
- Anhang
- 1.
- Literaturhinweise
- 2.
- Literaturverzeichnis