在pyparsing中实现逻辑条件

时间:2013-09-05 21:12:39

标签: python parsing pyparsing

我一直致力于使用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))])

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

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

0 个答案:

没有答案