Compilerbau mit Java

Einleitung

Eine immer grössere Anzahl Entwicklungumgebungen (IDE) bieten mächtige Pattern Matching und Language Processing Werkzeuge an. Diese sollen dem EntwicklerIn die Programmierarbeit erleichtern. Beispiele solcher Arbeiten sind: Automatisch Anweisungen umkodieren, Kommandosprache analysieren, gezielte Programminformationen extrahieren, Datenübermittlungsprotokollen verarbeiten, usw...

Diese Werkzeuge hiessen awk, perl, lex und yacc in der Vergangenheit. Heute sind auch mächtigere Parsing Maschinen wie JavaCC, ANTLR und Spirit frei verfügbar. Wer diese Werkzeuge beherrscht, kann einen echten Produktivitätsgewinn erwarten. Nur ist die Lernkurve leider ziemlich steil.

Die Konzepte auf denen diese Werkzeuge basieren sind eng mit der Compilerbautheorie verbunden.

Dieser Kurs präsentiert die im Compilerbau angewendeten Konzepte und zeigt, wie man sie praktisch implementieren kann. Als Beispiel wird die Formelsprache Calcula "von Hand" und mit verschiedenen Werkzeugen verarbeitet.

Das Compilerdesign wird mit UML-Diagramms vorgestellt. Die Implementation basiert auf 5 verschiedenen Design Pattern und ist vollständig in Java realisiert.

Kursablauf: jeden Tag zuerst 4 Stunden Theorie und danach 4 Stunden Praxis mit Übungen. Diese werden auf PC unter Windows durchgeführt, aber können ohne weiteres auf Linux gemacht werden.

Eine CD mit Dokumentation und Source Code wird verteilt. Für alle Programmbeispiele sind die Listings vorhanden.

Tag 1

Präsentation der allgemeinen Phasen eines Compilers. Als Beispiel wird ein Interpreter für die Formelsprache Calcula vorgestellt.

Inhalt

Tag 2

Präsentation der Compilergeneratoren, Theorie und verschiede Werkzeuge, unter anderem JavaCC und ANTLR. Als Beispiel wird der Calcula Interpreter mit diesen Werkzeugen neu verarbeitet.

Inhalt

Tag 3

Codeerzeugung für die Java Virtual Machine (JVM). Spezifikation der JVM und Präsentation eines Codegenerierungsschemas für Calcula. Es wird kein Byte-Code direkt erzeugt, sondern Oolong Code, ein Java Assembler, das danach selber den Byte-code generiert.

Inhalt

Kursablauf (pro Tag)

Zuerst 4 Stunden Theorie und danach 4 Stunden Praxis mit Übungen. Diese werden auf PC unter Windows durchgeführt, aber können ohne weiteres auf Linux gemacht werden.

Voraussetzung

Die Beherrschung einer modernen objektorientierten Programmiersprache ist nötig. Java wird aber nicht vorausgesetzt, obwohl dieser Kurs keine Java Einführung ist.

Bemerkungen

Der Kurs wird auf deutsch gehalten. Die Folien sind auf englisch und Kopien werden am ersten Tag verteilt. Alle Übungen werden im Rahmen des Kurses durchgeführt und korrigiert.

In einem weiteren Kurs wird die Struktur und die Codegenerierung eines existierenden C-Compilers studiert.

Copyright 2006 Gilles Maitre, Bern