Java - mathematische Ausdrücke als String erstellen und berechnen - Kennt wer eine Bibliothek?

Gast #5433988
Lesenswert?

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?
Gast #5434094
Lesenswert?

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!
Gast #5434426
Lesenswert?

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.
Gast #5434480
Lesenswert?

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...
Gast #5434709
Lesenswert?

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.
Moderator #5434726
Lesenswert?

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.
Gast #5434731
Lesenswert?

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
Gast #5434736
Lesenswert?

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...
Gast #5435583
Lesenswert?

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
Gast #5435979
Lesenswert?

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
Gast #5436144
Lesenswert?

Gibts schon vorkompiliert:
http://mathparser.org/mxparser-downloads/

Verschiedene vorkompilierte Versionen in einem Zip:

MathParser.org-mXparser-v.4.1.1-bin-only :
jdk.1.5
jdk.1.6
jdk.1.7
jdk.1.8
monoandroid10
monoandroid60
monotouch10
net20
net30
net35-client
net40-client
net45
net451
net452
net46
net461
net462
net47
netcoreapp10
netcoreapp11
netstandard10
netstandard16
portable45-net45+win8+wpa81
README.txt
xamarinios10

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren