@Bernhard: Syntaxüberprüfung ist definitiv gar nicht drin
@Eknori: Genau das soll es auch
Wie gesagt: Jede einzelne Anweisung wird erst mal in einen neuen Tree umgewandelt - der im ersten Schritt eben Deine gesamte Formel ist, da sie aus nur einer verschachtelten Anweisung besteht.
Bsp.:
_Field feld:=feld; ==> erster Tree
_retVal:=@if(@Command([CN];@UserName)="Hein Bloed";1;2) ==> zweiter Tree
_b:=@if(cond1;@if(cond2;@if(cond3;.....==>dritter Tree
jeder Tree muss dann baummässig soweit aufgesplittet werden, bis nichts mehr geht - und die Blätter/Endknoten dann in Script übersetzt und zusammengebaut werden.
Die Sache mit dem Array von Trees hat meiner Meinung nach den grossen Vorteil, dass die Reihenfolge nicht verloren geht.
Um das Ergebnis zu erhalten, dass Du gerne hättest, Ulrich, vergeht sicher noch ein wenig Zeit.
Insgesamt ist es aber aufgrund des relativ klaren Syntax (Tokentrennung) vermutlich relativ einfach Formulas so zu zerlegen (ganz im Gegensatz zu LotusScript - wo so eine schöne Trennung mittels klar definierter Zeichen und simplen Regeln fehlt)
Das Hauptproblem sehe ich in der (Deppenarbeit) alle Formeln umzusetzen - und in der Kontextabhängigkeit von Formeln. FormelAgents umzusetzten ist sicher gar kein Problem, was aber macht man z.B. mit Wertformeln.
Ich will mich daher auf Agenten beschränken - und hier kann man das ruhig auch in Java machen - wobei man sich damit - zunächst (bis zur Eclipse Plattform) einiges verstellt.