小编Ize*_*man的帖子

在 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))])
Run Code Online (Sandbox Code Playgroud)

当我没有逻辑条件或只有一个逻辑条件时,它工作得很好,但是当我有多个逻辑条件(如上面给出的示例中所示)时,它似乎会失败,甚至无法进行逻辑操作。

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

python parsing pyparsing

5
推荐指数
0
解决办法
741
查看次数

标签 统计

parsing ×1

pyparsing ×1

python ×1