Dokumention des SCAN-Programms: Eingabe-Format: Als Eingabe werden 2 Dateien benoetigt: a) DEA.OUT b) comment.txt comment.txt beschreibt die Kommentardefinition: Dies sollte in folgender Weise in der Datei : comment.txt stehen: DATEIANFANG: Kommentaranfang: ** Kommentarende: ** DATEIENDE: DEA.OUT beschreibt den DEA und die Zuordnung der Tokenklasse zu den Endzustaenden. Dies sollte in folgender Weise geschehen: DATEIANFANG: anzahl_der_zustaende: 100 anzahl_der_endzustaende: 45 40 1 20 2 ... 12 34 anzahl_der_abbildungen: 1200 0 40 1 ... 45 100 3 DATEIENDE: Die ersten beiden Zeilen duerften klar sein. Sie sind wichtig, damit die Dimensionsgrenzen fuer den erzeugten Tokengenerator klar sind. Die folgenden Zahlenpaare beschreiben die Zuordnung zwischen Tokenklasse und Endzustand. Der Endzustand mit der Zustandsnummer 40 wird der Tokenklasse 1 zugeordnet. Die Zustandsnummer 20 wird der Tokenklasse 2 zugeordnet ... Die 3er Tupel beschreiben die Abbildungen, und zwar entspricht die erste Zahl den Startzustand, die dritte Zahl beschreibt den Zielzustand und die zweite Zahl entspricht den ASCII-Code des Zeichens, welches abgeleitet wird. Mit Hilfe der Daten, die den deterministischen, endlichen Automaten definieren, wird der Quellcode des Tokengenerators erzeugt. Das geht folgendermassen: Allgemeine Beschreibung: Das Programm schreibe.c bekommt als Eingabe den Output DEA.OUT aus dem Programm, das den DEA erzeugt. Das Programm schreibe.c liesst die Daten entsprechend der Formatsvereinbarung ein, und erzeugt mml.c . ( Programmaufruf: schreibe < DEA.OUT > mml.c ) Der Quellcode von mml.c kann dann compiliert werden, und das zu uebersetzende Programm programm.mms wird mit dem Aufruf: mml < programm.mms aufgerufen. Als STDOUT wird der Tokenstrom erzeugt. Anschliessend muss der Tokenstrom mit dem Perl-Programm filter.ph noch auf das richtige Format gebracht werden, da Spruenge in den Tokenklassen-Nummern nicht von nde4.c beruecksichtigt werden. Mit filter.ph wird die Tokennummer entsprechend veraendert. Genauere Beschreibung von schreibe.c : Der Kompiler ist in 5 Progamm-Abschnitten aufgeteilt worden. ( block_a.dat, ... , block_f.dat ) Die Daten, die den DEA beschreiben werden dazwischen eingefuegt, so dass ein vernuenftiges C-Programm entsteht. Die Daten, die noch eingefuegt werden muessen, sind die Anzahl, der Endzustaende, die Anzahl der Zustaende, die Zuordnung der Endzustaende zu den Tokenklassen und die Abbildungsfunktion zwischen den Zustaenden.