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

		CommonTree root_0 = null;

		Token KW_ALTER153=null;
		Token KW_TABLE154=null;
		Token KW_VIEW156=null;
		Token KW_INDEX158=null;
		Token KW_DATABASE160=null;
		ParserRuleReturnScope alterTableStatementSuffix155 =null;
		ParserRuleReturnScope alterViewStatementSuffix157 =null;
		ParserRuleReturnScope alterIndexStatementSuffix159 =null;
		ParserRuleReturnScope alterDatabaseStatementSuffix161 =null;

		CommonTree KW_ALTER153_tree=null;
		CommonTree KW_TABLE154_tree=null;
		CommonTree KW_VIEW156_tree=null;
		CommonTree KW_INDEX158_tree=null;
		CommonTree KW_DATABASE160_tree=null;

		 msgs.push("alter statement"); 
		try {
			// HiveParser.g:861:5: ( KW_ALTER ! ( KW_TABLE ! alterTableStatementSuffix | KW_VIEW ! alterViewStatementSuffix | KW_INDEX ! alterIndexStatementSuffix | KW_DATABASE ! alterDatabaseStatementSuffix ) )
			// HiveParser.g:861:7: KW_ALTER ! ( KW_TABLE ! alterTableStatementSuffix | KW_VIEW ! alterViewStatementSuffix | KW_INDEX ! alterIndexStatementSuffix | KW_DATABASE ! alterDatabaseStatementSuffix )
			{
			root_0 = (CommonTree)adaptor.nil();


			KW_ALTER153=(Token)match(input,KW_ALTER,FOLLOW_KW_ALTER_in_alterStatement3294); 
			// HiveParser.g:862:9: ( KW_TABLE ! alterTableStatementSuffix | KW_VIEW ! alterViewStatementSuffix | KW_INDEX ! alterIndexStatementSuffix | KW_DATABASE ! alterDatabaseStatementSuffix )
			int alt47=4;
			switch ( input.LA(1) ) {
			case KW_TABLE:
				{
				alt47=1;
				}
				break;
			case KW_VIEW:
				{
				alt47=2;
				}
				break;
			case KW_INDEX:
				{
				alt47=3;
				}
				break;
			case KW_DATABASE:
				{
				alt47=4;
				}
				break;
			default:
				NoViableAltException nvae =
					new NoViableAltException("", 47, 0, input);
				throw nvae;
			}
			switch (alt47) {
				case 1 :
					// HiveParser.g:863:13: KW_TABLE ! alterTableStatementSuffix
					{
					KW_TABLE154=(Token)match(input,KW_TABLE,FOLLOW_KW_TABLE_in_alterStatement3319); 
					pushFollow(FOLLOW_alterTableStatementSuffix_in_alterStatement3322);
					alterTableStatementSuffix155=alterTableStatementSuffix();
					state._fsp--;

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

					}
					break;
				case 2 :
					// HiveParser.g:865:13: KW_VIEW ! alterViewStatementSuffix
					{
					KW_VIEW156=(Token)match(input,KW_VIEW,FOLLOW_KW_VIEW_in_alterStatement3346); 
					pushFollow(FOLLOW_alterViewStatementSuffix_in_alterStatement3349);
					alterViewStatementSuffix157=alterViewStatementSuffix();
					state._fsp--;

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

					}
					break;
				case 3 :
					// HiveParser.g:867:13: KW_INDEX ! alterIndexStatementSuffix
					{
					KW_INDEX158=(Token)match(input,KW_INDEX,FOLLOW_KW_INDEX_in_alterStatement3373); 
					pushFollow(FOLLOW_alterIndexStatementSuffix_in_alterStatement3376);
					alterIndexStatementSuffix159=alterIndexStatementSuffix();
					state._fsp--;

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

					}
					break;
				case 4 :
					// HiveParser.g:869:13: KW_DATABASE ! alterDatabaseStatementSuffix
					{
					KW_DATABASE160=(Token)match(input,KW_DATABASE,FOLLOW_KW_DATABASE_in_alterStatement3400); 
					pushFollow(FOLLOW_alterDatabaseStatementSuffix_in_alterStatement3403);
					alterDatabaseStatementSuffix161=alterDatabaseStatementSuffix();
					state._fsp--;

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

					}
					break;

			}

			}

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

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

			 msgs.pop(); 
		}

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

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