c # convertit une expression de chaîne en une expression booléenne

c# expression-trees parsing

Question

Est-il possible de convertir une expression de chaîne en une condition booléenne?

Par exemple, je reçois la chaîne suivante:

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

Je voudrais créer une expression bool partir de cela et l'invoquer. La représentation des chaînes est également flexible (pour le rendre plus amusant), elle autorise donc ||, &&, () .

Réponse acceptée

J'utiliserais Irony , le kit de langage .NET. Vous pouvez construire une grammaire simple avec Irony, puis analyser la chaîne en une commande exécutable. Il existe un exemple décent de grammaire arthmétique dans ce tutoriel et dans l’ exemple de grammaire Expression , c’est une requête plutôt courante;)

Je suggère certainement d'utiliser un compilateur approprié, par opposition à Regex ou une approche personnalisée: ce sera beaucoup plus extensible si vous souhaitez ajouter plus de règles.


Réponse populaire

Jetez un coup d’œil à Flee (évaluateur d’expression rapide et légère) sur CodePlex.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi