Die Skriptsprache Tcl wird als eingebettete Sprache in dem jtap-System
genutzt, um Algorithmen zu beschreiben und auszuführen.
Tcl zeichnet sich durch eine besonders
einfache Syntax aus: Jedes Kommando besteht aus genau einer Zeile: Am Beginn
der Zeile steht der Befehlsname, danach folgen die Argumente. Dies gilt auch
für Kontrollstrukturen wie z.B. eine while-Schleife. Beispiel:
Kommandoname argument1 argument2 ... argument_n
Ein Argument ist dabei ein normaler Textstring. Teile dieses Strings können
dynamisch substituiert werden, z.B. durch den Inhalt einer Variable oder das
Resultat eines anderen Kommandos:
kommando "argument$varinhalt" ...
kommando argument[kommando2 argument1 ... argument_n]xyz
Wenn in der Variablen varinhalt der Text "Hallo Welt? steht, dann wird aus
kommando "argument$varinhalt" ...
die Zeile
kommando "argumentHallo Welt" ...
Die Substitution mit einem Kommandoergebnis funktioniert ähnlich:
kommando argument[kommando2 argument1 ... argument_n]xyz
wird zu
kommando argumentResultatxyz
Setzt man ein Kommando in geschweifte Klammern, so wird die Substitution
ausgeschaltet. Innerhalb der geschweiften Klammern werden auch
Zeilenumbrüche überlesen, so dass mehrzeilige Argumente möglich sind - das
ist z.B. nützlich für Argumente, die einen Befehlsblock darstellen.
Die einfache Struktur der Sprache macht eine visuelle Aufbereitung sehr
einfach. Jede Befehlszeile kann durch einen Block dargestellt werden. Die
Blöcke sollen in einer gerichteten Reihenfolge dargestellt werden, z.B.
durch Verbindungspfeile oder einfaches Untereinandersetzen der Blöcke. Jeder
Block stellt genau ein Kommando dar. Innerhalb eines solchen Blockes sollen
wiederum die Argumente als spezialisierte Subblöcke dargestellt werden. Die
Subblöcke müssen dabei der Argumentreihenfolge entsprechend angeordnet
werden.
Für unterschiedliche Argumenttypen sollen unterschiedliche Subblöcke
bereitgestellt werden, die eine angepasste Anzeige und Dateneingabe
erlauben. Argumente, die einen Integer-Wert darstellen, könnten z.B. in
einem Subblock dargestellt werden, der ein einfaches Eingabefeld mit dem
numerischen Wert enthält.
Da es Argumente gibt, die einen Befehlsblock darstellen, muss es auch einen
Subblock geben, der wiederum Kommandoblöcke enthalten kann. Da Bestandteile
eines Argumentes auch durch Variableninhalte oder Kommandoresultate
substituiert werden können, müssen die Argumentsubblöcke solche
Substitutionsblöcke aufnehmen können.
Aufgabe des Softwarepraktikums ist es, eine graphische Oberfläche zu
gestalten, die ein Tcl-Skript wie oben beschrieben visualisiert. Dabei soll
es möglich sein:
- neue Kommandos einzufügen
- Kommandos zu löschen
- die Reihenfolge der Kommandos zu verändern
- je nach Kommandotyp unterschiedliche Argumente bereitzustellen
- jeder Kommandotyp soll einen Hilfskommentar für das Kommando und für die
einzelnen Argumente bereitstellen
- Kommandos und Subkommandos (= Kommandos innerhalb eines Arguments)
beliebig zu verschachteln
- Argumente so einfach wie möglich zu editieren (durch GUI-Elemente
unterstützt)
- aus der graphischen Struktur einen String zu erzeugen, der das TCL-Skript
enthält
- aus einem String, der ein Tcl-Skript enthält, die graphische Struktur
aufzubauen
Als weitere Rahmenbedingung muss es möglich sein, die Menge der
unterschiedlichen Kommando- und Argumentblöcke einfach zu erweitern. Dies
ist notwendig, da auch Tcl eine dynamische Erweiterung des Befehlsumfangs
erlaubt. Weiterhin sollte es je einen allgemeinen Kommando- und
Argumentblock geben, der alle Kommandos bzw. Argumente darstellt, für die es
keine spezialisierten Blöcke gibt. Somit ist es nicht mehr notwendig, für
jeden Tcl-Befehl einen speziellen Block zu definieren, sondern man kann sich
zunächst auf die wichtigsten Kommandos beschränken.
|