Heute gibt es wieder einen Download. Dabei handelt es sich um eine Testanwendung zum Ausprobieren der neu entwickelten Skriptsprache Ernie-Script: Hier bin ich! Yeah, Baby! Ernie-Script vereint mehrere Eigenschaften verschiedener Sprachen. Im Allgemeinen folgt die Sprache der C++-Syntax. Zuweisungen ähneln aber eher denen, wie sie mit dem :=
-Operator in Pascal zu finden sind. Die Konkatenation von Strings über zwei Punkte (..
) mag der ein oder andere von Lua kennen. Um nur ein paar Aspekte zu nennen.
Beim Start der Anwendung öffnet sich ein Windows-Konsolen-Fenster mit etwas Text und einer Eingabeaufforderung. Wenn man jetzt zum Beispiel who;
eintippt, wird der gesamte Inhalt des globalen Namensraums ausgegeben:

Allriggedy Right und Tiggedy Tight! Da sind ja bereits zwei Objekte std
und math
vom Typ Table. Bei denen handelt es sich um vordefinierte Funktionsbibliotheken (auf C++-Basis). Die Anweisung std.out( "Hello World!" );
ruft nun zum Beispiel die Funktion out
der Bibliothek std
auf. Bei dieser Anweisung handelt es sich dann auch schon um ein vollwertiges Hello-World-Skript. Neben der soeben angesprochenen Funktion beinhaltet jene „Standardbibliothek“ bislang keine weiteren Features von Bedeutung. Die bisherigen Funktionen der Mathebibliothek sind die folgenden:
abs |
ceil |
floor |
exp |
log |
log10 |
fmod |
sin |
cos |
tan |
sinh |
cosh |
tanh |
asin |
acos |
atan |
atan2 |
sqrt |
pow |
Es besteht natürlich auch die Möglichkeit, eigene, auf Ernie-Script basierende Funktionen zu definieren. Im folgenden Beispiel wird eine Funktion zur Berechnung der Quadratwurzel definiert, dessen entscheidenden Code wir bereits bei der Vorstellung des Syntaxbaums und des Builders kennen gelernt haben:

Das Skript zur Definition von my_sqrt
erstreckt sich über mehrere Zeilen. Hierfür mussten am Zeilenende jeweils drei Punkte eingefügt werden, sofern das Skriptende noch nicht erreicht war. Das ist nicht Ernie-Script-spezifisch sondern ein Feature der Testanwendung, bei der es sich schließlich nur um eine einfache Konsolenanwendung und nicht um eine volle IDE mit komfortablem Texteditor handelt. (Aus Sicht von Ernie-Script existieren Zeilenumbrüche oder Sachen dieser Art sowieso nicht.) Ein kleiner Test der Funktion my_sqrt
zeigt ihr korrektes Verhalten (zumindest für die Zahl 2, hahaha).
Da die vordefinierten Bibliotheken nix weiter als normale Ernie-Script-Objekte vom Typ Table sind, können sie auch nachträglich noch geändert werden. So wird im folgenden Beispiel der Mathebibliothek eine weitere Funktion round
hinzugefügt:

Geil, wie Ernie-Script nun mal ist, sind rekursive Funktionsaufrufe natürlich auch kein Problem. Als Beispiel bietet sich hierfür natürlich die Fibonacci-Funktion an, die auch direkt getestet wird. Geil:

Die Skriptsprache hat an einigen Stellen noch ein paar Macken. Insbesondere sind einige Fehlermeldungen noch nicht intuitiv genug auf entsprechende Fehler (Ernies) abgestimmt. Ferner ist der Sprachumfang noch deutlich erweiterbar. Wie ich bereits angesprochen hatte, gibt es noch keine Möglichkeit zur expliziten Deklaration von lokalen bzw. globalen Variablen — Bitoperationen sind ebenfalls noch nicht möglich. Über eine Erweiterung der möglichen Typen (bislang Void, Float, Integer, Boolean, Character, String, Table, Function und Reference) habe ich natürlich auch schon nachgedacht.
Bis die Tage!