Flex und Bison

In Abbildung 2 wird der Einsatz von Flex und Bison für das vorliegende Beispiel noch einmal verdeutlicht. Neben der Verwendung von notwendigen Dateien für Bison (easypars.yy) und Flex (easyscan.l) werden die selbsterstellten Header-Module (ast.h, global.h) eingebunden, die die Funktionsweise der Ergebnisdateien von Bison (easypars.cpp) und Flex (easyscan.cpp) beeinflussen. Es ist zu beachten, dass Flex stets eine Datei Namens (lex.yy.c) generiert. Dies läßt sich von außen nicht beeinflussen. Daher muß unter Verwendung einer Rename-Funktion, z.B. innerhalb eines Makefiles, der Name umbenannt werden, sofern dies gewünscht wird. In diesem Beispiel wird die Datei in (easyscan.cpp) umbenannt.

Abbildung 2: Einsatz von Flex und Bison

Modul-Einbindung

In dem beschriebenen Beispiel werden neben den von Flex und Bison erzeugten Modulen noch weitere Module verwendet, um die Funktionsweise der Ergebnisdatei (easy.exe) zu steuern. Z.B. wird durch diese Module festgelegt, dass (easy.exe) als Interpreter zu arbeiten hat. Abbildung 3 zeigt die Modulbindung der einzelnen Module. Alle Module werden unter Verwendung eines Makefiles zunächst mit dem Gcc-Compiler kompiliert und die entstehenden Objektdateien mittels eines Linkers zur Ergebnisdatei zusammengebunden. Ein beliebiger Quelltext (*.e), der die Vorschriften der Grammatik erfüllt, kann so unter Verwendung des Interpreters (easy.exe) zur Ausführung gebracht werden.

Abbildung 3: Modul-Einbindung