Lade...
 

IS Codeorganisation

Inhaltsverzeichnis:

InstantScript ist eine stackorientierte Programmiersprache.

Sie beinhaltet einen reichen, auf die InstantObjects und auf deren Darstellung in den Frontends abgestimmten Funktionsumfang.

 

Codeorganisation

 

InstantScript Code ist in Module gegliedert, d.h. InstantScript Module stellen die oberste Ebene der Codeorganisation dar.

InstantScript Module werden in Dateien gehalten (in der Regel ein Modul pro Datei, es können sich aber auch mehrere Module in einer Datei befinden).

 

Stack

 

Jedes Modul hat seinen eigenen Variablenraum und damit seinen eigenen Stack. Auf diesen kann das Modul beliebige Objekte abgelegen: InstantObjects, Variablen, Konstanten und Werte. Mit jedem neuen Objekt wächst der Stack.

Führt die InstantMachine ein Statement aus, steht diesem der gesamte Stack des Moduls zur Verfügung. In der Regel nimmt sich jedes Statement eine bestimmte Anzahl Objekte vom Stack, d.h. der Stack leert sich. Hat ein Statement einen Returnwert, landet dieser wiederum auf dem Stack und der Stack wächst. Natürlich gibt es auch Statements, die sich nur mit der Bewirtschaftung des Stacks beschäftigen (Dup(), Drop() usw.).

Wird aus einem Modul mittels dem Statement SendMsg() ein anderes Modul aufgerufen, dann wird dem aufgerufenen Modul eine Kopie des Stacks des aufrufenden Moduls mitgegeben - die Objekte des Stacks des aufrufenden Moduls werden abgeräumt. Werden durch SendMsg() mehrere Module aufgerufen, erhält jedes eine eigen Kopie des Stacks.

Es ist Aufgabe des Programmierers, sich aktiv um den Stack zu kümmern.

Lazy Loading

 

Beim Starten der InstantMachine wird lediglich das in der ini-Datei angegebene Startmodul geladen.

Stösst die InstantMachine auf eine SendMsg()-Anweisung, die ein anderes Modul betrifft, lädt sie dieses Modul nach. Die Angaben, welches Modul zu welchen Messages gehört wird der ext-Datei entnommen.

Es besteht die Möglichkeit, der InstantMachine den Befehl zu erteilen, ein bereits geladenes Modul neu zu laden.

Business Patterns