Dynamische logische Ausdruck Analyse/Bewertung in C# oder VB?

Was das beste war, um einen Ausdruck auszuwerten, wie die folgenden:


(A Und B) Oder (A Und C) Oder (Nicht B Und C)

oder

(A && B) || (A && C) || (!B && C)

Zur Laufzeit, ich war in der Planung die Umwandlung der obigen Ausdrücke die folgenden Schritte aus:

(Wahr Und Falsch) Oder (Wahr Und Falsch) Oder (Nicht False Und True)

oder

(True && False) || (True && False) || (! False && Wahr)

Bedingungen:
1) Der logische Ausdruck erst zur Laufzeit bekannt ist.
2) Die Anzahl Variablen und deren Werte erst zur Laufzeit bekannt.
3) Variable Werte sind nie null.

Ich weiß, ich könnte das erstellen einer einfachen montieren mit einer Klasse und einer Methode, die ich zur Laufzeit generieren, basierend auf den Eingaben, aber gibt es einen besseren Weg.
Ich habe dies getan, bevor. Verwenden Sie ein string-generator den code zu schreiben, dann rufen Sie den compiler. Nach, dass Sie die assembly geladen und rufen Sie die Methode.

Vorschläge?

Dank.

  • Was versuchen Sie zu erreichen? Können Sie teilen, wie Sie kommen, um die Vergleiche? Das sieht aus wie etwas, das vielleicht besser anders angegangen.
  • Sieht aus wie eine Liste von Dingen zu vergleichen. Man könnte die Iteration der Liste aus, und brechen, wenn Sie finden, dass alle zwei wahr sind.
  • Sie schreiben, könnte eine einfache Aussagenlogik Logik-parser... ich erinnere mich daran, dass zu einem lösen der Wumpus-Welt-problem.
InformationsquelleAutor Bobby Ortiz | 2008-12-08
Schreibe einen Kommentar