Copyright © 1998, 1999 by Axel T. Schreiner. All Rights Reserved.

Compilerbau mit Java

Axel-Tobias Schreiner, Fachbereich Mathematik-Informatik, Universität Osnabrück.

Eine Einführung in Compilerbau mit Java.

Vorlesung im Wintersemester 1998/1999.

Von hier aus sind Kopien der OH-Folien des Skripts, der Java-Dokumentation von Sun sowie die Programmbeispiele erreichbar, die in der Vorlesung verwendet werden. Die Texte sind kein komplettes Manuskript der Vorlesung. Zum Selbststudium müßten zusätzlich Bücher über Compilerbau, objekt-orientierte Programmierung und Java konsultiert werden.

aufgaben

Jede Woche gibt es ein Aufgabenblatt. Sollte es nicht selbständig gelöst werden, könnte eine Klausur folgen...

code

Die Programmbeispiele sind parallel zu den Kapiteln der Vorlesung in Katalogen zusammengefaßt.

ftp

Archivierte Kopien der Programmbeispiele, Dokumentation und OH-Folien sowie Entwicklungssysteme, verschiedene Betrachter und ähnliche Werkzeuge können nur im Netz der Universität Osnabrück per File-Transfer-Protokoll abgeholt werden.

html

In diesem Bereich sind die OH-Folien des Skripts und die Dokumentation des JDK (1.1.6) zu finden.

pdf

Das Material aus dem html-Bereich wurde mit Adobe Acrobat in das Portable Document Format gewandelt und mit einem Index versehen. Das Format eignet sich primär zum Drucken und unter Windows auch zur lokalen Volltextsuche.

Je nach Plattform sind dafür spezielle Betrachter erforderlich, die zuvor installiert werden müssen. Betrachter für Windows und Linux befinden sich auch im ftp-Bereich.

Da der Acrobat Reader speziell zu PostScript-Druckern anscheinend nicht immer korrekt ausgibt, befinden sich in diesem Bereich auch PostScript-Dateien.

Java im Lehre-Netz der Osnabrücker Informatik

Für diese Vorlesung sollten die schwarzen NeXT-Rechner in den Rämen 433 und 435 zum Editieren verwendet werden. Alternativ dürfen auch die Linux-Systeme im Raum 339a benutzt werden, wenn sie nicht von Studenten der Vorlesung Informatik A belegt sind.

Das JDK 1.1.6 kann remote auf den Linux-Systemen (apollo, ares, athene, demeter, erebos, gaia, hades, hebe, helios, hermes, hestia, iris, kronos, leto, maia, nereus, nyx, pan, rhea und theia) eingesetzt werden. /usr/local/java/bin wird in den Pfad aufgenommen, wenn in ~/.profile ein Eintrag Java existiert. Die Kommandos heißen auf allen Rechnern java und javac.

Das JDK 1.2 steht remote auf zeus unter Solaris bereit, allerdings in /usr/java1.2 und /usr/demo/JAVA1.2.

Termine 1998/1999

Vorlesung Dienstag, 10:15 31/449a Schreiner
Donnerstag, 10:15
Übungen Montag, 10:15 31/449a Kühl
Sprechstunde Donnerstag ab 15:00 n.V. 31/321 Schreiner
Dienstag 14-16 oder n.V. 31/318a Kühl

Kalender 1998/1999

Oktober13 Übersicht, Literatur, Ziele und Begriffe, Syntaxgraphen, Rekursiver Abstieg
15 BNF, EBNF, Bäume, Rekursiver Abstieg
20 StreamTokenizer als Scanner, Laufzeitsystem, Persistenz
22 LL(1), JavaCC
27 JJTree, LR(0) Algorithmus
29 jay Parser-Architektur
November3 jay Ablauf, Fehlerbehandlung, Konflikte, cup Grammatik,
5 jay Beispiele zu Ablaufverfolgung, Animation, Fehlerbehandlung, Konflikte, cup Architektur
10 cup Details, jlex Prinzip, Filterprogramme
12 jay Korrektur: Etiketten als Klassennamen, jlex Scanner, oops: Architektur
17 oops: Benutzung; lookahead und follow
19 oops: LL(1) Prüfung
24 jag
26 jag: Implementierung der Aktionen, Code-Generierung für 0- bis 2-Adreß-Maschinen
Dezember1 Code-Generierung für 2- und 3-Adreß- und Register-Maschinen
3 Code-Generierung für Register-Maschinen: Registerverwaltung, Triple-Coding durch Konstruktor-Aufrufe
8 Reguläre Ausdrücke; Ein einfacher Compiler: Sprachbeschreibung, Grammatik
10 Ein einfacher Compiler: Lexikalische Analyse, Syntax-Analyse, Semantik-Analyse
15 Ein einfacher Compiler: Interpretation Code-Generierung: Dump, C-Code
17 Ein einfacher Compiler: Code-Generierung
Januar12 Code-Generierung für Kontrollstrukturen, mixed: mixed-mode Arithmetik, CompilerKit: schrittweise Entwicklung, Laufzeitsystem
14 CompilerKit: Laufzeitsystem, Semantikanalyse, Design-Prinzipien, Konstruktion des Parse-Baums
19 Semantikanalyse: Parse-Baum, sem(), Walkthrough zu sem()
21 Semantikanalyse: Walkthrough zu sem() , mixed: Parser
26 mixed: Parser, Quellpositionen, CompilerKit: Klassenhierarchie, Methoden
28 mixed: Ausbau auf mixed mode, RE-Strukturen, proc: Sprachdefinition, Realisierung von return
Februar2 proc: Interpreter, Parse-Baum
4 proc: Semantikanalyse, Speichermodelle für verschiedene Sprachen
9 block: Sprachdefinition und Beispiele, Implementierung des Algol-Speichermodells, rudimentärer Compiler
11 block: Parse-Baum, Implementierung der Geltungsbereiche; Kritik und Anregungen