Pour commencer, ce n'est pas des devoirs, j'essaie d'apprendre le pyparsing et je suis resté coincé ici.Exprimer des expressions logiques avec Pyparsing
Ma question est la suivante, je suis en train d'analyser des déclarations comme (abc or def) or def)
Mon programme va de la merde sur une expression infixe a or b
, puisque les deux parties peuvent être eux-mêmes expressions, qui peuvent à nouveau être des expressions infixes, la l'analyseur récursive jusqu'à ce que la profondeur de récursivité soit atteinte et qu'aucun travail ne soit effectué.
code ci-dessous:
# infix operators are automatically created and dealt with
infix_operators = ['and', '&', 'or', '|', 'implies', '->']
variable = Word(alphas)
infix_op = oneOf(infix_operators, caseless=True)
expr = Forward()
infix_expr = (expr + infix_op + expr)
complex_expr = nestedExpr('(', ')', content=expr)
expr << (infix_expr | complex_expr | variable)
print str(expr.parseString("(abc or def) or def)")[0])
Ma question est assez simple; comment irait-on éviter une boucle infinie dans ce genre de situations?
Merci pour la réponse détaillée: D –