gizno82 hat geschrieben:Wie kann man realisieren, dass die Software in der Lage ist zu sagen okay hier ist ein - also muss der Wert links bzw. Rechts von dem Strich nach als Reihenschaltung betrachtet werden und sobald aber ein || auftaucht handelt es sich um eine Parallelschaltung.
Mir geht es hier nicht um Code Stringszerpflücken bekomme ich hin

Warum willst Du Strings zerpflücken?
gizno82 hat geschrieben:Was mich interessiert ist die Theorie die dahinter steckt. Ich könnte das ganze mit tausenden if s machen.
Das ist aber unschön.
Mir schwebt da was von Backus Naur Form vor oder Binären Bäumen.
Bin ich da auf dem richtigen Weg ?
Bei der BNF ja. Und bei den Binären Bäumen auch. Und - nicht oder. ^^
gizno82 hat geschrieben:Könnte mir bitte jemand einen Denkanstoß geben.
Du wirst nicht nur seriell und parallel brauchen, sondern auch priorisierte Betrachtung.
( 500k - 300 ) || 1m != 500k - ( 300 || 1m )
Du hast also drei Operatoren: (), - und || und mindestens zwei Prioritäten: () steht über - und ||
Mit Yacc und Bison kannst Du Dir daraus einen Parser basteln lassen. Ich wusst' auch mal wie, aber ich baue Compiler und bin kein Jäger.
Wir bauen also einen binären Baum auf. Jeder Knoten hat einen Operator und jeder Operator eine Priorität. Jedes Blatt ist ein Wert.
Du fängst also an zu lesen: 500k => Wert, also ein Blatt anlegen.
"-": Operator: Knoten anlegen, vorher war ein Blatt. das Blatt gehört nach links.
300, Wert: Rechtes Blatt.
||: Operator, Knoten anlegen: Wenn die Bindungsstärke höher als der Vorgängeroperator ist (* bindet stärker als +), dann fügst Du den Operator einfach übergeordneten Knoten rechts an und nimmst das ehemalige rechte Kind als eigenes linkes Kind. Ist er niedriger, so nimmst Du den kompletten Operator als linkes Kind. Diese Überprüfung machst Du für alle Elternknoten bis Du einen schwächer bindenden Operator findest.
1m: Wert: Rechtes Kind des aktuellen Operators.
Falls Du ein Compilerbau-Buch findest, dass diesen Algorithmus zeigt, sag mir bitte Bescheid. ^^
Strings zu zerpflücken war mir zu blöd. Statt Strings zu zerpflücken liest Du ihn so nämlich einfach von links nach rechts ein und fertig.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.