Kurzanleitung zur Benutzung von flex ==================================== Man kann optional den regulaeren Ausdruck fuer Aufgabe 1 mit lex/flex ausprobieren. Das stellt zumindest sicher, dass der regulaere Ausdruck syntaktisch korrekt ist und auf einigen Beispielen korrekt arbeitet. Absolute Korrektheit garantiert es nicht, denn es koennte ja ein Beispiel geben, das Sie nicht ausprobiert haben, fuer das der Ausdruck nicht funktioniert. 1. Laden Sie die ausfuehrbare Datei von flex fuer MS-DOS von ftp://ftp.mpi-sb.mpg.de/pub/simtelnet/gnu/djgpp/v2gnu/flx254b.zip Aus dem Zip-Archiv benoetigen Sie eigentlich nur bin\flex.exe 2. Modifizieren Sie die Beispiel-Eingabe fuer flex von http://www.informatik.uni-giessen.de/staff/brass/iii01/aufg1.l In der Zeile {digit}+ printf("Match: '%s'\n", yytext); ersetzen Sie den regulaeren Ausdruck "{digit}+" durch den regulaeren Ausdruck, den Sie testen wollen. Natuerlich koennen Sie auch die Definition der Abkuerzung "digit" digit [0-9] weiter oben entfernen oder durch eigene Abkuerzungen ersetzen. Die Zeile \$ return(0); bedeutet, dass das Programm bei der Eingabe eines Dollarzeichens abbricht. Sie koennen diese Zeile weglassen, dann muessen Sie spaeter das Dateiende-Zeichen ^Z (Control+Z) eingeben, um das Programm zu beenden. 3. Geben Sie das Kommando flex aufg1.l ein. flex uebersetzt dann die Spezifikation, die Ihren regulaeren Ausdruck enthaelt, in die Datei lexyy.c. 4. Nun muessen Sie nur noch lexyy.c in ein ausfuehrbares Programm uebersetzen. Mit Microsoft Visual C++ geht das folgendermassen: 4a. Starten Sie Visual C++. 4b. Waehlen Sie "New" im Menue "File" (oder druecken Sie ^N). 4c. In der "New" Dialogbox waehlen Sie "Projects" und darin "Win32 Console Application". Geben Sie einen Projekt-Namen und ein Verzeichnis-Pfad an. Der Projekt-Name ist normalerweise der letzte Bestandteil des Verzeichnis-Pfades. "Create New Workspace" sollte ausgewaehlt sein (ist es automatisch). 4d. In dem Assistenten zur Erzeugung des Projektes waehlen Sie "Empty Project" (das ist der Default). 4e. Waehlen Sie "Add to Project/Files" im Menue "Project". Fuegen Sie hier "lexyy.c" zum Projekt hinzu (als C++ Quelldatei). 4f. Waehlen Sie "Build aufg1.exe" (falls Ihr Project "aufg1" heisst) im Menue "Build". 5. Nun fuehren Sie Ihr Programm aus. Entweder rufen Sie "Execute aufg1.exe" im Menue "Build" von Visual C++ auf, oder sie fuehren es im MS-DOS Prompt aus (das ausfuehrbare Programm steht im Ordner "Debug"). Das Programm gibt die Token in der Eingabe aus, die auf Ihren regulaeren Ausdruck passen. Dateien von Visual C++ ====================== In den Verzeichnis fuer das Projekt/Workspace finden Sie - aufg1.dsp: Definition des Projektes (Dateien, Optionen, ...) Dies entspricht dem makefile in UNIX. - aufg1.dsw: Definition des Workspace (Projekte innerhalb dieses Workspace) - aufg1.plg: Project Log Datei: Letzte Kommandos mit Ausgaben (HTML Format) - aufg1.ncb: "No compiler Browser File" (used by ClassView, WizardBar): Informationen ueber Klassen. - aufg1.opt: Workspace options file (Setzungen fuer die Visual C++ Entwicklungsumgebung, wird erst geschrieben, wenn man VC verlaesst oder "Save All" anklickt.) Fuer ein Projekt kann es verschiedene Releases geben. Im Ordner fuer das Release "Debug" finden Sie - lexsy.obj: Ergebnis der Compilierung von lexsy.c - aufg1.exe: Ergebnis des Linkens von lexsy.obj mit der Standard-Bibliothek (ausfuehrbare Datei) - aufg1.pdb, vc60.pdb, vc60.idb: Information fuer den Debugger - aufg1.ilk: Informationen der den Linker (erlaubt inkrementelles Linken) - aufg1.pch: Precompiler Header File (erlaubt schnelleres Compilieren, wenn sich die #include-Dateien nicht aendern)