Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Formelsprache TO LotusScript Code-generierer schreiben
Gandhi:
OK. Solche Skripte sind die Hölle. Wobei ich mich immer frage: Wer schreibt so etwas?
Wie aber geht man da vor? Keine Ahnung ???
Die Schwierigkeit beginnt ja beim Auslesen der Token...@x(parameter1(@Y(p2;p3;@Z(p4))))
Ein wenig Orientierung geben ja die Klammern - vielleicht wäre dies ein allererster Ansatz zur Zerlegung.
Irgendwan habe ich mal BNF lernen müssen...das kommt mir gerade hoch, wenn ich an syntaktische Token denke.
Wie ist der Syntax von Formelsprache?
Entweder eine Variablen/Feldzuweisung - oder ein Select - oder ein Semikolon - oder eine @Funktion. Korrekt?
Dann müsste man den Syntax der einzelnen Elemente identifizieren.
Auf jeden Fall würder man vermutlich sehr sehr viel über @Formulas lernen. Wozu das auch immer gut sein sollte ;)
Gandhi:
Genau, ein Tree zum Sammeln der atomischen Tokens wäre richtig.
Das macht die Sache auch vom Verfahren her einfacher:
Der gesamte Baum wird bei Root, also der Gesamtformel beginnend, schrittweise aufgeteilt - bis die Knoten nicht mehr differenzierbar sind.
Dann wird von den Knoten aus das Script erzeugt - also genau der entgegengesetzte Vorgang gestartet.
flaite:
Formelsprachenkenntnisse hab ich genügend.
Das Ende vom nächsten Token hängt vom Kontext ab.
Kann Klammer sein oder ein Semikolon.
Manches muß umgruppiert werden (im Tree). Die Parents im Tree rufen jeweils die Kinder auf. Das muss irgendwie gehen.
Für sowas wie @Explode gibt es kein direktes Äquivalent in Skript. Aber ich hab für sowas SkriptLibraries, die das abbilden.
Ich sag nicht, dass das einfach ist. Aber ich halte es irgendwie für schon machbar.
Axel
eknori (retired):
--- Zitat ---Für sowas wie @Explode gibt es kein direktes Äquivalent in Skript
--- Ende Zitat ---
Kommt auf die Version an; in ND6 SPLIT
Gandhi:
Mit den Klammern als Kennzeichen meinte ich: Eine Funktion mit Parametern beginnt stets mit einer öffnenenden Klammer und endet mit einer schliessenden. Dazwischen müssen alle Klammern die geöffnet werden auch geschlossen werden. Sobald also [Anzahl öffnender Klammern]-[Anzahl schliessender Klammern]=0 ist die Funktion beendet - und der Inhalt zwischen ( und ) kann weiter aufgelöst werden.
Weiterhin bekannt ist, dass zwei Funktionen/Zuweisungen/Anweisungen/... immer mit Semikolon getrennt werden. Für weiteres muss dann tatsächlich der Kontext bemüht werden - was bei Dingern wie Picklist - mit sehr vielen Parametern - zumindest aufwändig sein kann.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln