3

我正在使用 pyparsing.operatorprecedence 来解析中缀表示法查询。代码是

 filterExpr = pp.quotedString.setParseAction(pp.removeQuotes) |\
                 pp.Word(pp.printables, excludeChars="()")

searchTerm = (~and_ + ~or_ + ~not_) + filterExpr

searchExpr = pp.operatorPrecedence(
                searchTerm,
                [
                (not_, 1, pp.opAssoc.RIGHT, SearchNotOperation),
                (pp.Optional(and_, default="AND"), 2, pp.opAssoc.LEFT, SearchAndOperation),
                (or_, 2, pp.opAssoc.LEFT, SearchOrOperation),
                ])

这会解析像 '(foo bar) 或 baz' 这样的表达式,但在提供空字符串或空括号 '()' 的边缘情况下会失败。我该如何解决这个问题?

4

0 回答 0