在pyparsing中实现逻辑条件

2024-09-27 07:30:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用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))])

当我没有逻辑条件或只有一个逻辑条件时,它工作得很好,但是当我有一个以上的逻辑条件时,我在上面给出的例子中,它似乎失败了,甚至对逻辑运算也没有影响。在

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


Tags: lambdatextltvarinteger逻辑条件do

热门问题