FB 4 - Angewandte Informatik
Compilerbau
SS 2020
Home
Copyright
Version 05.07.2020
Prüfung
Titel 1 Folie/Seite 2 Folien/Seite Video
Begrüßung*
- nix -
- nix -
Leistungsnachweis*

Inzwischen ist diese Seite fertig, daher werden das Blaue und die Sternchen entfernt, alles ist gültig.

Folien

Einige der PDF-Dateien sind bis zu 4 Mbyte groß. Andere Foliensätze sind verschlüsselt; hier gibt es Informationen dazu.

Zusammen mit den Folien gibt es Mitschnitte, die zwischen 100 und 300 MByte groß sind. Als Formate wird das mp4-Format angeboten. Das Abspielen unter Windows/Linux/Mac geht am besten mit dem VLC-Player.

Titel
1 Folie/Seite
2 Folien/Seite
Video
Maven
Einführung
Grammatik
Scanner
Parser1
Parser2
Syntaxbaum
Symboltabelle
Einfache Typen
Komplexe Typen
Semantik
Makros
Optimierung
Runtime System
Speicherverwaltung
P-Code
Codegenerierung
Qualität (freiwllig)

Fragebögen
  1. Grundlagen
  2. Scanner
  3. Parser
  4. Syntaxbaum
  5. Semantik
  6. Runtime System
  7. Speicherverwaltung des Heaps
  8. P-Code-Maschine
  9. Codegenerierung
  10. Qualität von Programmiersprachen (Freiwillig)
Übungen

Sie können die Programmieraufgaben in Ihrer eigenen Lieblingsumgebung und in Ihrer Lieblingsprogrammiersprache realisieren. Es wird aber Java 13 oder 14 empfohlen.

Das Aufgabenblatt A2 wurde überarbeitet. Nun ist auch die Testumgebung für A2 verbessert: es gibt das FI-Symbol.

Die Beschreibung von Plong wurde verbessert. Schauen Sie in die Änderungshistorie.

Nr Aufgabe
B
C
0
Vorbereitung*
Sample1 Sample2 Calc1 Calc2
0
0
1
Sprache Plong*
Plong-Report*Neue Version
3
3
2
Scanner*
Testumgebung**
8
8
3
LL(1)-Parser*
Testumgebung fehlt noch
7
7
4
Abstrakter Syntaxbaum
Testumgebung fehlt noch
6
6
K1
Semantische Prüfung
Testumgebung fehlt noch
4
K2
Codegenerierung
6
K3
P-Code-Interpreter
6

Testumgebung für A2 und A3

Zur Entwicklung des Scanners und des Parsers gibt es nun eine schnelle Testumgebung mit einer "Testsuite", die auf der Kommandozeile funktioniert (leider erst einmal nur für Windows). Diese arbeitet nicht mit JUnit und ist auch etwas primitiv, aber gut für die schnelle Grammatik-Entwicklung. Wenn die Grammatik vollständig fertig ist, kann dies dann nach netbeans (oder Eclipse...) übernommen werden:

In der Datei Plong.atg wird die Grammatik erwartet; mit coco.bat wird die Generierung realisiert. Falls alles in Ordnung ist wird mit compile.bat das Hauptprogramm eingebunden und ein jar-File erstellt. Dieses wird dann gestartet mit

  • runSimple_OK.bat (darf keine Fehler melden)
  • runProc_OK.bat (darf keine Fehler melden)
  • runError_1Error.bat (muss mind. 1 Fehler in der Zeile mit dem Kommentar // Error finden)

Alle bat-Files sowie die Testdateien befinden sich den beiden obigen Zip-Dateien (die in dieser 1. Version gleich sind). Wenn alles gut ist, dann können Sie die Coco/R-Dateien ordentlich pro Klasse zerlegen und mit Ihrer Lieblings-IDE weiter machen.

Ein kleines Helferlein für Coco/R

Das Python-Skript extract.py zerlegt die Dateien von Coco/R so, dass jeweils nur eine Klasse pro Datei vorhanden ist. Diese werden in lokalen Ordner classes abgelegt. Wenn im selben Ordn die Datei 'InstallDirectory.txt' vorhanden ist, wird 1 Zeile aus dieser gelesen und als Pfadname zu einem Ordner interpretiert. In diesen Ordner werden die generierten Class-Dateien kopiert. Wenn in dieser Datei der Ordnet von netbeans bzw. eclipse für das eigene Projekt steht, dann werden die Dateien gleich an die richtige Stelle kopiert.

Wenn die Install-Datei oder der in ihr angegebene Pfad nicht existieren, so wird nicht kopiert. Mit den Bat-Dateien der obigen Testumgebung coco.bat, compile.bat und run.....bat lässt sich sehr bequem die Grammatik entwickeln und später mit dem Python-Skript in die IDE-Umgebung installieren.

Dies alles funktioniert nur, wenn alle Dateien in einem Ordner sind. Wenn unter Windows der Python-Interpreter im Pfad ist und die Datei extract.py in extract.bat umbenannt wird, dann lässt sie sich per Doppelklick sofort starten. Für die Linux-Freunde muss vorne im Skript dieser schräge Vorspann bis zum #!/... gelöscht werden. Dann sollte dies auch unter Unix per Doppelklick laufen (Execute-Permission...).

Hinweise zur Aufgabe A4

Das calc-Beispiel wurde mit Attributen versehen. Analysieren Sie wo welche Java-Codestücke eingefügt werden.

Hinweise zum P4-Code

Für die Code-Generierung sowie für den Interpreter und der Beschreibung der Semantik der Instruktionen dienen die folgenden Dateien, die für die Freundinnen/e von Linux etwas umgeschrieben werden müssen (Quelle: http://www.standardpascaline.org/-PascalP.html):