Mahlzeit allerseits
Ich will einen String mit einem mathematischen Ausdruck (so etwas wie
"3*4" oder "sqrt(pi)" oder "ln(e)>log(10)") in eine Rechenoperation
konvertieren (lassen) und deren Ergebnis abgreifen.
Ich hab ein paar Bibliotheken gefunden (JEL und GNU Expression Library)
und wollte mal fragen, ob die jemand kennt und etwas zu deren
Brauchbarkeit sagen kann. Hat jemand schon einmal damit gearbeitet und
kann was zu deren Tauglichkeit sagen? Oder hat sogar eine andere
Empfehlung?
Es geht um keine allzu komplizierten Sachen (keine Matrizen, keine
komplexe Rechnung, keine Integration oder Differentiation), wobei ich
nix gegen solche Funktionen habe.
Aber sowas wie Wurzel- und Logarithmenoperationen und ähnliche niedere
Mathematik sollen machbar sein.
Hat da wer Erfahrungen?
Naja, Kinderspiel. Wenn man es dann mal wirklich macht, wird das Kind
schnell gross...
Freund G**gle spuckt diverse Leute aus, die sich damit etwas tiefer
beschäftigt haben. Einen guten Überblick als Startpunkt findest du z.B.
hier https://stackoverflow.com/q/3422673.
Ich selbst habe schon einmal ein ähnliches Problem mit der ScriptEnging
gelöst. Hat geklappt, würde es wieder so machen.
Grüße!
Ich würde einen parser schreiben der die Leerzeichen aus dem String
Holt, die ganzen Operatoren sucht und Alles was zwischen den Operatoren
ist verrechnet
Das schreibe ich dir an einem Tag. Für jeden Oldschoolinformatiker der
noch sein Handwerk beherrscht ist das ein Klacks, schon zig mal in
diversen Sprachen umgesetzt.
Mach besser Parkplatzwächter, dann wirste nicht überfordert.
Danke...aber ich denke, einen Parser krieg ich womöglich auch selber
noch hin wenn es sein muß. Und den Stack-Overflow-Link kenne ich auch,
trotzdem danke.
Eigentlich haben mich Erfahrungsberichte interessiert, ich bin ja sicher
nicht der Einzige der so etwas braucht. Es hätte ja sein können jemand
weiß das eine von den Bibliotheken Schrott ist oder jemand kann sie
empfehlen.
Es macht halt wenig Freude eine neue Bibliothek auszuprobieren,
vorläufig zufrieden zu sein und die Stolpersteine dann zu entdecken wenn
man fast fertig ist...
Datenablecker schrieb:> Das schreibe ich dir an einem Tag. Für jeden Oldschoolinformatiker> der noch sein Handwerk beherrscht ist das ein Klacks, schon zig mal in> diversen Sprachen umgesetzt.>> Mach besser Parkplatzwächter, dann wirste nicht überfordert.
Der Parkplatzwächter wird wohl eher derjenige sein, der sich unter Wert
verkauft. Damit scheinst du wohl bereits Erfahrungen gemacht zu haben.
Wühlhase schrieb:> Ich hab ein paar Bibliotheken gefunden (JEL und GNU Expression Library)> und wollte mal fragen, ob die jemand kennt und etwas zu deren> Brauchbarkeit sagen kann. Hat jemand schon einmal damit gearbeitet und> kann was zu deren Tauglichkeit sagen? Oder hat sogar eine andere> Empfehlung?
Die JEL ist ganz sicher für irgendjemanden tauglich, sonst wäre sie
nicht über Jahre hinweg weiterentwickelt worden. Die Frage ist, ob sie
für dich tauglich ist. Das kannst aber nur du selber herausfinden.
Ist es ein Problem, die Bibliothek einfach mal runterzuladen und
auszuprobieren? Es handelt sich dabei ja nicht um ein Monsterwerkzeug,
in das man sich erst stunden-, tage- oder gar monatelang einarbeiten
müsste.
Da deine Anforderungsliste im Vergleich zur Featureliste der JEL extrem
kurz ist, kann ich mir nicht vorstellen, dass du bei der JEL irgendetwas
vermisssen wirst.
Wühlhase schrieb:> Danke...aber ich denke, einen Parser krieg ich womöglich auch selber> noch hin wenn es sein muß. Und den Stack-Overflow-Link kenne ich auch,> trotzdem danke.>> Eigentlich haben mich Erfahrungsberichte interessiert, ich bin ja sicher> nicht der Einzige der so etwas braucht. Es hätte ja sein können jemand> weiß das eine von den Bibliotheken Schrott ist oder jemand kann sie> empfehlen.
Meine Erfahrung:
Ja, die Lehrbücher haben recht, es funktioniert wie in ihnen
beschrieben. Sogar ganz ohne Wunderbibliotheken. Es geht, ohne Witz,
lehrbuchmäßig.
Grammatik, primitiver Tokenizer, einfacher Parser, in einen Baum parsen,
Baum evaluieren. Wer lustig drauf ist evaluiert gleich beim Parsen und
schenkt sich den Baum.
Als kleiner Hinweis, das funktioniert auf 8-Bit Prozessoren in unter
zwei bis vier Kilobyte Assembler Code. Weil es eben kein Hexenwerk ist
um dass man einen Aufriss machen mus. In den paar Kilobyte hat man dann
noch einen ganzen Basic-Interpreter mit dabei. Was unabhängig von der
Programmiersprache und dem Prozessor gar nicht so schlecht ist.
Nur mit dem Berechnen von Funktionen kommt man meist nicht weit. Eine
einfache Sprache drumherum, neumodisch Scriptsprache, lohnt sich. Bei
Java bietet es sich dann an die Sprache mittels Scripting-API
einzubinden
https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_guide/api.html
Mark schrieb:> Grammatik, primitiver Tokenizer, einfacher Parser, in einen Baum parsen,> Baum evaluieren. Wer lustig drauf ist evaluiert gleich beim Parsen und> schenkt sich den Baum.
Bei FH-informatik-Studiengängen kommt das nur extrem rudimentär dran,
sodass nicht jeder Informatiker das im Handumdrehen schafft...
Dr. Sommer schrieb:> Bei FH-informatik-Studiengängen kommt das nur extrem rudimentär dran
Der Anteil an Studenten, die später einen Compiler schreiben
sollen/wollen, ist ja auch eher überschaubar. Das war in der
IT-Steinzeit noch anders, da musste man sich öfter mal Werkzeuge selbst
schnitzen. Deshalb gab es da sowas wie Compiler-Compiler. Die gibts
sicher immer noch, es interessiert bloss niemand mehr.
Georg
Danke für die Vorschläge (an die, die welche gemacht haben)-der mXparser
gefällt mir ganz gut.
Und nun das nächste...der Autor von mXparser hat das als Maven-Projekt
bei Github online gestellt, so weit, so gut.
Nun bekomme ich beim Bauen immer nur eine Fehlermeldung (siehe Log).
Soweit ich dem Fehler entnehmen kann, findet er keine Quelldateien.
Quelldateien sind aber definitiv vorhanden
(...\MathParser.org-mXparser-master\CURRENT\java\src\org\mariuszgromada\
math\mxparser), und ich finde nichts was mir da weiterhilft. Kann mir
irgendwer kurz erklären was da schief läuft oder hat jemand ein
Stichwort dazu?
Github: https://github.com/mariuszgromada/MathParser.org-mXparser