Ich habe auch schon mal irgendwann sowas geschrieben. Vorgegangen bin ich damals in etwa so:
- Operatorenreihenfolge feslgegen
- Operator mit der höchsten Priorität in dem String suchen
- Als Wurzel in einen Baum einfügen
- Reststrings (je nach parameteranzahl des Operators/der Funktion) als Child-Knoten eingefügt
- das ganze für die Kinder und alle anderen Operatoren wiederholen
- Nachdem alles aufgeteilt wurde in der untersten Ebene anfangen zu berechnen
Wesentlich einfacher wird das ganze, wenn du nur wenige Operatoren und möglichst mit gleicher Parameteranzahl nimmst.
Noch einfacher ist es, wenn du PostFix-Schreibweise für Funktionen/Operatoren vorgibst