private static ParsedAccessExpressionImpl parseExpression()

in src/main/java/org/apache/accumulo/access/ParsedAccessExpressionImpl.java [127:157]


  private static ParsedAccessExpressionImpl parseExpression(Tokenizer tokenizer,
      boolean wrappedWithParens) {

    int beginOffset = tokenizer.curentOffset();
    ParsedAccessExpressionImpl node = parseParenExpressionOrAuthorization(tokenizer);

    if (tokenizer.hasNext()) {
      var operator = tokenizer.peek();
      if (isAndOrOperator(operator)) {
        List<ParsedAccessExpression> nodes = new ArrayList<>();
        nodes.add(node);
        do {
          tokenizer.advance();
          ParsedAccessExpression next = parseParenExpressionOrAuthorization(tokenizer);
          nodes.add(next);
        } while (tokenizer.hasNext() && tokenizer.peek() == operator);

        if (tokenizer.hasNext() && isAndOrOperator(tokenizer.peek())) {
          // A case of mixed operators, lets give a clear error message
          tokenizer.error("Cannot mix '|' and '&'");
        }

        int endOffset = tokenizer.curentOffset();

        node = new ParsedAccessExpressionImpl(operator, tokenizer.expression(), beginOffset,
            endOffset - beginOffset, nodes);
      }
    }

    return node;
  }