final public Expression comparisonExpression()

in broker-core/src/main/java/org/apache/qpid/server/filter/selector/SelectorParser.java [181:333]


  final public Expression comparisonExpression() throws ParseException {
    Expression left;
    Expression right;
    Expression low;
    Expression high;
    String t, u;
        boolean not;
        ArrayList list;
    left = addExpression();
    label_4:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case NOT:
      case BETWEEN:
      case LIKE:
      case IN:
      case 29:
      case 30:
      case 31:
      case 32:
        ;
        break;
      default:
        break label_4;
      }
      if (jj_2_3(2)) {
        jj_consume_token(29);
        right = addExpression();
            left = ComparisonExpression.createGreaterThan(left, right);
      } else {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case 30:
          jj_consume_token(30);
          right = addExpression();
            left = ComparisonExpression.createGreaterThanEqual(left, right);
          break;
        case 31:
          jj_consume_token(31);
          right = addExpression();
            left = ComparisonExpression.createLessThan(left, right);
          break;
        case 32:
          jj_consume_token(32);
          right = addExpression();
            left = ComparisonExpression.createLessThanEqual(left, right);
          break;
        case LIKE:
            u=null;
          jj_consume_token(LIKE);
          t = stringLiteral();
          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
          case ESCAPE:
            jj_consume_token(ESCAPE);
            u = stringLiteral();
            break;
          default:
            ;
          }
            left = ComparisonExpression.createLike(left, t, u);
          break;
        default:
          if (jj_2_4(2)) {
            u=null;
            jj_consume_token(NOT);
            jj_consume_token(LIKE);
            t = stringLiteral();
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case ESCAPE:
              jj_consume_token(ESCAPE);
              u = stringLiteral();
              break;
            default:
              ;
            }
            left = ComparisonExpression.createNotLike(left, t, u);
          } else {
            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
            case BETWEEN:
              jj_consume_token(BETWEEN);
              low = addExpression();
              jj_consume_token(AND);
              high = addExpression();
            left = ComparisonExpression.createBetween(left, low, high);
              break;
            default:
              if (jj_2_5(2)) {
                jj_consume_token(NOT);
                jj_consume_token(BETWEEN);
                low = addExpression();
                jj_consume_token(AND);
                high = addExpression();
            left = ComparisonExpression.createNotBetween(left, low, high);
              } else {
                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                case IN:
                  jj_consume_token(IN);
                  jj_consume_token(33);
                  t = stringLiteral();
            list = new ArrayList();
            list.add( t );
                  label_5:
                  while (true) {
                    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                    case 34:
                      ;
                      break;
                    default:
                      break label_5;
                    }
                    jj_consume_token(34);
                    t = stringLiteral();
                list.add( t );
                  }
                  jj_consume_token(35);
            left = ComparisonExpression.createInFilter(left, list, false );
                  break;
                default:
                  if (jj_2_6(2)) {
                    jj_consume_token(NOT);
                    jj_consume_token(IN);
                    jj_consume_token(33);
                    t = stringLiteral();
            list = new ArrayList();
            list.add( t );
                    label_6:
                    while (true) {
                      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
                      case 34:
                        ;
                        break;
                      default:
                        break label_6;
                      }
                      jj_consume_token(34);
                      t = stringLiteral();
            list.add( t );
                    }
                    jj_consume_token(35);
            left = ComparisonExpression.createNotInFilter(left, list, false);
                  } else {
                    jj_consume_token(-1);
                    throw new ParseException();
                  }
                }
              }
            }
          }
        }
      }
    }
        {if (true) return left;}
    throw new Error("Missing return statement in function");
  }