Dynamiquement l'évaluation simple de la logique booléenne en Python

J'ai quelques générées dynamiquement la logique booléenne expressions, comme:

  • (A ou B) et (C ou D)
  • A ou (A et B)
  • Un
  • vide - True

Les espaces remplacés par des booléens. Devrais-Je,

  1. Convertir cette information à une expression Python comme True or (True or False) et eval?
  2. Créer un arbre binaire où un nœud est soit un bool ou Conjunction/Disjunction objet et de manière récursive l'évaluer?
  3. Convertir en imbriquée S-expressions Lisp analyseur?
  4. Quelque chose d'autre?

Suggestions bienvenue.

OriginalL'auteur a paid nerd | 2010-03-18