Ulrich Helmichs Homepage / Informatik

Jahrgangsstufe 13/1 (siehe auch Abitur)

Compilerbau


Folge 21: Eine Stackmaschine

Zunächst ergänzen wir die Klasse Stack aus der Folge 14 - Abstrakte Datentypen I um einige weitere Funktionen, so dass aus dem einfachen Stack eine Stackmaschine wird, die rechnen kann. Anschließend überlegen wir uns, wie man die Stackmaschine mit Hilfe eines Programmcodes, der in einer Textdatei steht, steuern kann. Nebenbei lernen Sie auch, wie man überhaupt lesend auf eine Textdatei zugreifen kann.

Diese Folge 21 habe ich im  August 2015 völlig neu geschrieben. Die anderen Folgen werden folgen ("pun intended").

Folge 22: Variablenverwaltung

Der Stackinterpreter, den wir uns in Folge 21 zusammengebastelt haben, kann nur einfache arithmetische Ausdrücke berechnen. Was bisher fehlte, sind Variablen, wie wir sie aus anderen Programmiersprachen kennen. Am Ende dieser Folge kann unser Stackinterpreter mit richtigen Variablen rechnen.

Die Folge 22 wurde ebenfalls im August 2015 völlig neu geschrieben.

Folge 23: while-Schleifen

Bisher konnte unser Stackinterpreter nur rein lineare Programm abarbeiten. Wir wollen in dieser Folge den Interpreter dazu bewegen, while-Schleifen abzuarbeiten. Damit sind dann schon größere Berechnungen möglich, z.B. die Summe der Zahlen von 1 bis 10.

Folge 24: ---

freigelassen für spätere Ergänzungen

Folge 25: Was ist ein Compiler?

Ein Compiler ist ein Programm, das einen Text einer Quellsprache (z.B. Java) in einen Text einer Zielsprache (z.B. Maschinencode) übersetzt. Bei dieser Übersetzung arbeitet ein Compiler in mehreren Durchgängen, die in dieser Folge vorgestellt werden. Der erste Abschnitt des Übersetzungsvorgangs ist die lexikalische Analyse, dann folgt die syntaktische Analyse und schließlich die Codeerzeugung.

Folge 26: Einfachste Sprachen

Wie kann man einen Bezeichner, eine int-Zahl, eine double-Zahl etc. eigentlich erkennen und auf lexikalische Korrektheit überprüfen? Hier wird das Konzept der Determinierten Endlichen Automaten vorgestellt, die zur lexikalischen Analyse eingesetzt werden. Für die Klausur- und Abiturleute gibt es einen umfangreichen Theorieteil über Nichtdeterminierte Endliche Automaten.

Folge 27: Lexikalische Analyse

Im Mittelpunkt dieser Folge steht die Frage, wie man Determinierte Endliche Automaten dazu einsetzen kann, einen Java-Befehl, der aus mehreren Variablen, Zahlen und Operatoren besteht, lexikalisch zu analysieren.

Folge 28: ---

freigelassen für spätere Ergänzungen

Folge 29: kontextfreie Grammatiken

Hier beginnen wir mit dem zweiten Teil des Compilierungs-Vorganges, der syntaktischen Analyse. Damit Sie verstehen, wie dieser Teil des Compilers überhaupt arbeitet, ist es zuvor erforderlich, sich mit den Grundlagen der kontextfreien Grammatiken vertraut zu machen. Siehe dazu auch die Abitur-Seite.

Folge 30: Syntaxanalyse

In dieser Folge wird gezeigt, was ein Parser ist und wie ein Parser nicht nur die Syntax eines Audrucks analysiert, sondern auch gleich den Code für eine Stackmaschine erzeugt.

Folge 31: Parserkonstruktion

Wir wollen nun zum Abschluss des Kurses kommen und überlegen, wie man jetzt einen funktionierenden Parser konstruieren kann, wenn eine eindeutige und kontextfreie Grammatik G vorgegeben ist.


Diese HTML-Seite wurde erstellt von Ulrich Helmich




IMPRESSUM