Prog , Check , Prefix , Postfix , Bodied , Infix , IsInfix , IsPrefix , IsPostfix , OpPrecedence , RightAssociative , LeftPrecedence , RightPrecedence , RuleBase , Rule , HoldArg , Retract , UnFence , MacroSet , MacroClear , MacroLocal , MacroRuleBase , MacroRule , Secure .

Programmierung


/* comment */

Ein Kommentar in einem Quelltext.


Prog(...)

Die Funktion wertet die Argumente der Reihe nach aus. Das letzte Ergebnis wird zurückgegeben. Alternativ können die Argumente auch einfach in eckige Klammern gesetzt werden:
"Prog(a,b);" ist äquivalent zu "[a;b;];".


Check(predicate,"error")

Die boolsche Funktion "predicate" wird ausgewertet. Ist das Ergebnis False, wird das Programm an dieser Stelle abgebrochen und auf der Kommandozeile "error" ausgegeben.


Prefix("operator")

Mit dieser Funktion wird ein neuer "prefix"-Operator definiert. "prefix"-Operatoren stehen links vom Argument. Die Funktion kann auch mit einem zusätzlichen Argument für den Rang des Operators aufgerufen werden.


Postfix("operator")

Mit dieser Funktion wird ein neuer "postfix"-Operator definiert. "postfix"-Operatoren stehen rechts vom Argument.


Bodied("operator", precedence)

Mit dieser Funktion wird ein neuer "bodied"-Operator definiert.


Infix("operator", precedence)

Mit dieser Funktion wird ein neuer "infix"-Operator definiert. "infix"-Operatoren stehen zwischen zwei Argumenten. Der Rang des Operators wird mit "precedence" festgelegt.


IsInfix("str"), IsPrefix("str"), IsPostfix("str")

Die Funktionen testen, ob "str" ein "infix"-, "prefix"-, oder "postfix"-Operator ist. Das Ergebnis von z.B. IsInfix("+") ist True.


OpPrecedence("str")

Als Ergebnis wird der Rang des "infix"-Operators "str" zurückgegeben.


RightAssociative("operator")

Die Funktion macht den Operator "operator" rechts-assoziativ. Beispielsweise wird die Multiplikation durch RightAssociative("*") rechts-assoziativ.
Die Funktion sollte überlegt eingesetzt werden, da es eine entsprechende Funktion für links-Assoziativität nicht gibt.


LeftPrecedence("operator", precedence), RightPrecedence("operator", precedence)

Mit dieser Funktion wird der Parser angewiesen, den links bzw. rechts vom "infix"-Operator "operator" stehenden Ausdruck in Klammern zu setzen, wenn der Rang größer als "precedence" ist.
Diese Funktion ist z.B. notwendig, um a-(b-c) richtig auszuwerten. Die Ausdrücke a+b+c und a+(b+c) sind äquivalent, nicht jedoch a-b-c und a-(b-c).


RuleBase("operator", {params})

Mit dieser Funktion wird ein neuer Eintrag in der Regeltabelle erzeugt.


Rule("operator", arity, precedence, predicate) body

Mit dieser Funktion wird eine Regel für die Funktion "operator" definiert. Der Rang wird mit "precedence" festgelegt, "arity" ist die Anzahl der Argumente. Für Funktionen gleichen Namens lassen sich verschiedene Regeln definieren, wenn sich die Funktionen in der Anzahl der Parameter unterscheiden. Regeln mit niedrigem Rang werden vor Regeln mit hohem Rang angewendet.


HoldArg("operator", parameter)

Diese Funktion verhindert sofortige die Berechnung des Parameters "parameter" in dem Ausdruck "operator". Der Parameter wird erst berechnet, wenn er tatsächlich gebraucht wird.


Retract("operator", arity)

Diese Funktion entfernt die spezifizierte Regel.


UnFence("operator", arity)

Diese Funktion wird auf eine benutzerdefinierte Funktion "operator" angewendet. Sie ermöglicht den Zugriff auf die lokalen Variablen der aufrufenden Funktion. Die Funktionen For und ForEach nutzen diese Eigenschaft.


MacroSet, MacroClear, MacroLocal, MacroRuleBase, MacroRule

Diese Funktionen entsprechen den oben beschriebenen nicht-Makro-Funktionen, mit der Ausnahme, dass die Argumente vor der Ausführung berechnet werden.


Secure(body)

Die Anweisung "body" wird in einer sicheren Umgebung ausgeführt, in der Dateizugriffe und Aufrufe von Systemfunktionen nicht erlaubt sind. Unbekannte Skripte (z.B. aus dem Internet) können so sicher ausgeführt werden.