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?
Das ist doch ein Kinderspiel.
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
Ich denke du wirst da keine fertige library finden. Aber wenn Du nen Parser schreiben willst würde ich dir JavaCC als Basis empfehlen. https://javacc.org/ https://en.wikipedia.org/wiki/JavaCC
Für 60€/h schreib ich dir die Bibliothek innerhalb von zwei Monaten inkl Unit Tests und allem drum und dran.
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.
> "kennt wer..."
wer so etwas schreibt, für den wird es schwer einen Parser für
(mathematische) Ausdrücke zu schreiben...
...my 50c
Ich hab für sowas mal muparser genommen. Der ist aber C++. Für Java hab ich auf die Schnelle den hier gefunden: http://mathparser.org
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
Und hier noch das, was Maven mir ausspuckt...
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.