Sprachübersetzung Flashcards
(9 cards)
Ablauf
Lexikalische Analyse
Syntaxanalyse
Semqntische Analyse
(Code-Optimierung)
Codegenerierung
Programmiersprachen
- notationelles System zur Beschreibung von Berechnungen in durch Maschinen und Menschen lesbare Form
- Berechnung: Nachweis der Berechenbarkeit z.B durch die Turing-Maschine
- Maschinenlesbareit: Eindeutige Übersetzung mit vertretbarer Komplexität
- Lesbarkeit durch Menschen
Kontextfreie Grammatik
- Menge grammatischer Regeln
- Nichtterminalsymbole (Namen für Strukturen)
-Terminalsymbole (Token) - Produktionen (Regeln)
Interpreter
Liest Zeiefür Zeile und führt Code aus
Eingabe > Interpreter > Ausgabe
Compilieren
Compiler: Aus Quellcode Zielprogramm (Assemblerprogramm)
Assembler: Zielcode in Objektcode
Linker: Objektcode in ausführbaren Code (mit anderen Objektprogrammen verbunden und in passende Speicherstellen geladen)
Lexikalische Analyse
SCANNER
E: Quellprogramm in Form einer Zeichenkette
A: Programm aus Folge von Token (Folge von Zeichen, die bedeutungsgemäß zusammengehören, Identifikatoren, Zahlen, Sondersymbole), Anlegung Identifikationstabellen
Aufgaben:
- Überprüfung, ob alle Zeichen aus Quellsprache sind
- Erkennung Token
- Entfernung irrelevanter Zeichenfolgen (Kommentare, Leerzeichen,…)
Fehler: ungültige Zeichen
Syntaxanalyse
PARSER
E: Tokenreihe
A: Zeichenreihe von E, Ableitunsbaum des Programms
Aufgabe: Überprüfung strukturelle Korrektheit eines Programms
Fahler: fehlende Token, verstümmelte Ausdrücke
Semantische Analyse
PARSER
E: Ableitungsbaum
A: Attributierter abstrakter Baum + Informationen für Codegenerierung und Optimierung
Aufgabe: Überprüfungen Kontextbedingungen (Programm übersetzbar?)
Fehler:
- statisch (unverträgliche Datentypen, nicht deklarierte Variablen)
- dynamisch (Bereichsüberschreitungen, Division durch 0)
Codeerzeugung
Ziel:
- Datenelementen wird Hauptspeicherplatz zugewiesen
- für jedes syntaktische Element machinensprachliche Anweisungen
1. Stufe: Aufbau Symboltabelle
> Name
> Typ
> Hauptspeicheradresse
- Stufe: Erzeugung Maschinencode
> für jedes syntaktische Element durch Codegenerator