aladdinparser.java

来自「mysql集群」· Java 代码 · 共 2,114 行 · 第 1/5 页

JAVA
2,114
字号
                if(expression != null){
                        if(andExpression == null){
                        andExpression = new AndExpression();
                }
                        andExpression.addExpression(expression);
                }
        }
        jj_consume_token(133);
        break;
      default:
        jj_la1[77] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    JoinCondition();
                {if (true) return andExpression;}
    throw new Error("Missing return statement in function");
  }

  final public Expression TableSpec() throws ParseException {
        Expression expression = null;
        Table table = null;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
    case S_QUOTED_IDENTIFIER:
    case S_COMMA_IDENTIFIER:
      table = TableReference();
      break;
    case K_TABLE:
    case 132:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_TABLE:
        jj_consume_token(K_TABLE);
        break;
      default:
        jj_la1[78] = jj_gen;
        ;
      }
      jj_consume_token(132);
      expression = FullSelectStatement();
      jj_consume_token(133);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_AS:
      case IDENTIFIER:
        CorrelationClause();
        break;
      default:
        jj_la1[79] = jj_gen;
        ;
      }
      break;
    default:
      jj_la1[80] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
                {if (true) return expression;}
    throw new Error("Missing return statement in function");
  }

  final public void JoinCondition() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_ON:
      jj_consume_token(K_ON);
      SQLExpression();
      break;
    case K_USING:
      jj_consume_token(K_USING);
      jj_consume_token(132);
      SQLExpression();
      jj_consume_token(133);
      break;
    default:
      jj_la1[81] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

  final public Expression WhereClause() throws ParseException {
        Expression expression;
    jj_consume_token(K_WHERE);
    expression = SQLExpression();
        {if (true) return expression;}
    throw new Error("Missing return statement in function");
  }

  final public void CorrelationClause() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_AS:
      jj_consume_token(K_AS);
      break;
    default:
      jj_la1[82] = jj_gen;
      ;
    }
    jj_consume_token(IDENTIFIER);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case 132:
      ColumnNames();
      break;
    default:
      jj_la1[83] = jj_gen;
      ;
    }
  }

  final public void ColumnNames() throws ParseException {
    jj_consume_token(132);
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
      jj_consume_token(IDENTIFIER);
      break;
    case S_COMMA_IDENTIFIER:
      jj_consume_token(S_COMMA_IDENTIFIER);
      break;
    default:
      jj_la1[84] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    label_14:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 131:
        ;
        break;
      default:
        jj_la1[85] = jj_gen;
        break label_14;
      }
      jj_consume_token(131);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IDENTIFIER:
        jj_consume_token(IDENTIFIER);
        break;
      case S_COMMA_IDENTIFIER:
        jj_consume_token(S_COMMA_IDENTIFIER);
        break;
      default:
        jj_la1[86] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
    jj_consume_token(133);
  }

  final public void GroupByClause() throws ParseException {
    jj_consume_token(K_GROUP);
    jj_consume_token(K_BY);
    GroupByColumn();
    label_15:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 131:
        ;
        break;
      default:
        jj_la1[87] = jj_gen;
        break label_15;
      }
      jj_consume_token(131);
      GroupByColumn();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_HAVING:
      jj_consume_token(K_HAVING);
      SQLExpression();
      break;
    default:
      jj_la1[88] = jj_gen;
      ;
    }
  }

  final public void GroupByColumn() throws ParseException {
    SQLSimpleExpression();
  }

  final public void OrderByClause() throws ParseException {
    jj_consume_token(K_ORDER);
    jj_consume_token(K_BY);
    OrderByColumn();
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case IDENTIFIER:
    case S_COMMA_IDENTIFIER:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IDENTIFIER:
        jj_consume_token(IDENTIFIER);
        break;
      case S_COMMA_IDENTIFIER:
        jj_consume_token(S_COMMA_IDENTIFIER);
        break;
      default:
        jj_la1[89] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
    default:
      jj_la1[90] = jj_gen;
      ;
    }
    label_16:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 131:
        ;
        break;
      default:
        jj_la1[91] = jj_gen;
        break label_16;
      }
      jj_consume_token(131);
      OrderByColumn();
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case IDENTIFIER:
      case S_COMMA_IDENTIFIER:
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case IDENTIFIER:
          jj_consume_token(IDENTIFIER);
          break;
        case S_COMMA_IDENTIFIER:
          jj_consume_token(S_COMMA_IDENTIFIER);
          break;
        default:
          jj_la1[92] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        break;
      default:
        jj_la1[93] = jj_gen;
        ;
      }
    }
  }

  final public void OrderByColumn() throws ParseException {
    SQLSimpleExpression();
  }

  final public Expression SQLExpression() throws ParseException {
        OrExpression orExpression = null;
        AndExpression andExpression = null;
        Expression expression = null;
        Token token;
        int count = 0;
    expression = SQLAndExpression();
        orExpression = new OrExpression(expression);
    label_17:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_OR:
        ;
        break;
      default:
        jj_la1[94] = jj_gen;
        break label_17;
      }
      jj_consume_token(K_OR);
      expression = SQLAndExpression();
                        count++;
                        orExpression.addExpression(expression);
    }
        if(count >0){
                {if (true) return orExpression;}
        }else{
                {if (true) return expression;}
        }
    throw new Error("Missing return statement in function");
  }

  final public Expression SQLAndExpression() throws ParseException {
        AndExpression andExpression = null;;
        Expression expression;
        Expression currentExpression;
    expression = SQLUnaryLogicalExpression();
    label_18:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_AND:
        ;
        break;
      default:
        jj_la1[95] = jj_gen;
        break label_18;
      }
      jj_consume_token(K_AND);
      currentExpression = SQLUnaryLogicalExpression();
        if(andExpression == null && currentExpression != null){
                andExpression = new AndExpression(expression);
        }
        if(currentExpression != null){
                andExpression.addExpression(currentExpression);
        }
    }
        if(andExpression != null){
                {if (true) return andExpression;}
        }else{
                {if (true) return expression;}
        }
    throw new Error("Missing return statement in function");
  }

  final public Expression SQLUnaryLogicalExpression() throws ParseException {
        Expression expression = null;
        boolean not = false;
    if (jj_2_13(2)) {
      ExistsClause();
    } else if (jj_2_14(1)) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case K_NOT:
        jj_consume_token(K_NOT);
            not = true;
        break;
      default:
        jj_la1[96] = jj_gen;
        ;
      }
      expression = SQLRelationalExpression();
                {if (true) return reverseExpression(not,expression);}
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  final public Expression ExistsClause() throws ParseException {
        Expression expression = null;
        boolean not = false;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_NOT:
      jj_consume_token(K_NOT);
           not = true;
      break;
    default:
      jj_la1[97] = jj_gen;
      ;
    }
    jj_consume_token(K_EXISTS);
    jj_consume_token(132);
    expression = FullSelectStatement();
    jj_consume_token(133);
        {if (true) return reverseExpression(not,expression);}
    throw new Error("Missing return statement in function");
  }

  final public Expression SQLRelationalExpression() throws ParseException {
        Expression expression = null;
        Expression otherExpression = null;
        String functionName = null;
        int function = 0;
    if (jj_2_15(2147483647)) {
      jj_consume_token(132);
      SQLExpressionList();
      jj_consume_token(133);
    } else if (jj_2_16(1)) {
      expression = SQLSimpleExpression();
    } else {
      jj_consume_token(-1);
      throw new ParseException();
    }
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case K_BETWEEN:
    case K_IN:
    case K_IS:
    case K_LIKE:
    case K_NOT:
    case 130:
    case 134:
    case 135:
    case 136:
    case 137:
    case 138:
    case 139:
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case 130:
      case 134:
      case 135:
      case 136:
      case 137:
      case 138:
      case 139:
        functionName = Relop();
                function =      Comparative.getComparisonByIdent(functionName);
        otherExpression = SQLRelationalOperatorExpression();
                                if(expression == null ||  otherExpression == null){
                                        {if (true) return null;}
                                }

                                if(expression instanceof ColumnExpression && !(otherExpression instanceof ColumnExpression)){
                                        ColumnExpression colExp = (ColumnExpression)expression;
                                        ComparisonExpression comparativeExpression = new ComparisonExpression();
                                        comparativeExpression.setComparison(function);
                                        comparativeExpression.setExpression(otherExpression);
                                        colExp.setExpression(comparativeExpression);
                                        {if (true) return colExp;}
                                }else if(!(expression instanceof ColumnExpression) && (otherExpression instanceof ColumnExpression)){
                                        ColumnExpression colExp = (ColumnExpression)otherExpression;
                                        ComparisonExpression comparativeExpression = new ComparisonExpression();
                                        comparativeExpression.setComparison(Comparative.exchangeComparison(function));
                                        comparativeExpression.setExpression(expression);
                                        colExp.setExpression(comparativeExpression);
                                        {if (true) return colExp;}
                                }else{
                                        {if (true) return null;}
                                }
        break;
      default:
        jj_la1[98] = jj_gen;
        if (jj_2_17(2)) {
          otherExpression = SQLInClause(expression);
                        {if (true) return otherExpression;}
        } else if (jj_2_18(2)) {
          otherExpression = SQLBetweenClause(expression);
                {if (true) return otherExpression;}
        } else if (jj_2_19(2)) {
          otherExpression = S

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?