next up previous contents
Next: 5.4 Konzept der Interpreternutzung Up: 5 VLISP-Anbindung Previous: 5.2 VLISP in VISTA

5.3 Tool Abstraction Concept

 

In der Entwicklungsumgebung von VISTA, genannt VMAKE, ist ein Mechanismus verfügbar, der die Verwendung von C-Funktionen im VLISP-Interpreter mit geringem Zusatzaufwand ermöglicht. Der entsprechende Mechanismus ist Teil des ,,tool abstraction concept`` (TAC), das allgemein dem Anbinden verschiedener Software-Teile an umfassende Systeme gewidmet ist. Zur Zeit ist allerdings nur die Anbindung von C-Funktionen, C-Typen, C-Aufzählungen und C-Konstanten an den VLISP-Interpreter sowie von C-Funktionen an FORTRAN-Programme realisiert.

gif

Das Problem, das das TAC löst, ist im Falle der Funktionen die Überprüfung der übergebenen Parameter nach Zahl und Typen, die Extraktion der unmittelbaren Daten aus den VLISP-Strukturen, der Aufruf der C-Funktion und die Rückgabe der Resultate in entsprechender Form an den Interpreter. Dazu generiert es eine Zwischenfunktion in C, die diese Operationen durchführt.

Außerdem muß der Name der Funktion in die Symboltabelle des Interpreters eingetragen werden. Dies wird durch die einmalige Ausführung einer ebenfalls vom TAC generierten Initialisierungsfunktion für ganze Module auf einmal zur Startzeit des Programms erledigt.

Um diese Anbindung automatisch durchführen zu können, werden die meisten Informationen aus dem Quellcode der C-Funktion gewonnen. Einige wichtige Fragen wären aber nur mit großem Aufwand beantwortbar, wie z.B. die Bestimmung der Richtung eines Parameters durch Datenflußanalyse. Daher muß im Quell-Code weitere Information über die Funktion zur Verfügung gestellt werden, insbesondere betreffend die Parameter bzgl. Eingangs- oder Ausgangsrichtung, ob der Parameter obligatorisch, optional oder per Schlüsselwort angegeben wird, sowie Informationen, wann das unmittelbare Funktionsresultat nicht als normales Datum, sondern mit NIL übertragen werden soll. Um die Funktion weiterhin in gültigem C-Code zu belassen, wird diese Zusatzinformation in speziellen C-Kommentaren eingebettet.

Mit diesem Werkzeug ist es sehr einfach, auch eine Vielzahl von C-Funktionen auf einfache Weise dem Interpreter verfügbar zu machen.



Martin Knaipp
Wed Jun 12 15:41:33 MET DST 1996