Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Formelsprache TO LotusScript Code-generierer schreiben
flaite:
Thomas 2. Skript macht noch ein paar Probleme, die ich jetzt nicht mehr verstehe:
(für die beiden letzten Skripte habe ich @Formeln ohne () wie zb. @Success ersetzt durch z.B. @Success("xxx");
de.aja.formulatols.TRoot
--[TUnknown: rawContent: rem{***beginofhead***}]
--de.aja.formulatols.TVariable(name=title_, tokenID=00000001)
----[TLiteral: rawContent: Grußformel wählen]
--de.aja.formulatols.TVariable(name=message, tokenID=00000002)
----[TLiteral: rawContent: Mit welcher Grußformel am Schluß sollen Briefe und Faxe erstellt werden?]
--de.aja.formulatols.TVariable(name=messagenotfound1, tokenID=00000003)
----[TLiteral: rawContent: Fehler: Ein Schlüsselwortdokument für die Gruppe ]
--de.aja.formulatols.TVariable(name=messagenotfound2, tokenID=00000004)
----[TLiteral: rawContent: wurde in der Einstellungen-Datenbank nicht gefunden.]
--de.aja.formulatols.TVariable(name=keygrp, tokenID=00000005)
----[TLiteral: rawContent: Address Letter Close&]
--de.aja.formulatols.TVariable(name=fieldname, tokenID=00000006)
----[TLiteral: rawContent: LetterClose]
--de.aja.formulatols.TVariable(name=fieldcont, tokenID=00000007)
----[TUnknown: rawContent: letterclose]
--de.aja.formulatols.TVariable(name=tasks, tokenID=00000008)
----de.aja.formulatols.TList
------[TLiteral: rawContent: Prompt]
------[TLiteral: rawContent: PromptErrors]
--de.aja.formulatols.TVariable(name=language_, tokenID=00000009)
----[TUnknown: rawContent: language]
--[TUnknown: rawContent: rem{***endofhead***}]
--de.aja.formulatols.TVariable(name=list, tokenID=00000010)
----[TLiteral: rawContent: ]
--de.aja.formulatols.TFif
----[TUnknown: rawContent: !@isdocbeingedited]
----de.aja.formulatols.TCeditdocument
----[TLiteral: rawContent: ]
--[TUnknown: rawContent: rem{2.buildnameofsetup-db}]
--de.aja.formulatols.TVariable(name=thispathfile, tokenID=00000011)
----de.aja.formulatols.TFsubset
------de.aja.formulatols.TFdbname
--------[TLiteral: rawContent: xx]
------[TUnknown: rawContent: -1]
--de.aja.formulatols.TVariable(name=lenpathpc, tokenID=00000012)
----de.aja.formulatols.TFlength
------de.aja.formulatols.TFleftback
--------[TVariableRef: idRef: 00000011]
--------[TLiteral: rawContent: \\]
--de.aja.formulatols.TVariable(name=lenpathmac, tokenID=00000013)
----de.aja.formulatols.TFlength
------de.aja.formulatols.TFleftback
--------[TVariableRef: idRef: 00000011]
--------[TLiteral: rawContent: :]
--de.aja.formulatols.TVariable(name=lenpathunix, tokenID=00000014)
----de.aja.formulatols.TFlength
------de.aja.formulatols.TFleftback
--------[TVariableRef: idRef: 00000011]
--------[TLiteral: rawContent: /]
--de.aja.formulatols.TVariable(name=lenpath, tokenID=00000015)
----de.aja.formulatols.TFif
------[TUnknown: rawContent: lenpathpc>lenpathmac]
------de.aja.formulatols.TFmax
--------[TVariableRef: idRef: 00000012]
--------[TVariableRef: idRef: 00000014]
------de.aja.formulatols.TFmax
--------[TVariableRef: idRef: 00000013]
--------[TVariableRef: idRef: 00000014]
--de.aja.formulatols.TVariable(name=path, tokenID=00000016)
----de.aja.formulatols.TFif
------[TUnknown: rawContent: lenpath=0]
------[TLiteral: rawContent: ]
------de.aja.formulatols.TFleft
--------[TVariableRef: idRef: 00000011]
--------[TUnknown: rawContent: lenpath+1]
--de.aja.formulatols.TVariable(name=keydb_, tokenID=00000017)
----de.aja.formulatols.TFsubset
------de.aja.formulatols.TFdbname
--------[TLiteral: rawContent: xx]
------[TLiteral: rawContent: 1]
--[TUnknown: rawContent: rem{xlanguagetranslationbecauseofnotesbug}]
--de.aja.formulatols.TVariable(name=languagetrans, tokenID=00000018)
----[TLiteral: rawContent: ]
--de.aja.formulatols.TFset
----[TLiteral: rawContent: LanguageTrans]
----de.aja.formulatols.TFdblookup
------[TLiteral: rawContent: ]
------[TVariableRef: idRef: 00000017]
------[TLiteral: rawContent: (KeywordsNotUTD)]
------[TLiteral: rawContent: Language]
------[TLiteral: rawContent: KeyMerge]
--de.aja.formulatols.TFsuccess
----[TLiteral: rawContent: xx]
--de.aja.formulatols.TFif
----[TUnknown: rawContent: !@iserror(languagetrans)]
----[TLiteral: rawContent: ]
----de.aja.formulatols.TFset
------[TLiteral: rawContent: LanguageTrans]
------de.aja.formulatols.TFdblookup
--------[TLiteral: rawContent: ]
--------[TVariableRef: idRef: 00000017]
--------[TLiteral: rawContent: (Keywords)]
--------[TLiteral: rawContent: Language]
--------[TLiteral: rawContent: KeyMerge]
--de.aja.formulatols.TFsuccess
----[TLiteral: rawContent: xx]
--de.aja.formulatols.TFset
----[TLiteral: rawContent: Language_]
----de.aja.formulatols.TFreplace
------[TVariableRef: idRef: 00000009]
------de.aja.formulatols.TFword
--------[TVariableRef: idRef: 00000018]
--------[TLiteral: rawContent: |]
--------[TUnknown: rawContent: 1]
------de.aja.formulatols.TFword
--------[TVariableRef: idRef: 00000018]
--------[TLiteral: rawContent: |]
--------[TUnknown: rawContent: 2]
--[TUnknown: rawContent: rem{6.getkeywordswithdoublelookuplanguagedependent}]
--de.aja.formulatols.TVariable(name=view2, tokenID=00000019)
----de.aja.formulatols.TFif
------de.aja.formulatols.TFends
--------[TVariableRef: idRef: 00000005]
--------[TLiteral: rawContent: *]
------[TLiteral: rawContent: (KeywordsCat)]
------[TLiteral: rawContent: (Keywords)]
--de.aja.formulatols.TVariable(name=looktype, tokenID=00000020)
----de.aja.formulatols.TFif
------de.aja.formulatols.TFends
--------[TVariableRef: idRef: 00000005]
--------[TLiteral: rawContent: *]
------de.aja.formulatols.TList
--------[TLiteral: rawContent: ]
--------[TLiteral: rawContent: NoCache]
------[TLiteral: rawContent: ]
--de.aja.formulatols.TFset
----[TLiteral: rawContent: List]
----[TLiteral: rawContent: ]
--de.aja.formulatols.TFset
----[TLiteral: rawContent: List]
----de.aja.formulatols.TFdblookup
------[TVariableRef: idRef: 00000020]
------[TVariableRef: idRef: 00000017]
------[TLiteral: rawContent: (KeywordsNotUTD)]
------[TUnknown: rawContent: keygrp+selectioncat+language_]
------[TLiteral: rawContent: KeyMerge]
--de.aja.formulatols.TFsuccess
----[TLiteral: rawContent: xx]
--de.aja.formulatols.TFif
----[TUnknown: rawContent: !@iserror(list)]
----[TLiteral: rawContent: ]
----de.aja.formulatols.TFset
------[TLiteral: rawContent: List]
------de.aja.formulatols.TFdblookup
--------[TVariableRef: idRef: 00000020]
--------[TVariableRef: idRef: 00000017]
--------[TVariableRef: idRef: 00000019]
--------[TUnknown: rawContent: keygrp+selectioncat+language_]
--------[TLiteral: rawContent: KeyMerge]
--de.aja.formulatols.TFsuccess
----[TLiteral: rawContent: xxx]
--[TUnknown: rawContent: rem{7.getkeywordswithdoublelookuplanguageindependent}]
--de.aja.formulatols.TFif
----[TUnknown: rawContent: !@iserror(list)|(language_="")]
----[TLiteral: rawContent: ]
----de.aja.formulatols.TFset
------[TLiteral: rawContent: List]
------de.aja.formulatols.TFdblookup
--------[TVariableRef: idRef: 00000020]
--------[TVariableRef: idRef: 00000017]
--------[TLiteral: rawContent: (KeywordsNotUTD)]
--------[TUnknown: rawContent: keygrp+selectioncat]
--------[TLiteral: rawContent: KeyMerge]
--de.aja.formulatols.TFsuccess
----[TLiteral: rawContent: xxx]
--de.aja.formulatols.TFif
----[TUnknown: rawContent: !@iserror(list)|(language_="")]
----[TLiteral: rawContent: ]
----de.aja.formulatols.TFset
------[TLiteral: rawContent: List]
------de.aja.formulatols.TFdblookup
--------[TVariableRef: idRef: 00000020]
--------[TVariableRef: idRef: 00000017]
--------[TVariableRef: idRef: 00000019]
--------[TUnknown: rawContent: keygrp+selectioncat]
--------[TLiteral: rawContent: KeyMerge]
--de.aja.formulatols.TFsuccess
----[TLiteral: rawContent: xx]
--[TUnknown: rawContent: rem{8.testerror}]
--de.aja.formulatols.TFif
----[TUnknown: rawContent: !@iserror(list)]
----[TLiteral: rawContent: ]
----[TUnknown: rawContent: tasks="PromptErrors"]
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
flaite:
(mehr an den Moderator dieses Forums gerichtet)
Sind natürlich auch Design-Fehler drin.
Z.B. ist es nicht gut, dass jedes Token seinen eigenen Parser hat. Der Baum der Token muß irgendwie von aussen gebaut werden. Ich hatte erst die Idee, dass die Tokens die Aufgabe haben sich selber zu bauen, aber das erscheint mir als keine schlaue separation of concerns. Das sind allein schon eine Menge Objekte (Jeder Parser hat bis zu 5 Filter). Mehrere Parser ist nicht schlecht als Idee, aber besser ist wohl die "von aussen" den Baum bauen zu lassen und wenn der Baum gebaut ist, können sie garbage collected werden (geht natürlich auch so, aber das finde ich echt unsauber, wenn ich jedes Parser Objekt auf Null setze).
(an alle interessierte:)
Es stehen natürlich noch eine Menge Aufgaben vor diesem Projekt wie z.B. aus dieser Objektstruktur wirklich LotusScript code zu bauen.
Ich werde vermutlich am WE diese Alpha Version posten und dann in der nächsten Woche das ein bischen verfeinern und dokumentieren, dass vielleicht auch nicht so erfahrene Java Interessierte damit etwas anfangen können, falls es sie interessiert. Schliesslich hat Eclipse ja einen debugger und das ist ja nur source code.
Bernhard
Auf der einen Seite wird mir (z.T. zu Recht) Laberei vorgeworfen, auf der anderen Seite soll ich Sachen "programmiersprachenunabhängig" publizieren (Posting 59). Ich glaub du überschätzt mich da ein wenig. ;D
Aber dieses Projekt hat in vielerlei Hinsicht ein kommerzielles Schwesterprojekt mit LotusScript. Nämlich die Grammatik-für-hierarchische-Konfigurationsdokumente um ein xml Dokument mit Notes4 zu erstellen. Ein paar Grundgedanken von dem Javaprojekt sind da rübergegangen.
Gruß Axel
Mark³:
--- Code: ---@Sort(list; [CUSTOMSORT]; @ToNumber(@Trim(@Rightback($A; " - "))) > @ToNumber(@Trim(@RightBack($B; " - "))))
--- Ende Code ---
Diese Formel sortiert die folgende Liste
--- Zitat ---Billy Ray -- 10
Johnnie Lightning -- 37
Elvis Cantebury -- 9
Chief Wiggum -- 13
Angela King -- 6
Mary Ford -- 27
--- Ende Zitat ---
in dieser Reihenfolge:
--- Zitat ---Angela King -- 6
Elvis Cantebury -- 9
Billy Ray -- 10
Chief Wiggum -- 13
Mary Ford -- 27
Johnnie Lightning -- 37
--- Ende Zitat ---
da wird bestimmt interessanter Skriptcode draus ;D
Quelle: http://advisorupdate.info/Articles.nsf/nl/16642
flaite:
Dieses Forschungsprojekt liegt momentan ein bischen auf Eis. Werd mich aber wieder dran begeben.
Sicher ist auf jeden Fall, dass R6 Formelsprachenfeatures erst einmal nicht unterstützt werden. ;D
Insgesamt ist die Konvertierung von Programmiercode in eine Baumstruktur und diese Baumstruktur wieder zurück in eine andere Programmiersprache nicht uninteressant.
Ich merke dabei, dass ich viele Sachen nicht weiss.
Falls sich jemand beteiligen will, immer gerne.
Es ist eigentlich noch relativ durchschaubar.
Gandhi:
Gibt es was neues?
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln