5

我一直致力于使用 pyparsing 实现解析和评估条件。我的目标是能够成功解析类型的表达式:

x < 10 且 y > 5 且 z < 3

我想出的代码是这样的:

    var = Word(alphas + '._', alphanums + '._')
    text = Suppress("'") + Word(alphas, alphanums) + Suppress("'")
    integer = Word(nums).setParseAction(lambda t: int(t[0]))
    operator = oneOf(">= <= != > < ==")
    comperison = (var + operator + (integer | text)).setParseAction(lambda t: self.operands_map[t[1]](t[0], t[2]))

     expr = operatorPrecedence(binary_op,[
                        ("NOT", 1, opAssoc.RIGHT, lambda t: do_not(t)),
                        ("OR", 2, opAssoc.LEFT, do_or(t)),
                        ("AND", 2, opAssoc.LEFT, lambda t: do_and(t))])

当我没有逻辑条件或只有一个逻辑条件时,它可以正常工作,但是当我在上面给出的示例中拥有多个条件时,它似乎失败了,甚至没有逻辑操作。

这里有人可以提供一些见解或指导吗?任何帮助将不胜感激。

4

0 回答 0