Visuelle Tcl-Programmierung

Graphische Entwicklungsumgebung für Tcl-Skripte

Visuelle Tcl-Programmierung
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.

Programmiersprachen
100% reines Java
Umgebung
jtap
Ansprechpartner
Christian Kohls

Hauptnavigation