Wei kann ich einen einfachen Parser programmieren, der eine Formel als String einleist, diesen dann in einfache Rechenoperationen wie +*-/ , Expanent X^2 und eine Variabel X zerlerlegt und diese Funktion dann für x audrechnet.?
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Such einfach mal mit Google nach %DEINER_PROGRAMMIERSPRACHE% Parser Formelplotter Quellcode - damit solltest Du entsprechenden (Beispiel-)Code finden...
Gruß
Borlander
Hi!
Es gibt verschiedne Lösungswege, einen Parser zu erstellen. Ich beschreibe in Kurzfurm eine der Möglichkeiten. Im beispiel nutze ich nur Integer-Werte und Grundrechenarten.
1. Elemente separieren
Der erste Schritt ist natürlich den String mit der Forel zu zerlegen. Hier muss man die Zahlen von den Operatoren trennen.
Beispiel: "10 + 5 * 4"
Im einfachsten Fall müssen alle Werte und Operatoren durch Leerzeichen getrennt werden, dass kann man aber natülich auch allgemeiner lösen...
Ergebnis in Stringform:
"10"
"+"
"5"
"*"
"4"
Im nächsten schritt kann man dann die gefunden Teilstrings als Operator oder Zahl identifizieren. (Man muss dass nicht getrennt von der Aussplittung machen) An der Stell werden dann einfache Sntaxfehler erkannt.
Z: 10
O: +
Z: 5
O: *
Z: 4
2. Auswerten:
Jetzt kann die Verrechnung lsogehen. Im einfachsten Fall arbeiten wir und von Links nach Rechjts vor. Die sysntax schreibt vor, dass das erste Element eine Zahl sein muss, dann foplgt ein operator und dann wieder eine Zahl (und evtl. wieder ein Operator und eine Zahl - usw.).
Ok fangen wir an:
Unser Ergebnis E wird mit der ersten Zahl geladen (10).
Danach folgt der Operator + (also muss Addiert werden)
Also addieren wir zu E den 2. Wert (5).
Der folgende Operator ist * (also wird multipliziert).
E * 4 ergibt als Endergebnis 60.
3. Aufschrei:
Was ist mit "Punkt vor Strich" und Klammern und Funktionen?
DArum kümmern wir uns, wenn der obige Teil funktioniert. ;-)
Bis dann
Andreas