Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
stellwerksim:editor:themascript:grundbefehl [2016/03/13 11:58] – Externe Bearbeitung 127.0.0.1 | stellwerksim:editor:themascript:grundbefehl [2019/01/19 15:20] (aktuell) – Ersetzt durch neues Handbuch DevonFrosch | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Umgekehrt polnische Notation ====== | ||
- | Alle Zeilen eines Scriptes werden in UPN geschrieben. Dabei werden zuerst die Werte eingegeben und anschliessend die Operatoren, bzw. Befehle. Die Werte werden beim auslesen in den Speicher geladen, die Operatoren dagegen direkt auf die letzten beiden dem Speicher zugeführten Werte angewendet. Das Ergebnis ersetzt dann den Befehl samt seiner Parameter, so daß der nächste Befehl nur noch das Ergebnis sieht. Das folgende animierte Bild zeigt den Rechenablauf. | ||
- | |||
- | {{: | ||
- | |||
- | |||
- | ====== Grundbefehle ====== | ||
- | |||
- | Grundbefehle sind in der Mehrheit Rechenbefehle. Rechenbefehle berechnen etwas aus 2 oder mehr Werten (theoretisch auch nur aus einem Wert, aber da gibts im Moment keinen Befehl). In eckigen Klammern finden sich Beispiele zu den einzelnen Befehlen, sowie nach dem Semikol das Ergebnis. | ||
- | |||
- | Die Befehle: | ||
- | |||
- | Mathematische | ||
- | * rnd 2 Parameter: Zufallszahl zwischen Parametern inklusive Parametern, größerer Wert muß näher am Befehl stehen. [Blockkopf(1, | ||
- | * oneof mindestens 1 Parameter: Zufallswert aus Liste von Werten, der Parameter, der sich am nächsten beim Befehl befindet zeigt die Anzahl der zu verwendenden Werten. [Blockkopf(1, | ||
- | * + 2 Parameter: Addition [Blockkopf(6, | ||
- | * - 2 Parameter: Subtraktion [Blockkopf(6, | ||
- | * * 2 Parameter: Multiplikation [Blockkopf(6, | ||
- | * / 2 Parameter: Division [Blockkopf(6, | ||
- | |||
- | Kommentare | ||
- | |||
- | * # Mit dem Rautenzeichen können Kommentare eingegeben werden. Dies sollte möglichst oft gemacht werden und möglichst alle eingebauten Funktionen beschreiben, | ||
- | |||
- | Programmfluß | ||
- | * sub 1 Parameter: Ein anderes Themascript wird übernommen und kann durch nachfolgende Zeilen angepasst werden - Unterprogramm [*(1,sub); Script No. 1 wird übernommen] | ||
- | * tsub 2 Parameter: Gleich wie sub, allerdings werden nur die Werte eines Themas übernommen (übernommene Zeile wird bei jedem Thema ausgeführt) - Unterprogramm [*(1, | ||
- | * hook 1 Parameter: Gleich wie sub, allerdings wird dabei in der nach einem Script gesucht, der aus " | ||
- | * thook 2 Parameter: Gleich wie hook, allerdings werden nur die Werte eines Themas übernommen (übernommene Zeile wird bei jedem Thema ausgeführt) - Unterprogramm [*: | ||
- | * regionhook 1 Parameter: Gleich wie hook, allerdinga wird das Zug der Region zu welchem das aktuelle Stellwerk gehört übernommen. Der Name des gesuchten Scripts ist zusammengesetzt aus " | ||
- | * tregionhook 2 Parameter: Gleich wie regionhook, allerdings werden nur die Werte eines Themas übernommen (übernommene Zeile wird bei jedem Thema ausgeführt) - Unterprogramm [*: | ||
- | **Wichtig: in einem regionhook und tregionhook darf kein sub verweisend auf ein Script, welches seinerseits ein regionhook/ | ||
- | * if 3 Parameter: Gibt der erste Parameter TRUE zurück, wird der zweite ausgeführt, | ||
- | * nop kein Parameter: tut nichts, nötig für leere IF-Subcodes | ||
- | |||
- | Ausgabe/ | ||
- | Wird eine nicht nachvollziehbare Ausgabe erzeugt, kann dies am Befehl liegen. Dann wird der entsprechende Befehl durch einen der beiden Debugbefehle ersetzt. Wird nun im TS-Test wieder der richtige Wert ausgegeben, sie ist der ersetzte Befehl gestört. Diese Befehle werden nur selten benötigt. | ||
- | * print 1 Parameter: gibt den Wert aus - für Testzwecke | ||
- | * spy 1 Parameter: gibt den Wert aus und macht ihn für den nächsten Befehl wieder verfügbar - für Testzwecke | ||
- | |||
- | Boolsche Operationen (Ausgabe immer 1 für Wahr und 0 bzw. leerer Wert) | ||
- | * = 2 Parameter: vergleichen [Blockkopf(1, | ||
- | * < 2 Parameter: kleiner als, größerer Wert muß näher am Befehl stehen [Blockkopf(1, | ||
- | * > 2 Parameter: größer als [Blockkopf(3, | ||
- | * %%<=%% 2 Parameter: kleiner oder gleich [Blockkopf(1, | ||
- | * >= 2 Parameter: größer oder gleich [Blockkopf(3, | ||
- | * and 2 Parameter: logisches Und (beide Werte grösser 0) [Blockkopf(1, | ||
- | * or 2 Parameter: logisches Oder (min. ein Wert grösser 0) [Blockkopf(1, | ||
- | * not 1 Parameter: logisches Nicht (letzter Wert wird " | ||
- | |||
- | {{page>: |