1. Adventsüberraschung: 10% Rabatt auf alle Filme! Jetzt mehr erfahren.
Willkommen, schön sind Sie da!
Logo Ex Libris

Übersetzerbau

  • E-Book (pdf)
  • 608 Seiten
(0) Erste Bewertung abgeben
Bewertungen
(0)
(0)
(0)
(0)
(0)
Alle Bewertungen ansehen
Dieses Buch vermittelt Studenten der Informatik Fundament und Rüstzeug des Übersetzerbaus für imperative, funktionale und logische... Weiterlesen
CHF 50.00
Download steht sofort bereit
Informationen zu E-Books
E-Books eignen sich auch für mobile Geräte (sehen Sie dazu die Anleitungen).
E-Books von Ex Libris sind mit Adobe DRM kopiergeschützt: Erfahren Sie mehr.
Weitere Informationen finden Sie hier.
Bestellung & Lieferung in eine Filiale möglich

Beschreibung

Dieses Buch vermittelt Studenten der Informatik Fundament und Rüstzeug des Übersetzerbaus für imperative, funktionale und logische Programmiersprachen. Die ersten vier Kapitel führen in die Thematik und die theoretischen Grundlagen ein. In den weiteren sieben Kapiteln werden konstruktive Verfahren zur automatischen Erzeugung von lexikalischen, syntaktischen und semantischen Analysatoren und von Codeerzeugern vorgestellt. Neben der Übersetzung konventioneller, imperativer Programmiersprachen, wie Fortran, Pascal und C, werden auch die Klassen der funktionalen und der logischen Programmiersprachen mit Lisp und Miranda bzw. Prolog als prominenten Vertretern erfaßt. Bei der automatischen Codeerzeugung finden moderne parallele Zielarchitekturen gebührende Berücksichtigung. Die statische Analyse von Programmen, die für die Unterstützung des Softwareentwicklungsprozesses im allgemeinen ebenso wichtig ist wie hier für die Erzeugung effizienter Zielprogramme, wird semantisch fundiert. Die erforderlichen Grundkenntnisse aus der Theorie der formalen Sprachen und Automaten werden hergeleitet. Zahlreiche Aufgaben ermöglichen eine gründliche Einübung der Lehrinhalte. Das Buch eignet sich zum Gebrauch für ein- oder zweisemestrige Vorlesungen ebenso wie zum Selbststudium.

Inhalt
1 Einleitung.- 1.1 Höhere Programmiersprachen.- 1.2 Implementierung von Programmiersprachen.- 1.2.1 Interpreter.- 1.2.2 Übersetzer.- 1.2.3 Reale und abstrakte Maschinen.- 2 Übersetzung imperativer Programmiersprachen.- 2.1 Sprachkonzepte und ihre Übersetzung.- 2.2 Die Architektur der P-Maschine.- 2.3 Wertzuweisungen und Ausdrücke.- 2.4 Bedingte und iterative Anweisungen, Anweisungsfolgen.- 2.5 Speicherbelegung für Variablen einfachen Typs.- 2.6 Speicherbelegung für Felder.- 2.6.1 Statische Felder.- 2.6.2 Dynamische Felder.- 2.7 Speicherbelegung für Verbunde.- 2.8 Zeiger und dynamische Speicherbelegung.- 2.9 Prozeduren.- 2.9.1 Speicherorganisation für Prozeduren.- 2.9.2 Adressierung von Variablen.- 2.9.3 Berechnung der Adreßumgebungen.- 2.9.4 Prozedureintritt und Prozedurverlassen.- 2.9.5 Parameterübergabe.- 2.9.6 Zugriff auf Variablen und formale Parameter.- 2.9.7 Formale Prozeduren als Parameter.- 2.10 Hauptprogramm.- 2.11 Übungen.- 2.12 Literaturhinweise.- 3 Übersetzung funktionaler Programmiersprachen.- 3.1 Sprachtyp und einleitendes Beispiel.- 3.2 LaMa, eine einfache funktionale Programmiersprache.- 3.3 Einführung in die Übersetzung von LaMa.- 3.3.1 Die Übersetzungsfunktionen.- 3.4 Umgebungen und Bindungen.- 3.5 Die Architektur der MaMa.- 3.5.1 Der Keller der MaMa.- 3.5.2 Die Halde der MaMa.- 3.6 Kellerverwaltung und Adressierung.- 3.6.1 Adressierung von Namen in der MaMa.- 3.6.2 Aufbau von Bindungen.- 3.7 Befehlsvorrat und Übersetzung.- 3.7.1 Programmausdrücke.- 3.7.2 Einfache Ausdrücke.- 3.7.3 Angewandte Vorkommen von Variablen.- 3.7.4 Funktionsdefinitionen.- 3.7.5 Funktionsanwendungen.- 3.7.6 Aufbau und Auswertung von Abschlüssen.- 3.7.7 Letrec-Ausdrücke und lokale Variablen.- 3.8 Implementierung von Listen.- 3.9 Übungen.- 3.10 Literaturhinweise.- 4 Übersetzung logischer Programmiersprachen.- 4.1 Logische Programmiersprachen.- 4.2 Prädikatenlogische Grundlagen.- 4.3 Unifikation.- 4.4 Ausführung von logischen Programmen.- 4.5 Prolog.- 4.5.1 Beweisbäume.- 4.5.2 Umgebungen.- 4.6 Prolog: Abstrakte Maschine und Übersetzung.- 4.6.1 Entwicklung der Prolog Implementierung.- 4.6.2 Die Architektur der WiM.- 4.7 Übersetzung von Prolog.- 4.7.1 Ziele.- 4.7.2 Kopfterme.- 4.7.3 Übersetzung von Klauseln.- 4.7.4 Zurücksetzen (Backtracking).- 4.7.5 Prozeduren, Programme und Anfragen.- 4.7.6 Ein Beispiel.- 4.8 Effizienzverbesserungen.- 4.8.1 Argumentregister.- 4.8.2 Rücksetzrahmen.- 4.8.3 Verkleinerung der lokalen Umgebung.- 4.8.4 Letztes Ziel und Endrekursion.- 4.8.5 Indizieren von Klauseln.- 4.9 Übungen.- 4.10 Literaturhinweise.- 5 Struktur von Übersetzern.- 5.1 Übersetzerteilaufgaben.- 5.2 Die lexikalische Analyse.- 5.3 Der Sieber.- 5.4 Die syntaktische Analyse.- 5.5 Die semantische Analyse.- 5.6 Die maschinenunabhängige Optimierung.- 5.7 Die Adreßzuordnung.- 5.8 Die Erzeugung des Zielprogramms.- 5.9 Die maschinenabhängige Codeverbesserung.- 5.10 Reale Übersetzerstrukturen.- 5.11 Formale Spezifikation und Generierung von Übersetzermoduln.- 5.12 Literaturhinweise.- 6 Lexikalische Analyse.- 6.1 Die Aufgabe der lexikalischen Analyse.- 6.2 Theoretische Grundlagen.- 6.3 Sprache zur Spezifikation der lexikalischen Analyse.- 6.3.1 Zeichenklassen.- 6.3.2 Folgen von regulären Definitionen.- 6.3.3 Nichtrekursive Klammerung.- 6.4 Die Generierung eines Scanners.- 6.4.1 Zeichenklassen.- 6.4.2 Folgen von regulären Definitionen.- 6.4.3 Implementierung des allbut-Konstrukts.- 6.4.4 Die Darstellung eines Scanners.- 6.5 Der Sieber.- 6.5.1 Die Erkennung von Schlüsselwörtern.- 6.5.2 Scanner mit Aufrufschnittstelle zum Sieber.- 6.5.3 Symbolklassen.- 6.6 Übungen.- 6.7 Literaturhinweise.- 7 Syntaktische Analyse.- 7.1 Die Aufgabe der syntaktischen Analyse.- 7.2 Theoretische Grundlagen.- 7.2.1 Kontextfreie Grammatiken.- 7.2.2 Kellerautomaten.- 7.2.3 Der Item-Kellerautomat einer kontextfreien Grammatik.- 7.2.4 Grammatikflußanalyse.- 7.2.5 Einige Begriffe und Fakten aus der Verbandstheorie.- 7.2.6 Effizientere Analyse auf dem Grammatikgraphen.- 7.2.7 Ein lineares Verfahren.- 7.2.8 FIRST und FOLLOW.- 7.2.9 Der Spezialfall FIRST1. und FOLLOW1.- 7.2.10 Reine Vereinigungsprobleme.- 7.3 Top down-Syntaxanalyse.- 7.3.1 Einführung.- 7.3.2 Top down-Syntaxanalyse mit Zurücksetzen in Prolog.- 7.3.3 LL(k): Definition, Beispiele, Eigenschaften.- 7.3.4 (Starke) LL(k)-Parser.- 7.3.5 LL-Parser für erweiterte kontextfreie Grammatiken.- 7.3.6 Fehlerbehandlung in LL(k)-Parsern.- 7.4 Bottom up-Syntaxanalyse.- 7.4.1 Einführung.- 7.4.2 Bottom up-Analyse mit Zurücksetzen in Prolog.- 7.4.3 LR(k)-Analysatoren.- 7.4.4 LR(k): Definition, Eigenschaften, Beispiele.- 7.4.5 LR(k)-Parser.- 7.4.6 Fehlerbehandlung in LR-Parsern.- 7.4.7 Scannergenerierung mit LR-Techniken.- 7.5 Übungen.- 7.6 Literaturhinweise.- 8 Semantische Analyse.- 8.1 Aufgabe der semantischen Analyse.- 8.1.1 Gültigkeits- und Sichtbarkeitsregeln.- 8.1.2 Überprüfung der Kontextbedingungen.- 8.1.3 Überladung von Bezeichnern.- 8.1.4 Polymorphismus.- 8.2 Attributgrammatiken.- 8.2.1 Die Semantik einer Attributgrammatik.- 8.2.2 Eine Notation für Attributgrammatiken.- 8.3 Einige Attributgrammatiken.- 8.4 Die Generierung von Attributauswertern.- 8.4.1 Attributabhängigkeiten.- 8.4.2 Attributauswertung.- 8.4.3 Besuchsorientierte Auswerter.- 8.4.4 l-geordnete Attributgrammatiken.- 8.4.5 Absolut zyklenfreie Attributgrammatiken.- 8.4.6 Parsergesteuerte Attributauswertung.- 8.5 Übungen.- 8.6 Literaturhinweise.- 9 Abstrakte Interpretation.- 9.1 Einführung.- 9.1.1 Beispiel 1: Rechnen mit Resten.- 9.1.2 Beispiel 2: Neunerprobe.- 9.1.3 Beispiel 3:Vorzeichenregeln.- 9.1.4 Bestandteile einer abstrakten Interpretation.- 9.1.5 Denotationell basierte abstrakte Interpretation.- 9.1.6 Operationell basierte abstrakte Interpretation.- 9.2 Grundlagen.- 9.2.1 Algebren.- 9.2.2 Partielle Ordnungen, Verbände.- 9.3 Abstrakte Interpretation (denotationelle Semantik).- 9.3.1 Die denotationelle Methode.- 9.3.2 Grundprinzip der abstrakten Interpretation.- 9.3.3 Konstruktion abstrakter Interpretationen.- 9.3.4 Verwendung von Hilfssemantiken.- 9.3.5 Fallbeispiel: Striktheitsanalyse.- 9.4 Abstrakte Interpretation (operationelle Semantik).- 9.4.1 Die operationelle Methode.- 9.4.2 Grundprinzip der abstrakten Interpretation.- 9.4.3 Konstruktion abstrakter Interpretationen.- 9.4.4 Verwendung von Hilfssemantiken.- 9.5 Übungen.- 9.6 Literaturhinweise.- 10 Bäume: Mustererkennung und Analyse.- 10.1 Programmtransformationen.- 10.1.1 Effizienzsteigernde Programmtransformationen.- 10.1.2 Standardisierende Transformationen.- 10.2 Codeselektion.- 10.3 Das Mustererkennungsproblem.- 10.4 Das Baumanalyseproblem.- 10.5 Endliche Baumautomaten.- 10.6 Die Generierung von Baumanalysatoren.- 10.7 Baumautomaten mit Kosten.- 10.8 Implementierung.- 10.9 Übungen.- 10.10 Literaturhinweise.- 11 Codeerzeugung.- 11.1 Abstrakte und reale Maschinen.- 11.1.1 Sprachspezifische abstrakte Maschinen.- 11.1.2 Universelle reale Maschinen.- 11.1.3 Codeerzeugung für abstrakte und reale Maschinen.- 11.2 Klassifikation von Architekturen.- 11.2.1 CISC (Complex Instruction Set Computer).- 11.2.2 RISC (Reduced Instruction Set Computer).- 11.2.3 Intraprozessorparallelität.- 11.3 Programmdarstellungen.- 11.4 Codeerzeugung, integrierte Verfahren.- 11.4.1 Optimale Auswertungsordnung.- 11.4.2 Dynamisches Programmieren.- 11.5 Registerzuteilung durch Graphfärbung.- 11.6 Instruktionsanordnung.- 11.6.1 Abhängigkeitsgraphen für Basisblöcke.- 11.6.2 Befehlsfließband.- 11.6.3 Lange Befehlswörter.- 11.6.4 Realistische VLIW-Rechner.- 11.7 Übungen.- 11.8 Literaturhinweise.- Literatur.

Produktinformationen

Titel: Übersetzerbau
Untertitel: Theorie, Konstruktion, Generierung
Autor:
EAN: 9783662000779
Format: E-Book (pdf)
Hersteller: Springer Berlin
Genre: Sonstiges
Veröffentlichung: 13.03.2013
Digitaler Kopierschutz: Wasserzeichen
Anzahl Seiten: 608
Auflage: 1992

Weitere Bände aus der Buchreihe "Springer-Lehrbuch"