c # konvertiert den Zeichenfolgenausdruck in einen booleschen Ausdruck

c# expression-trees parsing

Frage

Ist es möglich, einen Zeichenfolgenausdruck in eine boolesche Bedingung zu konvertieren?

Zum Beispiel bekomme ich folgende Zeichenfolge:

var b = "32 < 45 && 32 > 20"

Ich möchte daraus einen bool Ausdruck schaffen und aufrufen. Die Zeichenfolgendarstellung ist auch flexibel (um es mehr Spaß zu machen), also erlaubt es ||, &&, () .

Akzeptierte Antwort

Ich würde Irony , das .NET Sprachkit verwenden. Sie könnten eine einfache Grammatik mit Irony konstruieren und dann die Zeichenfolge in einen ausführbaren Befehl parsen. Es gibt ein anständiges Beispiel für eine arthetische Grammatik in diesem Tutorial und in der Expression Grammar Sample , es ist eine ziemlich häufige Anfrage;)

Ich empfehle definitiv einen richtigen Compiler im Gegensatz zu Regex oder einen eigenen Ansatz zu verwenden - es wird viel erweiterbarer sein, wenn Sie jemals mehr Regeln hinzufügen möchten.


Beliebte Antwort

Schauen Sie sich Flee (Fast Lightweight Expression Evaluator) auf CodePlex an.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum