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

		CommonTree root_0 = null;

		Token KW_CREATE490=null;
		Token KW_TEMPORARY491=null;
		Token KW_FUNCTION492=null;
		Token KW_AS494=null;
		Token StringLiteral495=null;
		ParserRuleReturnScope identifier493 =null;

		CommonTree KW_CREATE490_tree=null;
		CommonTree KW_TEMPORARY491_tree=null;
		CommonTree KW_FUNCTION492_tree=null;
		CommonTree KW_AS494_tree=null;
		CommonTree StringLiteral495_tree=null;
		RewriteRuleTokenStream stream_StringLiteral=new RewriteRuleTokenStream(adaptor,"token StringLiteral");
		RewriteRuleTokenStream stream_KW_AS=new RewriteRuleTokenStream(adaptor,"token KW_AS");
		RewriteRuleTokenStream stream_KW_CREATE=new RewriteRuleTokenStream(adaptor,"token KW_CREATE");
		RewriteRuleTokenStream stream_KW_FUNCTION=new RewriteRuleTokenStream(adaptor,"token KW_FUNCTION");
		RewriteRuleTokenStream stream_KW_TEMPORARY=new RewriteRuleTokenStream(adaptor,"token KW_TEMPORARY");
		RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier");

		 msgs.push("create function statement"); 
		try {
			// HiveParser.g:1398:5: ( KW_CREATE KW_TEMPORARY KW_FUNCTION identifier KW_AS StringLiteral -> ^( TOK_CREATEFUNCTION identifier StringLiteral ) )
			// HiveParser.g:1398:7: KW_CREATE KW_TEMPORARY KW_FUNCTION identifier KW_AS StringLiteral
			{
			KW_CREATE490=(Token)match(input,KW_CREATE,FOLLOW_KW_CREATE_in_createFunctionStatement7841);  
			stream_KW_CREATE.add(KW_CREATE490);

			KW_TEMPORARY491=(Token)match(input,KW_TEMPORARY,FOLLOW_KW_TEMPORARY_in_createFunctionStatement7843);  
			stream_KW_TEMPORARY.add(KW_TEMPORARY491);

			KW_FUNCTION492=(Token)match(input,KW_FUNCTION,FOLLOW_KW_FUNCTION_in_createFunctionStatement7845);  
			stream_KW_FUNCTION.add(KW_FUNCTION492);

			pushFollow(FOLLOW_identifier_in_createFunctionStatement7847);
			identifier493=identifier();
			state._fsp--;

			stream_identifier.add(identifier493.getTree());
			KW_AS494=(Token)match(input,KW_AS,FOLLOW_KW_AS_in_createFunctionStatement7849);  
			stream_KW_AS.add(KW_AS494);

			StringLiteral495=(Token)match(input,StringLiteral,FOLLOW_StringLiteral_in_createFunctionStatement7851);  
			stream_StringLiteral.add(StringLiteral495);

			// AST REWRITE
			// elements: StringLiteral, identifier
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 1399:5: -> ^( TOK_CREATEFUNCTION identifier StringLiteral )
			{
				// HiveParser.g:1399:8: ^( TOK_CREATEFUNCTION identifier StringLiteral )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TOK_CREATEFUNCTION, "TOK_CREATEFUNCTION"), root_1);
				adaptor.addChild(root_1, stream_identifier.nextTree());
				adaptor.addChild(root_1, stream_StringLiteral.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;

			}

			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;
	}