Mastersign.Expressions

Ich bin in der Vergangenheit immer wieder auf Situationen gestoßen, in denen ich mir gewünscht habe, einfache Ausdrücke in Form von Zeichenketten in eine kompilierte Lambda-Funktion umwandeln zu können. Dabei stehen Variablen und Funktionen aus einem durch den Programmierer definierbaren Kontext zur Verfügung. Basisoperationen für die primitiven Datentypen (bool, int, long, float, double, decimal) sollten out-of-the-box unterstützt werden. Standardpakete mit Variablen und Funktionen für einfache Mathematik (System.Math), Zeichenketten (System.String), Datum und Zeit (System.DateTime) und Reguläre Ausdrücke (System.Text.Regex) sind wünschenswert.

Der Anwender ist typischerweise ein Power-User oder Gelegenheitsadmin, der keine Probleme mit EXCEL-Formeln hat, aber sich auch nicht die Zeit nehmen will, eine ganze Programmiersprache zu lernen.
Es gibt natürlich ausgewachsene dynamische Sprachen (IronRuby, IronPython, JavaScript, u.a.) die sich auch an die CLR anbinden lassen, doch sind sie mir für meinen Anwendungszweck zu mächtig. Für jede Situation eine eigene DSL zu definieren scheint mir wiederum zu aufwendig. Gerade weil die Aufgaben der Ausdrücke oft ähnlich gelagert sind.

overview

Das System besteht aus einem Parser, einem Modell für die syntakischen Elemente (AST) und einem Compiler. Der Parser basiert auf dem Parser-Framework "Sprache". Als Compiler dient die System.Linq.Expression-Biblbliothek die zum .NET-Framework gehört.

Joomla templates by a4joomla