Nächste Seite:
Einleitung
Compilerbau
Vorlesung
Wintersemester 2007
Johannes Waldmann, HTWK Leipzig
Einleitung
Literatur
Inhalt
Sprachverarbeitung
Compiler und andere Werkzeuge
Phasen eines Compilers
Methoden und Modelle
Anwendungen von Techniken des Compilerbaus
Ein einfacher Übersetzer
Überblick
Beispiel
Aufbau
Gliederung
Syntax-Definition
Top-Down parsing
Linksrekursion
Linksrekursion (II)
Lexikalische Analyse
Symboltabellen
Semantik
L/R-Values
Lexikalische Analyse
Daten-Repräsentation im Compiler
Token-Typen
Scanner mit Flex
Reguläre Ausdrücke/Sprachen
Reguläre Ausdrücke
Beispiele/Aufgaben zu regulären Ausdrücken
Endliche Automaten
Rechnungen und Sprachen von Automaten
Anwendung von Automaten in Compilern
Automaten mit Epsilon-Übergängen
Automaten-Synthese
Automaten-Synthese (II)
Reduzierte Automaten
Deteministische Automaten
Potenzmengen-Konstruktion
Minimierung von det. Aut. (I)
Minimierung von det. Aut. (II)
Nicht reguläre Sprachen
Die Nerode-Kongruenz (I)
Die Nerode-Kongruenz (II)
Endliche Automaten als Scanner
Automaten als Scanner (II)
Komprimierte Automatentabellen
String matching
Aufgabenstellung
Triviale Lösung
Knuth-Morris-Pratt
KMP-Failure-Function
Boyer-Moore
Bad-Character-Heuristik
Good-Suffix-Heuristik
Syntaktische Analyse
Keller-Automaten
Keller-Automaten
Keller-Automaten (II)
Beispiel Kellerautomat
Sprachen von Keller-Automaten
Keller-Automaten-Sprachen und CFG
LL
(
k
)
-Grammatiken
LR-Parsing
LR-Items
LR
(
k
)
-Grammatiken
Operator-Präzedenz-Parser
Top-Down/Bottom-Up
Top-Down/Bottom-Up und Eindeutigkeit
Synt. Analyse mit Tools
Vorlesung
Parser-Generator bison
Flex-Bison-Beispiel
Yacc-Grammatiken
Fehlerbehandlung
Symbole und -Tabellen
Unions in semantischen Werten
Übung
Übung zu Bison
Bison-Übung (II)
Syntaktische Analyse mit SableCC
SableCC
Eine SableCC-Eingabe
Annotierte Grammatiken
Durchlaufen von Syntaxbäumen
Aufruf eines SableCC-Parsers
Attribut-Grammatiken
CST zu AST
Übung SableCC
SableCC-Aufgaben
Domainspezifische Sprachen
Einleitung
Eingebettete DSL
Beispiel: Java-Parsec
Beispiel: Java-Parsec
(Geschachtelte) Funktionen
Motivation
Frames, Ketten
Unterprogramme als Argumente
Unterprogramme als Resultate
Lokale Klassen
Unterprogramme/Zusammenfassung
Code-Generierung und -Optimierung
Compiler-Phasen
Zwischencode-Generierung
Common Subexpression Elimination -- CSE
Constant Propagation
Constant Folding, Strength Reduction
<
Code-Transformationen
Einfacher Matrix-Zugriff
Constant folding
strength reduction
Rückgabe
Stack-Frames
Schleifen, Code-Verschiebung
Arithmetische Umformungen
Mehr Schleifen
Daten-Fluß-Analyse
Datenfluß (II)
Linearisieren
Registervergabe
Register-Interferenz-Graph
Register-Graphen-Färbung (Heuristik)
Seminar: Registervergabe
Peephole-Optimierung, Instruction Selection
Einzelheiten zu gcc
Compilerbau und Komplexität
Grundsätzliches
Schwere Aufgaben für Compiler/Werkzeuge (Bsp 1)
Schwere Aufgaben für Compiler (Bsp 2)
Schwere Aufgaben für Compiler (mehr Bsp)
Registervergabe
3COL - Hausaufgabe
Färbung (Heuristik)
Typprüfung/Inferenz
Typprüfung/Inferenz (Beispiel)
Über dieses Dokument ...
Johannes Waldmann 2008-01-24