我一直致力于使用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))])
当我没有逻辑条件或只有一个逻辑时,它工作正常,但是当我在上面给出的例子中有更多时,它似乎失败了,甚至没有逻辑操作。
这里有人可以提供一些见解或指导吗?任何帮助将不胜感激。