Ralf: String mit Funktionsaufruf interpretieren

Beitrag lesen

MITTELWERT[RECHNE[[[[v1]]]*0.95]]

Genau genommen hat das mit Rekursion nichts zu tun.

Wieso nicht?
Du willst wiederholt "Funktionen" berechnen lassen, und diese bekommen dazu Werte übergeben.

Es muss aber festgelegt werden, in welcher Reihenfolge innerhalb von resolve() vorgegangen werden muss. Bevor also nach MITTELWERT gesucht wird, muss zunächst RECHNE ausgewertet worden sein.

Und wenn dann mal die Kombination andersherum, RECHNE[MITTELWERT[...]+7.3] o.ä., auftaucht?

»»
Wenn man das so allgemein halten will, hast du natürlich Recht. Das habe ich aber bisher nicht beabsichtigt. Die ganze Sache befindet sich aktuell in der Entwurfsphase. Wichtig war am Anfang für mich nur die Sache mit der Ersetzung der Variablen durch akuelle Inhalte des jeweiligen Datensatzes (bzw. DOM-Objektes).
Da die extrahierten Daten auch Zahlen beinhalten, ist es nicht abwegig, damit auch Berechnungen anstellen zu wollen (es handelt sich um Datensätze aus einer Verkaufsabwicklung).

Ich kann noch nicht abschätzen, was da mal alles an Anforderungen kommt und daher ist es schwierig, jetzt schon alle Eventualitäten berücksichtigen zu wollen.
Wie schon Cheatah geschrieben hat, wäre wohl ein Parser mit Ausgabe einer entsprechenden Objektstruktur keine schlechte Idee. Damit kenne ich mich jedoch überhaupt nicht aus und muss mangels Zeit auch davon Abstand nehmen.

Um auf das Beispiel zurückzukommen - wenn ich definiere, dass RECHNE vor MITTELWERT ausgewertet wird, dann ist das eben so und ich brauche keine Rekursion. Auf den String wird zunächst die Ersetzung der Veriablen durch die jeweiligen Inhalte durchgeführt, dann wird geRECHNEt und dann werden ggf. weitere Funktionen ausgewertet (MITTELWERT ist von mir bisher nur ein Gedankenkonstrukt - grundsätzlich sind aber schon statistische Funktionen denkbar).

Für mich ist im Moment wichtig, dass es möglichst bald läuft und benutzbar ist. Wenn dann Erweiterungswünsche kommen, muss ich sehen, wie und ob die in das vorliegende Design eingebunden werden können.

So ist das nun einmal, wenn es kein Pflichtenheft gibt ;)

Ralf