Code zur Vorlesung

Zugriff auf das CVS-Repositorium

Während der Vorlesung entsteht ein kompletter Compiler. Da Teile davon Gegenstand von Übungsaufgaben sind, stellen wir den Code des Compilers schrittweise zur Verfügung. Das geschieht mit CVS.

Wir verwalten ein zentrales Repositorium mit dem Code, den wir wöchentlich erweitern. Jeder Teilnehmer kann eine Kopie des Codes "auschecken" und sich dann automatisch alle Neuerungen holen lassen. Das schöne dabei ist, daß CVS dabei die lokalen Änderungen und Erweiterungen nicht blind überschreibt, sondern nach Möglichkeit erhält.

Es gibt damit zwei Möglichkeiten, an den Code zur Vorlesung zu kommen:

Per CVS im Informatik-Pool

Dazu auf einem PC-Pool-Rechner unter FreeBSD (also z.B. in C2S1, C2H13, C2H33 oder A326 auf dem Sand, bzw. z.B. auf burt, kim oder alphatronic-pc) einloggen. Dort folgenden Befehl ausführen:
cvs -R -d /afs/informatik.uni-tuebingen.de/pu/compilerbau-0304/cvs checkout compilerbau
Es entsteht ein Verzeichnis namens compilerbau, in dem sich der Code befindet. Die neusten Änderungen lassen sich dann mit folgendem Befehl (aus just jenem compilerbau-Verzeichnis) aus dem Repositorium holen:
cvs -R update -d
Es empfiehlt sich, den update-Befehl mindestens jede Woche unmittelbar vor der Lösung der Übungsaufgaben abzusetzen.

Achtung: Eine Arbeitskopie kann nur auf den oben aufgelisteten Rechnern ausgecheckt werden. Um die Aufgaben zu Hause zu bearbeiten, empfiehlt es sich, auf einem dieser Rechner eine Arbeitskopie auszuchecken und dieses Verzeichnis dann mit entsprechenden Programmen zu synchronisieren (Z. B. scp, rsync oder unison). Generell empfehlen wir allen Teilnehmern die Poolrechner für die Übungen zu benutzen.

Direkt oder über's Web

Direkt aus dem Verzeichnis /afs/informatik.uni-tuebingen.de/pu/compilerbau-0304/code/ oder über's Web von hier.

Den Code in die REPL laden

Zunächst den Code compilieren mit

make

direkt im Verzeichnis compilerbau.

Dann die Objective-Caml-REPL im compilerbau-Verzeichnis starten, und zwar so, daß es auch in den Unterverzeichnissen nach Dateien sucht, z.B. so:

ocaml -I lex -I mini-caml -I parse

Dann in der REPL:

# #load "regexp.cmo";;

usw. für alle zu ladenden Module.

Alternativ können die compilierten Module auch gleich beim Start übergeben werden:

ocaml regexp.cmo lexstate.cmo lex.cmo

dabei ist allerdings auf die richtige Reihenfolge zu achten.


Martin Gasbichler
Last modified: Sun Oct 26 16:45:51 CET 2003