public final HiveParser.queryStatementExpression_return queryStatementExpression() throws RecognitionException {
		HiveParser.queryStatementExpression_return retval = new HiveParser.queryStatementExpression_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		ParserRuleReturnScope queryStatement714 =null;
		ParserRuleReturnScope queryOperator715 =null;
		ParserRuleReturnScope queryStatement716 =null;


		try {
			// HiveParser.g:1824:5: ( queryStatement ( queryOperator ^ queryStatement )* )
			// HiveParser.g:1824:7: queryStatement ( queryOperator ^ queryStatement )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_queryStatement_in_queryStatementExpression11378);
			queryStatement714=queryStatement();
			state._fsp--;

			adaptor.addChild(root_0, queryStatement714.getTree());

			// HiveParser.g:1824:22: ( queryOperator ^ queryStatement )*
			loop187:
			while (true) {
				int alt187=2;
				int LA187_0 = input.LA(1);
				if ( (LA187_0==KW_UNION) ) {
					alt187=1;
				}

				switch (alt187) {
				case 1 :
					// HiveParser.g:1824:23: queryOperator ^ queryStatement
					{
					pushFollow(FOLLOW_queryOperator_in_queryStatementExpression11381);
					queryOperator715=queryOperator();
					state._fsp--;

					root_0 = (CommonTree)adaptor.becomeRoot(queryOperator715.getTree(), root_0);
					pushFollow(FOLLOW_queryStatement_in_queryStatementExpression11384);
					queryStatement716=queryStatement();
					state._fsp--;

					adaptor.addChild(root_0, queryStatement716.getTree());

					}
					break;

				default :
					break loop187;
				}
			}

			}

			retval.stop = input.LT(-1);

			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

		}

		catch (RecognitionException e) {
		 reportError(e);
		  throw e;
		}

		finally {
			// do for sure before leaving
		}
		return retval;
	}