Mathematische Funktionen aus String auslesen und weiterverarbeiten
-
Hi,
ich habe folgendes Problem, und zwar lese ich aus einer Edit-Box eine String ein der in etwa so formatiert ist:
sin(x)*cos(x)+2x
Ich will jetzt daraus ein für mein Programm verständliche Mathematische Funktion machen die ich dann berechnen kann. Das Problem mit dem Auslesen und Konvertieren in die einzelnen math.h-Komponenten sehe ich eigentlich nicht als kompliziert an, allerdings als sehr aufwendig weil der User die Eingabe nach belieben gestalten kann.
Gibt es eine schon vorgefertigte Funktion oder Klasse mit der ich mir diese Arbeit ersparen kann?
MfG
Hyp
-
Hallo,
was du brauchst ist einen Lexer und Parser. Diese gibt es in beliebigen Ausprägungen. Beispiele hierfür sind lex und yacc bzw. die Gnu Tools flex und bison. Ein weiterer Parser ist z.B. ANTLR oder früher PCCTS.
Die Parser generieren aus der Beschreibung der Sprache ( hier die math. Beschreibung der möglichen Eingaben ) mehrere C oder C++ Funktionen und Klassen.
Diese kannst Du anschliessend in Deinem Projekt verwenden.
Die beschriebene Methode ist aber nicht ganz einfach und bedeutet viel Einarbeitung wenn man sich damit noch nie beschäftigt hat. Im Gegenzug erhälst Du aber ein sehr mächtiges Werkzeug. Die meisten Compiler / Interpreter haben z.B. einen Parser, der durch die oben genannten Tools erstellt wird.
Andere Alternative: Parser von Hand schreiben.
-
Danke für deine Antwort hab schon in etwa was gefunden was mir weiterhilft!!
Dies ist für meine bescheidenen Zwecke vollkommen ausreichend!