Hallo Community,
ich habe vor, einen kleinen Parser für spezielle Funktionen zu schreiben, der jedoch Prioritäten durch Klammern unterstützen soll:S.
Kleines Beispiel:
((a+b)-(a*(b+a)))+b
Wie kann ich herausfinden, dass ein Term von den meisten Klammern umgeben ist?
Also in dem Fall sollte zuerst (b+a) berechnet werden.
Somit wäre (b+a) das Prioritätselement: 1
(a+b) und a*(b+a) sind Prioritätselement: 2
(a+b)-(a*(b+a)) ist Prioritäselement: 3
((a+b)-(a*(b+a)))+b ist Prioritätselement: 4
Pseudocode:
$Gleichungen[0][0] = Anzahl der verschiedenen Prioritätselemente; in dem Fall 4
$Gleichungen[0][1] = maximale Anzahl gleichwertiger Prioritätslemente ; in dem Fall 2
$Gleichungen[1][0] = Prioritätslement 1, Nummer 1; also in dem Fall (b+a)
$Gleichungen[2][0] = Prioritätslement 2, Nummer 1; also in dem Fall (a+b)
$Gleichungen[2][1] = Prioritätslement 2, Nummer 2; also in dem Fall a*(b+a)
$Gleichungen[3][0] = Prioritätslement 3, Nummer 1; also in dem Fall (a+b)-(a*(b+a))
$Gleichungen[4][0] = Prioritätslement 4, Nummer 1; also in dem Fall ((a+b)-(a*(b+a)))+b
Leider habe ich keine Ahnung wie ich herausfinden kann, welcher Term z.B. Prioritätselement 1 ist.
Meine Idee war zunächst mit Stringreplace und @extended die Anzahl der "(" zu finden, aber das half mir nicht sonderbar.
Sollte ich mich nicht verständlich ausgedrückt haben, formuliere ich Passagen gerne präziser/deutlicher .
Ich hoffe, obwohl ich noch keinen ersten Code geschrieben habe, dass HuU das richtige Forum ist.
Vielleicht hat jemand schonmal so etwas gesehen oder eine gute Idee wie es umzusetzen ist. Jeder Ansatz hilft mir