Grundlagen des Übersetzerbaus - Cheatsheet.pdf

Grundlagen des Übersetzerbaus - Cheatsheet
Grundlagen des Übersetzerbaus - Cheatsheet Tokenisierung des Quellcodes und Reguläre Ausdrücke Definition: Tokenisierung teilt Quellcode in kleinere Einheiten (Tokens) auf. Reguläre Ausdrücke werden verwendet, um Muster in Texten zu erkennen und zu manipulieren. Details: Token: kleinste bedeutungsvolle Einheit Lexikalische Analyse: erster Schritt des Compilervorgangs Reguläre Ausdruck: benutzt syn...

© StudySmarter 2024, all rights reserved.

Grundlagen des Übersetzerbaus - Cheatsheet

Tokenisierung des Quellcodes und Reguläre Ausdrücke

Definition:

Tokenisierung teilt Quellcode in kleinere Einheiten (Tokens) auf. Reguläre Ausdrücke werden verwendet, um Muster in Texten zu erkennen und zu manipulieren.

Details:

  • Token: kleinste bedeutungsvolle Einheit
  • Lexikalische Analyse: erster Schritt des Compilervorgangs
  • Reguläre Ausdruck: benutzt syntaktische Regeln zur Mustererkennung
  • Grammatik: formale Beschreibung von Syntaxregeln
  • Beispiel für Tokenisierung: Schlüsselwörter, Bezeichner, Literale
  • Regex: gängige Operatoren (*, +, ?, {n}, [abc], etc.)

Top-Down und Bottom-Up Parsing Techniken (LL- und LR-Parser)

Definition:

Top-Down und Bottom-Up Parsing sind Techniken für die syntaktische Analyse. LL-Parser arbeiten von links nach rechts und konstruieren die linke Ableitung, während LR-Parser die rechte Ableitung konstruieren.

Details:

  • Top-Down Parsing: Analysiert die Eingabe ab der Wurzel des Ableitungsbaums (z.B. LL-Parser)
  • Bottom-Up Parsing: Analysiert die Eingabe ab den Blättern hin zur Wurzel (z.B. LR-Parser)
  • LL-Parser: Steht für Left-to-right, Leftmost derivation (k-Präsizion)
  • LL(k)-Parser: Liest die Eingabe von links nach rechts und konstruiert die linke Ableitung mit k-Vorrausschau
  • LR-Parser: Steht für Left-to-right, Rightmost derivation
  • LR(k)-Parser: Liest die Eingabe von links nach rechts und konstruiert die rechte Ableitung mit k-Vorrausschau
  • Wichtige Arten von LR-Parsern: SLR(1), LALR(1), CLR(1)

Typprüfung, Typinferenz und Attributgrammatiken

Definition:

Typprüfung überprüft, ob Programmausdrücke mit korrekten Datentypen verwendet werden. Typinferenz bestimmt die Typen unbeschrifteter Ausdrücke. Attributgrammatiken beschreiben Kontextbedingungen und Typinformationen in einem Compiler.

Details:

  • Typprüfung: Statisch (zur Compilezeit) oder dynamisch (zur Laufzeit).
  • Typsysteme: Stark/schwach, statisch/dynamisch.
  • Typinferenz: Algorithmen wie Hindley-Milner zur automatischen Typbestimmung.
  • Attributgrammatiken: Zuweisung von Attributen zu Grammatikregeln, Verwendung für Synthese- und Inhärente-Attribute.
  • Beispiel für Attributgrammatik:
P → E { P.typ = E.typ }E → E₁ + E₂ { E.typ = if (E₁.typ == int && E₂.typ == int) then int else error }

Zwischenrepräsentationen (IR) und Maschinencodierung

Definition:

Zwischenrepräsentationen (IR) und Maschinencodierung - essentieller Teil des Übersetzungsvorgangs, wo hochsprachliche Anweisungen in maschinenlesbaren Code umgewandelt werden.

Details:

  • IR: Abstrakte Repräsentation des Programmcodes
  • Maschinencodierung: Übersetzung der IR in den Maschinencode
  • IR-Beispiele: Drei-Adress-Code, SSA
  • IR-Ziele: Optimierung, Portabilität
  • Maschinencodierung nutzt Back-End-Compiler-Phase

Peep-Hole-Optimierung und Schleifen-Optimierungen

Definition:

Kleine, lokal begrenzte Optimierungen in Assembler oder Maschinencode zur Leistungssteigerung.

Details:

  • Werden nach Übersetzung des Programms durchgeführt.
  • Kennzeichen: einfache Mustererkennung und Umwandlung ineffizienter Konstrukte in effizientere.
  • Beispiele: Beseitigung von totem Code, Vereinfachung von Rechenoperationen.
  • \textbf{Schleifen-Optimierungen}: Reduzierung der Berechnungen innerhalb von Schleifen, Schleifenfusion, Schleifenverlagerung.
  • Ziel: Beschleunigung der Schleifen und Reduktion der Schleifen-Overheads.

Kontextfreie Grammatiken und Aufbau von Parsebäumen

Definition:

Kontextfreie Grammatiken definieren durch Produktionsregeln die Syntax einer formalen Sprache. Parsebäume veranschaulichen, wie ein String gemäß diesen Regeln erzeugt wird.

Details:

  • Kontextfreie Grammatik (CFG): Menge von Produktionsregeln
  • Form von Produktionsregel: A → γ, wobei A ein Nichtterminal und γ eine Folge von Terminalen und/oder Nichtterminalen ist
  • Derivationsprozess: Startsymbol → Folge von Terminalsymbolen
  • Parsebaum-Repräsentation: Baumdiagramm, das Ableitungen zeigt
  • Knoten im Parsebaum:
    • Innere Knoten = Nichtterminalsymbole
    • Blätter = Terminalsymbole
  • Sicherstellen von eindeutigen Ableitungen (falls notwendig): LL(1) oder LR(1) Analyseverfahren verwenden
  • Anwendungen: Syntaxprüfung, automatische Übersetzerbau und mehr

Register- und Speicherverwaltung in der Codegenerierung

Definition:

Verwaltung von Registern und Speicher während der Codegenerierung, um Variablen effizient zu speichern und zu laden.

Details:

  • Registerallokation: Zuweisung von Variablen zu Registern.
  • Spill Code: Laden/Speichern von Variablen bei Registermangel.
  • Registerzuweisung: Priorisierung kritischer Variablen.
  • Speicherverwaltung: Organisation und Zugriff auf Hauptspeicher.
  • Register-Zu-Speicher-Optimierungen: Minimiere Speicherzugriffe, maximiere Registernutzung.
  • Lebenszeit-Analyse: Bestimme die Lebensspanne einer Variable für effiziente Nutzung.

Fehlererkennung und -behandlung in allen Analysephasen

Definition:

Identifikation und Behandlung von Fehlern in verschiedenen Phasen der Übersetzungsanalyse (Lexikal-, Syntax-, und Semantikanalyse).

Details:

  • Lexikalische Analyse: Erkennung ungültiger Tokens, z.B. unbekannte Symbole.
  • Syntaxanalyse: Parsen-Fehler identifizieren, z.B. durch unerwartete Token-Sequenzen.
  • Semantische Analyse: Typenfehler und andere semantische Inkonsistenzen erkennen.
  • Fehlerbehandlungsstrategien: Panikmodus, Fehlerproduktion, Vorwärtsprüfung.
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden