public final hqlParser.orderByClause_return orderByClause() throws RecognitionException {
		hqlParser.orderByClause_return retval = new hqlParser.orderByClause_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		Token ORDER126=null;
		Token string_literal127=null;
		Token COMMA129=null;
		ParserRuleReturnScope orderElement128 =null;
		ParserRuleReturnScope orderElement130 =null;

		CommonTree ORDER126_tree=null;
		CommonTree string_literal127_tree=null;
		CommonTree COMMA129_tree=null;

		try {
			// hql.g:336:2: ( ORDER ^ 'by' ! orderElement ( COMMA ! orderElement )* )
			// hql.g:336:4: ORDER ^ 'by' ! orderElement ( COMMA ! orderElement )*
			{
			root_0 = (CommonTree)adaptor.nil();


			ORDER126=(Token)match(input,ORDER,FOLLOW_ORDER_in_orderByClause1603);
			ORDER126_tree = (CommonTree)adaptor.create(ORDER126);
			root_0 = (CommonTree)adaptor.becomeRoot(ORDER126_tree, root_0);

			string_literal127=(Token)match(input,LITERAL_by,FOLLOW_LITERAL_by_in_orderByClause1606);
			pushFollow(FOLLOW_orderElement_in_orderByClause1609);
			orderElement128=orderElement();
			state._fsp--;

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

			// hql.g:336:30: ( COMMA ! orderElement )*
			loop40:
			while (true) {
				int alt40=2;
				int LA40_0 = input.LA(1);
				if ( (LA40_0==COMMA) ) {
					alt40=1;
				}

				switch (alt40) {
				case 1 :
					// hql.g:336:32: COMMA ! orderElement
					{
					COMMA129=(Token)match(input,COMMA,FOLLOW_COMMA_in_orderByClause1613);
					pushFollow(FOLLOW_orderElement_in_orderByClause1616);
					orderElement130=orderElement();
					state._fsp--;

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

					}
					break;

				default :
					break loop40;
				}
			}

			}

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

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

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
public final hqlParser . orderByClause_return orderByClause ( ) throws RecognitionException { hqlParser . orderByClause_return retval = new hqlParser . orderByClause_return ( ) ; retval . start = input . LT ( 1 ) ; CommonTree root_0 = null ; Token ORDER126 = null ; Token string_literal127 = null ; Token COMMA129 = null ; ParserRuleReturnScope orderElement128 = null ; ParserRuleReturnScope orderElement130 = null ; CommonTree ORDER126_tree = null ; CommonTree string_literal127_tree = null ; CommonTree COMMA129_tree = null ; try { { root_0 = ( CommonTree ) adaptor . nil ( ) ; ORDER126 = ( Token ) match ( input , ORDER , FOLLOW_ORDER_in_orderByClause1603 ) ; ORDER126_tree = ( CommonTree ) adaptor . create ( ORDER126 ) ; root_0 = ( CommonTree ) adaptor . becomeRoot ( ORDER126_tree , root_0 ) ; string_literal127 = ( Token ) match ( input , LITERAL_by , FOLLOW_LITERAL_by_in_orderByClause1606 ) ; pushFollow ( FOLLOW_orderElement_in_orderByClause1609 ) ; orderElement128 = orderElement ( ) ; state . _fsp -- ; adaptor . addChild ( root_0 , orderElement128 . getTree ( ) ) ; loop40 : while ( true ) { int alt40 = 2 ; int LA40_0 = input . LA ( 1 ) ; if ( ( LA40_0 == COMMA ) ) { alt40 = 1 ; } switch ( alt40 ) { case 1 : { COMMA129 = ( Token ) match ( input , COMMA , FOLLOW_COMMA_in_orderByClause1613 ) ; pushFollow ( FOLLOW_orderElement_in_orderByClause1616 ) ; orderElement130 = orderElement ( ) ; state . _fsp -- ; adaptor . addChild ( root_0 , orderElement130 . getTree ( ) ) ; } break ; default : break loop40 ; } } } retval . stop = input . LT ( - 1 ) ; retval . tree = ( CommonTree ) adaptor . rulePostProcessing ( root_0 ) ; adaptor . setTokenBoundaries ( retval . tree , retval . start , retval . stop ) ; } catch ( RecognitionException re ) { reportError ( re ) ; recover ( input , re ) ; retval . tree = ( CommonTree ) adaptor . errorNode ( input , retval . start , input . LT ( - 1 ) , re ) ; } finally { } return retval ; }
hql.g:335:1: orderByClause : ORDER ^ 'by' ! orderElement ( COMMA ! orderElement )* ;