// $ANTLR 2.7.6 (2005-12-22): "order-by.g" -> "GeneratedOrderByFragmentParser.java"$ /* * Hibernate, Relational Persistence for Idiomatic Java * * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as * indicated by the @author tags or express copyright attribution * statements applied by the authors. All third-party contributions are * distributed under license by Red Hat Middleware LLC. * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution; if not, write to: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301 USA * */ package org.hibernate.sql.ordering.antlr; import antlr.TokenBuffer; import antlr.TokenStreamException; import antlr.TokenStreamIOException; import antlr.ANTLRException; import antlr.LLkParser; import antlr.Token; import antlr.TokenStream; import antlr.RecognitionException; import antlr.NoViableAltException; import antlr.MismatchedTokenException; import antlr.SemanticException; import antlr.ParserSharedInputState; import antlr.collections.impl.BitSet; import antlr.collections.AST; import java.util.Hashtable; import antlr.ASTFactory; import antlr.ASTPair; import antlr.collections.impl.ASTArray; /** * Antlr grammar for dealing with <tt>order-by</tt> mapping fragments. * @author Steve Ebersole */ public class GeneratedOrderByFragmentParser extends antlr.LLkParser implements OrderByTemplateTokenTypes { /** * Method for logging execution trace information. * * @param msg The trace message. */ protected void trace(String msg) { System.out.println( msg ); } /** * Extract a node's text. * * @param ast The node * * @return The text. */ protected final String extractText(AST ast) { // for some reason, within AST creation blocks "[]" I am somtimes unable to refer to the AST.getText() method // using #var (the #var is not interpreted as the rule's output AST). return ast.getText(); } /** * Process the given node as a quote identifier. These need to be quoted in the dialect-specific way. * * @param ident The quoted-identifier node. * * @return The processed node. * * @see org.hibernate.dialect.Dialect#quote */ protected AST quotedIdentifier(AST ident) { return ident; } /** * Process the given node as a quote string. * * @param ident The quoted string. This is used from within function param recognition, and represents a * SQL-quoted string. * * @return The processed node. */ protected AST quotedString(AST ident) { return ident; } /** * A check to see if the text of the given node represents a known function name. * * @param ast The node whose text we want to check. * * @return True if the node's text is a known function name, false otherwise. * * @see org.hibernate.dialect.function.SQLFunctionRegistry */ protected boolean isFunctionName(AST ast) { return false; } /** * Process the given node as a function. * * @param The node representing the function invocation (including parameters as subtree components). * * @return The processed node. */ protected AST resolveFunction(AST ast) { return ast; } /** * Process the given node as an IDENT. May represent either a column reference or a property reference. * * @param ident The node whose text represents either a column or property reference. * * @return The processed node. */ protected AST resolveIdent(AST ident) { return ident; } /** * Allow post processing of each <tt>sort specification</tt> * * @param The grammar-built sort specification subtree. * * @return The processed sort specification subtree. */ protected AST postProcessSortSpecification(AST sortSpec) { return sortSpec; } protected GeneratedOrderByFragmentParser(TokenBuffer tokenBuf, int k) { super(tokenBuf,k); tokenNames = _tokenNames; buildTokenTypeASTClassMap(); astFactory = new ASTFactory(getTokenTypeToASTClassMap()); } public GeneratedOrderByFragmentParser(TokenBuffer tokenBuf) { this(tokenBuf,3); } protected GeneratedOrderByFragmentParser(TokenStream lexer, int k) { super(lexer,k); tokenNames = _tokenNames; buildTokenTypeASTClassMap(); astFactory = new ASTFactory(getTokenTypeToASTClassMap()); } public GeneratedOrderByFragmentParser(TokenStream lexer) { this(lexer,3); } public GeneratedOrderByFragmentParser(ParserSharedInputState state) { super(state,3); tokenNames = _tokenNames; buildTokenTypeASTClassMap(); astFactory = new ASTFactory(getTokenTypeToASTClassMap()); } /** * Main recognition rule for this grammar */ public final void orderByFragment() throws RecognitionException, TokenStreamException { traceIn("orderByFragment"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST orderByFragment_AST = null; trace("orderByFragment"); try { // for error handling sortSpecification(); astFactory.addASTChild(currentAST, returnAST); { _loop3: do { if ((LA(1)==COMMA)) { match(COMMA); sortSpecification(); astFactory.addASTChild(currentAST, returnAST); } else { break _loop3; } } while (true); } if ( inputState.guessing==0 ) { orderByFragment_AST = (AST)currentAST.root; orderByFragment_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(ORDER_BY,"order-by")).add(orderByFragment_AST)); currentAST.root = orderByFragment_AST; currentAST.child = orderByFragment_AST!=null &&orderByFragment_AST.getFirstChild()!=null ? orderByFragment_AST.getFirstChild() : orderByFragment_AST; currentAST.advanceChildToEnd(); } orderByFragment_AST = (AST)currentAST.root; } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_0); } else { throw ex; } } returnAST = orderByFragment_AST; } finally { // debugging traceOut("orderByFragment"); } } /** * Reconition rule for what ANSI SQL terms the <tt>sort specification</tt>, which is essentially each thing upon which * the results should be sorted. */ public final void sortSpecification() throws RecognitionException, TokenStreamException { traceIn("sortSpecification"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST sortSpecification_AST = null; trace("sortSpecification"); try { // for error handling sortKey(); astFactory.addASTChild(currentAST, returnAST); { switch ( LA(1)) { case COLLATE: { collationSpecification(); astFactory.addASTChild(currentAST, returnAST); break; } case EOF: case ASCENDING: case DESCENDING: case COMMA: case LITERAL_ascending: case LITERAL_descending: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } { switch ( LA(1)) { case ASCENDING: case DESCENDING: case LITERAL_ascending: case LITERAL_descending: { orderingSpecification(); astFactory.addASTChild(currentAST, returnAST); break; } case EOF: case COMMA: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } if ( inputState.guessing==0 ) { sortSpecification_AST = (AST)currentAST.root; sortSpecification_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(SORT_SPEC,"{sort specification}")).add(sortSpecification_AST)); sortSpecification_AST = postProcessSortSpecification( sortSpecification_AST ); currentAST.root = sortSpecification_AST; currentAST.child = sortSpecification_AST!=null &&sortSpecification_AST.getFirstChild()!=null ? sortSpecification_AST.getFirstChild() : sortSpecification_AST; currentAST.advanceChildToEnd(); } sortSpecification_AST = (AST)currentAST.root; } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_1); } else { throw ex; } } returnAST = sortSpecification_AST; } finally { // debugging traceOut("sortSpecification"); } } /** * Reconition rule for what ANSI SQL terms the <tt>sort key</tt> which is the expression (column, function, etc) upon * which to base the sorting. */ public final void sortKey() throws RecognitionException, TokenStreamException { traceIn("sortKey"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST sortKey_AST = null; AST e_AST = null; trace("sortKey"); try { // for error handling expression(); e_AST = (AST)returnAST; if ( inputState.guessing==0 ) { sortKey_AST = (AST)currentAST.root; sortKey_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(SORT_KEY,"sort key")).add(e_AST)); currentAST.root = sortKey_AST; currentAST.child = sortKey_AST!=null &&sortKey_AST.getFirstChild()!=null ? sortKey_AST.getFirstChild() : sortKey_AST; currentAST.advanceChildToEnd(); } } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_2); } else { throw ex; } } returnAST = sortKey_AST; } finally { // debugging traceOut("sortKey"); } } /** * Reconition rule for what ANSI SQL terms the <tt>collation specification</tt> used to allow specifying that sorting for * the given {@link #sortSpecification} be treated within a specific character-set. */ public final void collationSpecification() throws RecognitionException, TokenStreamException { traceIn("collationSpecification"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST collationSpecification_AST = null; Token c = null; AST c_AST = null; AST cn_AST = null; trace("collationSpecification"); try { // for error handling c = LT(1); c_AST = astFactory.create(c); match(COLLATE); collationName(); cn_AST = (AST)returnAST; if ( inputState.guessing==0 ) { collationSpecification_AST = (AST)currentAST.root; collationSpecification_AST = (AST)astFactory.make( (new ASTArray(1)).add(astFactory.create(COLLATE,extractText(cn_AST)))); currentAST.root = collationSpecification_AST; currentAST.child = collationSpecification_AST!=null &&collationSpecification_AST.getFirstChild()!=null ? collationSpecification_AST.getFirstChild() : collationSpecification_AST; currentAST.advanceChildToEnd(); } } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_3); } else { throw ex; } } returnAST = collationSpecification_AST; } finally { // debugging traceOut("collationSpecification"); } } /** * Reconition rule for what ANSI SQL terms the <tt>ordering specification</tt>; <tt>ASCENDING</tt> or * <tt>DESCENDING</tt>. */ public final void orderingSpecification() throws RecognitionException, TokenStreamException { traceIn("orderingSpecification"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST orderingSpecification_AST = null; trace("orderingSpecification"); try { // for error handling switch ( LA(1)) { case ASCENDING: case LITERAL_ascending: { { switch ( LA(1)) { case ASCENDING: { match(ASCENDING); break; } case LITERAL_ascending: { match(LITERAL_ascending); break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } if ( inputState.guessing==0 ) { orderingSpecification_AST = (AST)currentAST.root; orderingSpecification_AST = (AST)astFactory.make( (new ASTArray(1)).add(astFactory.create(ORDER_SPEC,"asc"))); currentAST.root = orderingSpecification_AST; currentAST.child = orderingSpecification_AST!=null &&orderingSpecification_AST.getFirstChild()!=null ? orderingSpecification_AST.getFirstChild() : orderingSpecification_AST; currentAST.advanceChildToEnd(); } break; } case DESCENDING: case LITERAL_descending: { { switch ( LA(1)) { case DESCENDING: { match(DESCENDING); break; } case LITERAL_descending: { match(LITERAL_descending); break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } if ( inputState.guessing==0 ) { orderingSpecification_AST = (AST)currentAST.root; orderingSpecification_AST = (AST)astFactory.make( (new ASTArray(1)).add(astFactory.create(ORDER_SPEC,"desc"))); currentAST.root = orderingSpecification_AST; currentAST.child = orderingSpecification_AST!=null &&orderingSpecification_AST.getFirstChild()!=null ? orderingSpecification_AST.getFirstChild() : orderingSpecification_AST; currentAST.advanceChildToEnd(); } break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_1); } else { throw ex; } } returnAST = orderingSpecification_AST; } finally { // debugging traceOut("orderingSpecification"); } } /** * Reconition rule what this grammar recognizes as valid <tt>sort key</tt>. */ public final void expression() throws RecognitionException, TokenStreamException { traceIn("expression"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST expression_AST = null; Token qi = null; AST qi_AST = null; AST f_AST = null; AST p_AST = null; Token i = null; AST i_AST = null; trace("expression"); try { // for error handling if ((LA(1)==HARD_QUOTE)) { AST tmp6_AST = null; tmp6_AST = astFactory.create(LT(1)); match(HARD_QUOTE); qi = LT(1); qi_AST = astFactory.create(qi); match(IDENT); AST tmp7_AST = null; tmp7_AST = astFactory.create(LT(1)); match(HARD_QUOTE); if ( inputState.guessing==0 ) { expression_AST = (AST)currentAST.root; expression_AST = quotedIdentifier( qi_AST ); currentAST.root = expression_AST; currentAST.child = expression_AST!=null &&expression_AST.getFirstChild()!=null ? expression_AST.getFirstChild() : expression_AST; currentAST.advanceChildToEnd(); } } else { boolean synPredMatched12 = false; if (((LA(1)==IDENT) && (LA(2)==DOT||LA(2)==OPEN_PAREN) && (_tokenSet_4.member(LA(3))))) { int _m12 = mark(); synPredMatched12 = true; inputState.guessing++; try { { match(IDENT); { _loop11: do { if ((LA(1)==DOT)) { match(DOT); match(IDENT); } else { break _loop11; } } while (true); } match(OPEN_PAREN); } } catch (RecognitionException pe) { synPredMatched12 = false; } rewind(_m12); inputState.guessing--; } if ( synPredMatched12 ) { functionCall(); f_AST = (AST)returnAST; if ( inputState.guessing==0 ) { expression_AST = (AST)currentAST.root; expression_AST = f_AST; currentAST.root = expression_AST; currentAST.child = expression_AST!=null &&expression_AST.getFirstChild()!=null ? expression_AST.getFirstChild() : expression_AST; currentAST.advanceChildToEnd(); } } else if ((LA(1)==IDENT) && (LA(2)==DOT) && (LA(3)==IDENT)) { simplePropertyPath(); p_AST = (AST)returnAST; if ( inputState.guessing==0 ) { expression_AST = (AST)currentAST.root; expression_AST = resolveIdent( p_AST ); currentAST.root = expression_AST; currentAST.child = expression_AST!=null &&expression_AST.getFirstChild()!=null ? expression_AST.getFirstChild() : expression_AST; currentAST.advanceChildToEnd(); } } else if ((LA(1)==IDENT) && (_tokenSet_5.member(LA(2)))) { i = LT(1); i_AST = astFactory.create(i); match(IDENT); if ( inputState.guessing==0 ) { expression_AST = (AST)currentAST.root; if ( isFunctionName( i_AST ) ) { expression_AST = resolveFunction( i_AST ); } else { expression_AST = resolveIdent( i_AST ); } currentAST.root = expression_AST; currentAST.child = expression_AST!=null &&expression_AST.getFirstChild()!=null ? expression_AST.getFirstChild() : expression_AST; currentAST.advanceChildToEnd(); } } else { throw new NoViableAltException(LT(1), getFilename()); } } } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_5); } else { throw ex; } } returnAST = expression_AST; } finally { // debugging traceOut("expression"); } } /** * Recognition rule for a function call */ public final void functionCall() throws RecognitionException, TokenStreamException { traceIn("functionCall"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST functionCall_AST = null; AST fn_AST = null; AST pl_AST = null; trace("functionCall"); try { // for error handling functionName(); fn_AST = (AST)returnAST; AST tmp8_AST = null; tmp8_AST = astFactory.create(LT(1)); match(OPEN_PAREN); functionParameterList(); pl_AST = (AST)returnAST; AST tmp9_AST = null; tmp9_AST = astFactory.create(LT(1)); match(CLOSE_PAREN); if ( inputState.guessing==0 ) { functionCall_AST = (AST)currentAST.root; functionCall_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(IDENT,extractText(fn_AST))).add(pl_AST)); functionCall_AST = resolveFunction( functionCall_AST ); currentAST.root = functionCall_AST; currentAST.child = functionCall_AST!=null &&functionCall_AST.getFirstChild()!=null ? functionCall_AST.getFirstChild() : functionCall_AST; currentAST.advanceChildToEnd(); } } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_5); } else { throw ex; } } returnAST = functionCall_AST; } finally { // debugging traceOut("functionCall"); } } /** * A simple-property-path is an IDENT followed by one or more (DOT IDENT) sequences */ public final void simplePropertyPath() throws RecognitionException, TokenStreamException { traceIn("simplePropertyPath"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST simplePropertyPath_AST = null; Token i = null; AST i_AST = null; Token i2 = null; AST i2_AST = null; trace("simplePropertyPath"); StringBuffer buffer = new StringBuffer(); try { // for error handling i = LT(1); i_AST = astFactory.create(i); astFactory.addASTChild(currentAST, i_AST); match(IDENT); if ( inputState.guessing==0 ) { buffer.append( i.getText() ); } { int _cnt31=0; _loop31: do { if ((LA(1)==DOT)) { AST tmp10_AST = null; tmp10_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp10_AST); match(DOT); i2 = LT(1); i2_AST = astFactory.create(i2); astFactory.addASTChild(currentAST, i2_AST); match(IDENT); if ( inputState.guessing==0 ) { buffer.append( '.').append( i2.getText() ); } } else { if ( _cnt31>=1 ) { break _loop31; } else {throw new NoViableAltException(LT(1), getFilename());} } _cnt31++; } while (true); } if ( inputState.guessing==0 ) { simplePropertyPath_AST = (AST)currentAST.root; simplePropertyPath_AST = (AST)astFactory.make( (new ASTArray(1)).add(astFactory.create(IDENT,buffer.toString()))); currentAST.root = simplePropertyPath_AST; currentAST.child = simplePropertyPath_AST!=null &&simplePropertyPath_AST.getFirstChild()!=null ? simplePropertyPath_AST.getFirstChild() : simplePropertyPath_AST; currentAST.advanceChildToEnd(); } simplePropertyPath_AST = (AST)currentAST.root; } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_5); } else { throw ex; } } returnAST = simplePropertyPath_AST; } finally { // debugging traceOut("simplePropertyPath"); } } /** * Intended for use as a syntactic predicate to determine whether an IDENT represents a known SQL function name. */ public final void functionCallCheck() throws RecognitionException, TokenStreamException { traceIn("functionCallCheck"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST functionCallCheck_AST = null; trace("functionCallCheck"); try { // for error handling AST tmp11_AST = null; tmp11_AST = astFactory.create(LT(1)); match(IDENT); { _loop15: do { if ((LA(1)==DOT)) { AST tmp12_AST = null; tmp12_AST = astFactory.create(LT(1)); match(DOT); AST tmp13_AST = null; tmp13_AST = astFactory.create(LT(1)); match(IDENT); } else { break _loop15; } } while (true); } AST tmp14_AST = null; tmp14_AST = astFactory.create(LT(1)); match(OPEN_PAREN); if (!( true )) throw new SemanticException(" true "); } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_0); } else { throw ex; } } returnAST = functionCallCheck_AST; } finally { // debugging traceOut("functionCallCheck"); } } /** * A function-name is an IDENT followed by zero or more (DOT IDENT) sequences */ public final void functionName() throws RecognitionException, TokenStreamException { traceIn("functionName"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST functionName_AST = null; Token i = null; AST i_AST = null; Token i2 = null; AST i2_AST = null; trace("functionName"); StringBuffer buffer = new StringBuffer(); try { // for error handling i = LT(1); i_AST = astFactory.create(i); astFactory.addASTChild(currentAST, i_AST); match(IDENT); if ( inputState.guessing==0 ) { buffer.append( i.getText() ); } { _loop19: do { if ((LA(1)==DOT)) { AST tmp15_AST = null; tmp15_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp15_AST); match(DOT); i2 = LT(1); i2_AST = astFactory.create(i2); astFactory.addASTChild(currentAST, i2_AST); match(IDENT); if ( inputState.guessing==0 ) { buffer.append( '.').append( i2.getText() ); } } else { break _loop19; } } while (true); } if ( inputState.guessing==0 ) { functionName_AST = (AST)currentAST.root; functionName_AST = (AST)astFactory.make( (new ASTArray(1)).add(astFactory.create(IDENT,buffer.toString()))); currentAST.root = functionName_AST; currentAST.child = functionName_AST!=null &&functionName_AST.getFirstChild()!=null ? functionName_AST.getFirstChild() : functionName_AST; currentAST.advanceChildToEnd(); } functionName_AST = (AST)currentAST.root; } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_6); } else { throw ex; } } returnAST = functionName_AST; } finally { // debugging traceOut("functionName"); } } /** * Recognition rule used to "wrap" all function parameters into an EXPR_LIST node */ public final void functionParameterList() throws RecognitionException, TokenStreamException { traceIn("functionParameterList"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST functionParameterList_AST = null; trace("functionParameterList"); try { // for error handling functionParameter(); astFactory.addASTChild(currentAST, returnAST); { _loop22: do { if ((LA(1)==COMMA)) { match(COMMA); functionParameter(); astFactory.addASTChild(currentAST, returnAST); } else { break _loop22; } } while (true); } if ( inputState.guessing==0 ) { functionParameterList_AST = (AST)currentAST.root; functionParameterList_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(EXPR_LIST,"{param list}")).add(functionParameterList_AST)); currentAST.root = functionParameterList_AST; currentAST.child = functionParameterList_AST!=null &&functionParameterList_AST.getFirstChild()!=null ? functionParameterList_AST.getFirstChild() : functionParameterList_AST; currentAST.advanceChildToEnd(); } functionParameterList_AST = (AST)currentAST.root; } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_7); } else { throw ex; } } returnAST = functionParameterList_AST; } finally { // debugging traceOut("functionParameterList"); } } /** * Recognized function parameters. */ public final void functionParameter() throws RecognitionException, TokenStreamException { traceIn("functionParameter"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST functionParameter_AST = null; trace("functionParameter"); try { // for error handling switch ( LA(1)) { case HARD_QUOTE: case IDENT: { expression(); astFactory.addASTChild(currentAST, returnAST); functionParameter_AST = (AST)currentAST.root; break; } case NUM_DOUBLE: { AST tmp17_AST = null; tmp17_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp17_AST); match(NUM_DOUBLE); functionParameter_AST = (AST)currentAST.root; break; } case NUM_FLOAT: { AST tmp18_AST = null; tmp18_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp18_AST); match(NUM_FLOAT); functionParameter_AST = (AST)currentAST.root; break; } case NUM_INT: { AST tmp19_AST = null; tmp19_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp19_AST); match(NUM_INT); functionParameter_AST = (AST)currentAST.root; break; } case NUM_LONG: { AST tmp20_AST = null; tmp20_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp20_AST); match(NUM_LONG); functionParameter_AST = (AST)currentAST.root; break; } case QUOTED_STRING: { AST tmp21_AST = null; tmp21_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp21_AST); match(QUOTED_STRING); if ( inputState.guessing==0 ) { functionParameter_AST = (AST)currentAST.root; functionParameter_AST = quotedString( functionParameter_AST ); currentAST.root = functionParameter_AST; currentAST.child = functionParameter_AST!=null &&functionParameter_AST.getFirstChild()!=null ? functionParameter_AST.getFirstChild() : functionParameter_AST; currentAST.advanceChildToEnd(); } functionParameter_AST = (AST)currentAST.root; break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_8); } else { throw ex; } } returnAST = functionParameter_AST; } finally { // debugging traceOut("functionParameter"); } } /** * The collation name wrt {@link #collationSpecification}. Namely, the character-set. */ public final void collationName() throws RecognitionException, TokenStreamException { traceIn("collationName"); try { // debugging returnAST = null; ASTPair currentAST = new ASTPair(); AST collationName_AST = null; trace("collationSpecification"); try { // for error handling AST tmp22_AST = null; tmp22_AST = astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp22_AST); match(IDENT); collationName_AST = (AST)currentAST.root; } catch (RecognitionException ex) { if (inputState.guessing==0) { reportError(ex); recover(ex,_tokenSet_3); } else { throw ex; } } returnAST = collationName_AST; } finally { // debugging traceOut("collationName"); } } public static final String[] _tokenNames = { "<0>", "EOF", "<2>", "NULL_TREE_LOOKAHEAD", "ORDER_BY", "SORT_SPEC", "ORDER_SPEC", "SORT_KEY", "EXPR_LIST", "DOT", "IDENT_LIST", "COLUMN_REF", "\"collate\"", "\"asc\"", "\"desc\"", "COMMA", "HARD_QUOTE", "IDENT", "OPEN_PAREN", "CLOSE_PAREN", "NUM_DOUBLE", "NUM_FLOAT", "NUM_INT", "NUM_LONG", "QUOTED_STRING", "\"ascending\"", "\"descending\"", "ID_START_LETTER", "ID_LETTER", "ESCqs", "HEX_DIGIT", "EXPONENT", "FLOAT_SUFFIX", "WS" }; protected void buildTokenTypeASTClassMap() { tokenTypeToASTClassMap=null; }; private static final long[] mk_tokenSet_0() { long[] data = { 2L, 0L}; return data; } public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0()); private static final long[] mk_tokenSet_1() { long[] data = { 32770L, 0L}; return data; } public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1()); private static final long[] mk_tokenSet_2() { long[] data = { 100724738L, 0L}; return data; } public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2()); private static final long[] mk_tokenSet_3() { long[] data = { 100720642L, 0L}; return data; } public static final BitSet _tokenSet_3 = new BitSet(mk_tokenSet_3()); private static final long[] mk_tokenSet_4() { long[] data = { 32702464L, 0L}; return data; } public static final BitSet _tokenSet_4 = new BitSet(mk_tokenSet_4()); private static final long[] mk_tokenSet_5() { long[] data = { 101249026L, 0L}; return data; } public static final BitSet _tokenSet_5 = new BitSet(mk_tokenSet_5()); private static final long[] mk_tokenSet_6() { long[] data = { 262144L, 0L}; return data; } public static final BitSet _tokenSet_6 = new BitSet(mk_tokenSet_6()); private static final long[] mk_tokenSet_7() { long[] data = { 524288L, 0L}; return data; } public static final BitSet _tokenSet_7 = new BitSet(mk_tokenSet_7()); private static final long[] mk_tokenSet_8() { long[] data = { 557056L, 0L}; return data; } public static final BitSet _tokenSet_8 = new BitSet(mk_tokenSet_8()); }