示例#1
0
 public void Join(FromClause fromClause)
 {
     Expression onExpression;
     switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
     case 156:
       mcc_consume_token(156);
       fromClause.AddJoin(JoinType.Inner);
       switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
       case K_ONLY:
       case K_TABLE:
       case S_IDENTIFIER:
       case S_BIND:
       case S_QUOTED_IDENTIFIER:
       case 150:
       case 154:
     TableReference(fromClause);
     break;
       default:
     mcc_la1[177] = mcc_gen;
     ;
     break;
       }
       break;
     case K_INNER:
     case S_IDENTIFIER:
       switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
       case K_INNER:
     mcc_consume_token(K_INNER);
     break;
       default:
     mcc_la1[178] = mcc_gen;
     ;
     break;
       }
       ID("JOIN");
       TableDeclaration(fromClause);
       mcc_consume_token(K_ON);
       onExpression = SQLExpression();
       fromClause.AddPreviousJoin(JoinType.Inner, onExpression);
       switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
       case K_INNER:
       case K_LEFT:
       case K_RIGHT:
       case S_IDENTIFIER:
       case 156:
     Join(fromClause);
     break;
       default:
     mcc_la1[179] = mcc_gen;
     ;
     break;
       }
       break;
     case K_LEFT:
       mcc_consume_token(K_LEFT);
       switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
       case 178:
     mcc_consume_token(178);
     break;
       default:
     mcc_la1[180] = mcc_gen;
     ;
     break;
       }
       ID("JOIN");
       TableDeclaration(fromClause);
       mcc_consume_token(K_ON);
       onExpression = SQLExpression();
       fromClause.AddPreviousJoin(JoinType.Left, onExpression);
       switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
       case K_INNER:
       case K_LEFT:
       case K_RIGHT:
       case S_IDENTIFIER:
       case 156:
     Join(fromClause);
     break;
       default:
     mcc_la1[181] = mcc_gen;
     ;
     break;
       }
       break;
     case K_RIGHT:
       mcc_consume_token(K_RIGHT);
       switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
       case 178:
     mcc_consume_token(178);
     break;
       default:
     mcc_la1[182] = mcc_gen;
     ;
     break;
       }
       ID("JOIN");
       TableDeclaration(fromClause);
       mcc_consume_token(K_ON);
       onExpression = SQLExpression();
       fromClause.AddPreviousJoin(JoinType.Right, onExpression);
       switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
       case K_INNER:
       case K_LEFT:
       case K_RIGHT:
       case S_IDENTIFIER:
       case 156:
     Join(fromClause);
     break;
       default:
     mcc_la1[183] = mcc_gen;
     ;
     break;
       }
       break;
     default:
       mcc_la1[184] = mcc_gen;
       mcc_consume_token(-1);
       throw new ParseException();
     }
 }