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