C++ Eingabe von mathematischen Formeln über Konsole
Hallo,
Wieder ein kleines Problem in C++. Momentan möchte ich einen grafischen Taschenrechner mit Allegro entwickeln, bisher klappt alles ausgezeichnet, allerdings muss man die Funktionen oder Formeln noch in den Source Code eintragen.
Nun wäre meine Frage, wie man es hinbekommt, das man dies direkt über die Konsole oder ein andersartiges Textfeld machen kann.
Ich hab ein bisschen recherchiert und herausgefunden, dass man dafür einen Parser braucht, allerdings kann ich keine ordentliche Anleitung finden, wie man einen solchen für C++ schreibt oder generiert. Kann mir das jemand erklären oder mir eine Anleitung dafür schicken?
Schöne Grüße,
DLCom
2 Antworten
Der Algorithmus, den Du für den Formelparser benötigst, ist nicht sehr kompliziert, und man kann ihn gut von Hand codieren:
http://de.wikipedia.org/wiki/Shunting-yard-Algorithmus
Die Seite, die maximilianus7 genannt hat, zeigt Code, der so funktioniert. Erklärt wird das Prinzip auch in den Lehrbüchern des Compilerbaus.
(Parsergeneratoren wie z.B. YACC benötigst Du, um Sprachen zu implementieren, die eine komplexere Grammatik haben als das Taschenrechner-Interface. Falls es Dich interessiert, schau z.B. in der engl. Wikipedia unter "Comparison of parser generators".)
Hier ist ein Programmbeispiel, das Dir vielleicht weiterhilft: http://www.smccd.net/accounts/hasson/C++2Notes/ArithmeticParsing.html
ganz schöne herausforderung! hast du schon nach formelparser gegoogelt? viele anregungen und lösungen. z.b.
https://www.vb-paradise.de/index.php/Thread/92870-FormelParser-und-ExpressionTree/