All Downloads are FREE. Search and download functionalities are using the official Maven repository.

oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser Maven / Gradle / Ivy

There is a newer version: 2.1-60f
Show newest version
// $ANTLR 2.7.3: "EJBQLParser.g" -> "EJBQLParser.java"$

    package oracle.toplink.essentials.internal.parsing.ejbql.antlr273;

    import java.util.List;
    import java.util.ArrayList;

    import static oracle.toplink.essentials.internal.parsing.NodeFactory.*;
    import oracle.toplink.essentials.exceptions.EJBQLException;

import persistence.antlr.TokenBuffer;
import persistence.antlr.TokenStreamException;
import persistence.antlr.TokenStreamIOException;
import persistence.antlr.ANTLRException;
import persistence.antlr.LLkParser;
import persistence.antlr.Token;
import persistence.antlr.TokenStream;
import persistence.antlr.RecognitionException;
import persistence.antlr.NoViableAltException;
import persistence.antlr.MismatchedTokenException;
import persistence.antlr.SemanticException;
import persistence.antlr.ParserSharedInputState;
import persistence.antlr.collections.impl.BitSet;

/** */
public class EJBQLParser extends oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser       implements EJBQLTokenTypes
 {

    /** The root node of the parsed EJBQL query. */
    private Object root;

    /** Flag indicating whether aggregates are allowed. */
    private boolean aggregatesAllowed = false;

    /** */
    protected void setAggregatesAllowed(boolean allowed) {
        this.aggregatesAllowed = allowed;
    }

    /** */
    protected boolean aggregatesAllowed() {
        return aggregatesAllowed;
    }

    /** */
    protected void validateAbstractSchemaName(Token token) 
        throws RecognitionException {
        String text = token.getText();
        if (!isValidJavaIdentifier(token.getText())) {
            throw new NoViableAltException(token, getFilename());
        }
    }

    /** */
    protected void validateAttributeName(Token token) 
        throws RecognitionException {
        String text = token.getText();
        if (!isValidJavaIdentifier(token.getText())) {
            throw new NoViableAltException(token, getFilename());
        }
    }

    /** */
    protected boolean isValidJavaIdentifier(String text) {
        if ((text == null) || text.equals(""))
            return false;

        // check first char
        if (!Character.isJavaIdentifierStart(text.charAt(0)))
            return false;

        // check remaining characters
        for (int i = 1; i < text.length(); i++) {
            if (!Character.isJavaIdentifierPart(text.charAt(i))) {
                return false;
            }
        }
        
        return true;
    }

    protected String convertStringLiteral(String text) {
        // skip leading and trailing quotes
        String literal = text.substring(1, text.length() - 1);
        
        // convert ''s to 's
        while (true) {
            int index = literal.indexOf("''");
            if (index == -1) {
                break;
            }
            literal = literal.substring(0, index) + 
                      literal.substring(index + 1, literal.length());
        }

        return literal;
    }

    /** */
    public Object getRootNode() {
        return root;
    }


protected EJBQLParser(TokenBuffer tokenBuf, int k) {
  super(tokenBuf,k);
  tokenNames = _tokenNames;
}

public EJBQLParser(TokenBuffer tokenBuf) {
  this(tokenBuf,3);
}

protected EJBQLParser(TokenStream lexer, int k) {
  super(lexer,k);
  tokenNames = _tokenNames;
}

public EJBQLParser(TokenStream lexer) {
  this(lexer,3);
}

public EJBQLParser(ParserSharedInputState state) {
  super(state,3);
  tokenNames = _tokenNames;
}

	public final void document() throws RecognitionException, TokenStreamException {
		
		
		try {      // for error handling
			switch ( LA(1)) {
			case SELECT:
			{
				root=selectStatement();
				break;
			}
			case UPDATE:
			{
				root=updateStatement();
				break;
			}
			case DELETE:
			{
				root=deleteStatement();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_0);
			} else {
			  throw ex;
			}
		}
	}
	
	public final Object  selectStatement() throws RecognitionException, TokenStreamException {
		Object node;
		
		
		node = null;
		Object select, from;
		Object where = null;
		Object groupBy = null;
		Object having = null;
		Object orderBy = null;
		
		
		try {      // for error handling
			select=selectClause();
			from=fromClause();
			{
			switch ( LA(1)) {
			case WHERE:
			{
				where=whereClause();
				break;
			}
			case EOF:
			case GROUP:
			case HAVING:
			case ORDER:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case GROUP:
			{
				groupBy=groupByClause();
				break;
			}
			case EOF:
			case HAVING:
			case ORDER:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case HAVING:
			{
				having=havingClause();
				break;
			}
			case EOF:
			case ORDER:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case ORDER:
			{
				orderBy=orderByClause();
				break;
			}
			case EOF:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			match(Token.EOF_TYPE);
			if ( inputState.guessing==0 ) {
				
				node = factory.newSelectStatement(0, 0, select, from, where, 
				groupBy, having, orderBy); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_0);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  updateStatement() throws RecognitionException, TokenStreamException {
		Object node;
		
		
		node = null; 
		Object update, set, where = null;
		
		
		try {      // for error handling
			update=updateClause();
			set=setClause();
			{
			switch ( LA(1)) {
			case WHERE:
			{
				where=whereClause();
				break;
			}
			case EOF:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			match(Token.EOF_TYPE);
			if ( inputState.guessing==0 ) {
				node = factory.newUpdateStatement(0, 0, update, set, where);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_0);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  deleteStatement() throws RecognitionException, TokenStreamException {
		Object node;
		
		
		node = null; 
		Object delete, where = null;
		
		
		try {      // for error handling
			delete=deleteClause();
			{
			switch ( LA(1)) {
			case WHERE:
			{
				where=whereClause();
				break;
			}
			case EOF:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			match(Token.EOF_TYPE);
			if ( inputState.guessing==0 ) {
				node = factory.newDeleteStatement(0, 0, delete, where);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_0);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  selectClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null;
		boolean distinct = false;
		List exprs = new ArrayList();
		
		
		try {      // for error handling
			t = LT(1);
			match(SELECT);
			{
			switch ( LA(1)) {
			case DISTINCT:
			{
				match(DISTINCT);
				if ( inputState.guessing==0 ) {
					distinct = true;
				}
				break;
			}
			case AVG:
			case COUNT:
			case MAX:
			case MIN:
			case NEW:
			case OBJECT:
			case SUM:
			case IDENT:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			node=selectExpression();
			if ( inputState.guessing==0 ) {
				exprs.add(node);
			}
			{
			_loop26:
			do {
				if ((LA(1)==COMMA)) {
					match(COMMA);
					node=selectExpression();
					if ( inputState.guessing==0 ) {
						exprs.add(node);
					}
				}
				else {
					break _loop26;
				}
				
			} while (true);
			}
			if ( inputState.guessing==0 ) {
				
				node = factory.newSelectClause(t.getLine(), t.getColumn(), 
				distinct, exprs); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_1);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  fromClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null; 
		List varDecls = new ArrayList();
		
		
		try {      // for error handling
			t = LT(1);
			match(FROM);
			identificationVariableDeclaration(varDecls);
			{
			_loop47:
			do {
				if ((LA(1)==COMMA)) {
					match(COMMA);
					{
					if (((LA(1) >= ABS && LA(1) <= FLOAT_SUFFIX)) && (LA(2)==AS||LA(2)==IDENT)) {
						identificationVariableDeclaration(varDecls);
					}
					else if ((LA(1)==IN) && (LA(2)==LEFT_ROUND_BRACKET)) {
						node=collectionMemberDeclaration();
						if ( inputState.guessing==0 ) {
							varDecls.add(node);
						}
					}
					else {
						throw new NoViableAltException(LT(1), getFilename());
					}
					
					}
				}
				else {
					break _loop47;
				}
				
			} while (true);
			}
			if ( inputState.guessing==0 ) {
				node = factory.newFromClause(t.getLine(), t.getColumn(), varDecls);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_2);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  whereClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		node = null;
		
		try {      // for error handling
			t = LT(1);
			match(WHERE);
			node=conditionalExpression();
			if ( inputState.guessing==0 ) {
				node = factory.newWhereClause(t.getLine(), t.getColumn(), node);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_3);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  groupByClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  g = null;
		
		node = null; 
		List items = new ArrayList();
		
		
		try {      // for error handling
			g = LT(1);
			match(GROUP);
			match(BY);
			node=groupByItem();
			if ( inputState.guessing==0 ) {
				items.add(node);
			}
			{
			_loop163:
			do {
				if ((LA(1)==COMMA)) {
					match(COMMA);
					node=groupByItem();
					if ( inputState.guessing==0 ) {
						items.add(node);
					}
				}
				else {
					break _loop163;
				}
				
			} while (true);
			}
			if ( inputState.guessing==0 ) {
				node = factory.newGroupByClause(g.getLine(), g.getColumn(), items);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_4);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  havingClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  h = null;
		node = null;
		
		try {      // for error handling
			h = LT(1);
			match(HAVING);
			if ( inputState.guessing==0 ) {
				setAggregatesAllowed(true);
			}
			node=conditionalExpression();
			if ( inputState.guessing==0 ) {
				
				setAggregatesAllowed(false); 
				node = factory.newHavingClause(h.getLine(), h.getColumn(), node);
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_5);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  orderByClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  o = null;
		
		node = null; 
		List items = new ArrayList();
		
		
		try {      // for error handling
			o = LT(1);
			match(ORDER);
			match(BY);
			node=orderByItem();
			if ( inputState.guessing==0 ) {
				items.add(node);
			}
			{
			_loop158:
			do {
				if ((LA(1)==COMMA)) {
					match(COMMA);
					node=orderByItem();
					if ( inputState.guessing==0 ) {
						items.add(node);
					}
				}
				else {
					break _loop158;
				}
				
			} while (true);
			}
			if ( inputState.guessing==0 ) {
				node = factory.newOrderByClause(o.getLine(), o.getColumn(), items);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_0);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  updateClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  u = null;
		Token  ident = null;
		
		node = null; 
		String schema, variable = null;
		
		
		try {      // for error handling
			u = LT(1);
			match(UPDATE);
			schema=abstractSchemaName();
			{
			switch ( LA(1)) {
			case AS:
			case IDENT:
			{
				{
				switch ( LA(1)) {
				case AS:
				{
					match(AS);
					break;
				}
				case IDENT:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				ident = LT(1);
				match(IDENT);
				if ( inputState.guessing==0 ) {
					variable = ident.getText();
				}
				break;
			}
			case SET:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			if ( inputState.guessing==0 ) {
				
				node = factory.newUpdateClause(u.getLine(), u.getColumn(), 
				schema, variable); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_6);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  setClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null; 
		List assignments = new ArrayList();
		
		
		try {      // for error handling
			t = LT(1);
			match(SET);
			node=setAssignmentClause();
			if ( inputState.guessing==0 ) {
				assignments.add(node);
			}
			{
			_loop14:
			do {
				if ((LA(1)==COMMA)) {
					match(COMMA);
					node=setAssignmentClause();
					if ( inputState.guessing==0 ) {
						assignments.add(node);
					}
				}
				else {
					break _loop14;
				}
				
			} while (true);
			}
			if ( inputState.guessing==0 ) {
				node = factory.newSetClause(t.getLine(), t.getColumn(), assignments);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_7);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final String  abstractSchemaName() throws RecognitionException, TokenStreamException {
		String schema;
		
		Token  ident = null;
		schema = null;
		
		try {      // for error handling
			ident = LT(1);
			matchNot(EOF);
			if ( inputState.guessing==0 ) {
				
				schema = ident.getText();
				validateAbstractSchemaName(ident); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_8);
			} else {
			  throw ex;
			}
		}
		return schema;
	}
	
	public final Object  setAssignmentClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null;
		Object target, value; 
		
		
		try {      // for error handling
			target=setAssignmentTarget();
			t = LT(1);
			match(EQUALS);
			value=newValue();
			if ( inputState.guessing==0 ) {
				
				node = factory.newSetAssignmentClause(t.getLine(), t.getColumn(), 
				target, value); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_9);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  setAssignmentTarget() throws RecognitionException, TokenStreamException {
		Object node;
		
		
		node = null;
		Object left = null;
		
		
		try {      // for error handling
			if (((LA(1) >= ABS && LA(1) <= FLOAT_SUFFIX)) && (LA(2)==EQUALS)) {
				node=attribute();
			}
			else if ((LA(1)==IDENT) && (LA(2)==DOT)) {
				node=pathExpression();
			}
			else {
				throw new NoViableAltException(LT(1), getFilename());
			}
			
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_10);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  newValue() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  n = null;
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case ABS:
			case AVG:
			case CONCAT:
			case COUNT:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case FALSE:
			case LENGTH:
			case LOCATE:
			case LOWER:
			case MAX:
			case MIN:
			case MOD:
			case SIZE:
			case SQRT:
			case SUBSTRING:
			case SUM:
			case TRIM:
			case TRUE:
			case UPPER:
			case IDENT:
			case LEFT_ROUND_BRACKET:
			case PLUS:
			case MINUS:
			case NUM_INT:
			case NUM_LONG:
			case NUM_FLOAT:
			case NUM_DOUBLE:
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				node=simpleArithmeticExpression();
				break;
			}
			case NULL:
			{
				n = LT(1);
				match(NULL);
				if ( inputState.guessing==0 ) {
					node = factory.newNullLiteral(n.getLine(), n.getColumn());
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_9);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  attribute() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  i = null;
		node = null;
		
		try {      // for error handling
			i = LT(1);
			matchNot(EOF);
			if ( inputState.guessing==0 ) {
				
				validateAttributeName(i);
				node = factory.newAttribute(i.getLine(), i.getColumn(), i.getText()); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_11);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  pathExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  d = null;
		
		node = null; 
		Object right;
		
		
		try {      // for error handling
			node=variableAccess();
			{
			int _cnt69=0;
			_loop69:
			do {
				if ((LA(1)==DOT)) {
					d = LT(1);
					match(DOT);
					right=attribute();
					if ( inputState.guessing==0 ) {
						node = factory.newDot(d.getLine(), d.getColumn(), node, right);
					}
				}
				else {
					if ( _cnt69>=1 ) { break _loop69; } else {throw new NoViableAltException(LT(1), getFilename());}
				}
				
				_cnt69++;
			} while (true);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_12);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  simpleArithmeticExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  p = null;
		Token  m = null;
		
		node = null; 
		Object right;
		
		
		try {      // for error handling
			node=arithmeticTerm();
			{
			_loop111:
			do {
				switch ( LA(1)) {
				case PLUS:
				{
					p = LT(1);
					match(PLUS);
					right=arithmeticTerm();
					if ( inputState.guessing==0 ) {
						node = factory.newPlus(p.getLine(), p.getColumn(), node, right);
					}
					break;
				}
				case MINUS:
				{
					m = LT(1);
					match(MINUS);
					right=arithmeticTerm();
					if ( inputState.guessing==0 ) {
						node = factory.newMinus(m.getLine(), m.getColumn(), node, right);
					}
					break;
				}
				default:
				{
					break _loop111;
				}
				}
			} while (true);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_13);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  deleteClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		Token  ident = null;
		
		node = null; 
		String schema, variable = null;
		
		
		try {      // for error handling
			t = LT(1);
			match(DELETE);
			match(FROM);
			schema=abstractSchemaName();
			{
			switch ( LA(1)) {
			case AS:
			case IDENT:
			{
				{
				switch ( LA(1)) {
				case AS:
				{
					match(AS);
					break;
				}
				case IDENT:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				ident = LT(1);
				match(IDENT);
				if ( inputState.guessing==0 ) {
					variable = ident.getText();
				}
				break;
			}
			case EOF:
			case WHERE:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			if ( inputState.guessing==0 ) {
				
				node = factory.newDeleteClause(t.getLine(), t.getColumn(), 
				schema, variable); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_7);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  selectExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case IDENT:
			{
				node=pathExprOrVariableAccess();
				break;
			}
			case AVG:
			case COUNT:
			case MAX:
			case MIN:
			case SUM:
			{
				node=aggregateExpression();
				break;
			}
			case OBJECT:
			{
				match(OBJECT);
				match(LEFT_ROUND_BRACKET);
				node=variableAccess();
				match(RIGHT_ROUND_BRACKET);
				break;
			}
			case NEW:
			{
				node=constructorExpression();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_14);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  pathExprOrVariableAccess() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  d = null;
		
		node = null;
		Object right;
		
		
		try {      // for error handling
			node=variableAccess();
			{
			_loop30:
			do {
				if ((LA(1)==DOT)) {
					d = LT(1);
					match(DOT);
					right=attribute();
					if ( inputState.guessing==0 ) {
						node = factory.newDot(d.getLine(), d.getColumn(), node, right);
					}
				}
				else {
					break _loop30;
				}
				
			} while (true);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_15);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  aggregateExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t1 = null;
		Token  t2 = null;
		Token  t3 = null;
		Token  t4 = null;
		Token  t5 = null;
		
		node = null; 
		boolean distinct = false;
		
		
		try {      // for error handling
			switch ( LA(1)) {
			case AVG:
			{
				t1 = LT(1);
				match(AVG);
				match(LEFT_ROUND_BRACKET);
				{
				switch ( LA(1)) {
				case DISTINCT:
				{
					match(DISTINCT);
					if ( inputState.guessing==0 ) {
						distinct = true;
					}
					break;
				}
				case IDENT:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				node=stateFieldPathExpression();
				match(RIGHT_ROUND_BRACKET);
				if ( inputState.guessing==0 ) {
					node = factory.newAvg(t1.getLine(), t1.getColumn(), distinct, node);
				}
				break;
			}
			case MAX:
			{
				t2 = LT(1);
				match(MAX);
				match(LEFT_ROUND_BRACKET);
				{
				switch ( LA(1)) {
				case DISTINCT:
				{
					match(DISTINCT);
					if ( inputState.guessing==0 ) {
						distinct = true;
					}
					break;
				}
				case IDENT:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				node=stateFieldPathExpression();
				match(RIGHT_ROUND_BRACKET);
				if ( inputState.guessing==0 ) {
					node = factory.newMax(t2.getLine(), t2.getColumn(), distinct, node);
				}
				break;
			}
			case MIN:
			{
				t3 = LT(1);
				match(MIN);
				match(LEFT_ROUND_BRACKET);
				{
				switch ( LA(1)) {
				case DISTINCT:
				{
					match(DISTINCT);
					if ( inputState.guessing==0 ) {
						distinct = true;
					}
					break;
				}
				case IDENT:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				node=stateFieldPathExpression();
				match(RIGHT_ROUND_BRACKET);
				if ( inputState.guessing==0 ) {
					node = factory.newMin(t3.getLine(), t3.getColumn(), distinct, node);
				}
				break;
			}
			case SUM:
			{
				t4 = LT(1);
				match(SUM);
				match(LEFT_ROUND_BRACKET);
				{
				switch ( LA(1)) {
				case DISTINCT:
				{
					match(DISTINCT);
					if ( inputState.guessing==0 ) {
						distinct = true;
					}
					break;
				}
				case IDENT:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				node=stateFieldPathExpression();
				match(RIGHT_ROUND_BRACKET);
				if ( inputState.guessing==0 ) {
					node = factory.newSum(t4.getLine(), t4.getColumn(), distinct, node);
				}
				break;
			}
			case COUNT:
			{
				t5 = LT(1);
				match(COUNT);
				match(LEFT_ROUND_BRACKET);
				{
				switch ( LA(1)) {
				case DISTINCT:
				{
					match(DISTINCT);
					if ( inputState.guessing==0 ) {
						distinct = true;
					}
					break;
				}
				case IDENT:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				node=pathExprOrVariableAccess();
				match(RIGHT_ROUND_BRACKET);
				if ( inputState.guessing==0 ) {
					node = factory.newCount(t5.getLine(), t5.getColumn(), distinct, node);
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_16);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  variableAccess() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  i = null;
		node = null;
		
		try {      // for error handling
			i = LT(1);
			match(IDENT);
			if ( inputState.guessing==0 ) {
				node = factory.newVariableAccess(i.getLine(), i.getColumn(), i.getText());
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_17);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  constructorExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null;
		String className = null; 
		List args = new ArrayList();
		
		
		try {      // for error handling
			t = LT(1);
			match(NEW);
			className=constructorName();
			match(LEFT_ROUND_BRACKET);
			node=constructorItem();
			if ( inputState.guessing==0 ) {
				args.add(node);
			}
			{
			_loop39:
			do {
				if ((LA(1)==COMMA)) {
					match(COMMA);
					node=constructorItem();
					if ( inputState.guessing==0 ) {
						args.add(node);
					}
				}
				else {
					break _loop39;
				}
				
			} while (true);
			}
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				
				node = factory.newConstructor(t.getLine(), t.getColumn(), 
				className, args); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_14);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  stateFieldPathExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			node=pathExpression();
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_18);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final String  constructorName() throws RecognitionException, TokenStreamException {
		String className;
		
		Token  i1 = null;
		Token  i2 = null;
		
		className = null;
		StringBuffer buf = new StringBuffer(); 
		
		
		try {      // for error handling
			i1 = LT(1);
			match(IDENT);
			if ( inputState.guessing==0 ) {
				buf.append(i1.getText());
			}
			{
			_loop42:
			do {
				if ((LA(1)==DOT)) {
					match(DOT);
					i2 = LT(1);
					match(IDENT);
					if ( inputState.guessing==0 ) {
						buf.append('.').append(i2.getText());
					}
				}
				else {
					break _loop42;
				}
				
			} while (true);
			}
			if ( inputState.guessing==0 ) {
				className = buf.toString();
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_19);
			} else {
			  throw ex;
			}
		}
		return className;
	}
	
	public final Object  constructorItem() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case IDENT:
			{
				node=pathExprOrVariableAccess();
				break;
			}
			case AVG:
			case COUNT:
			case MAX:
			case MIN:
			case SUM:
			{
				node=aggregateExpression();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_20);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final void identificationVariableDeclaration(
		List varDecls
	) throws RecognitionException, TokenStreamException {
		
		Object node = null;
		
		try {      // for error handling
			node=rangeVariableDeclaration();
			if ( inputState.guessing==0 ) {
				varDecls.add(node);
			}
			{
			_loop50:
			do {
				if ((LA(1)==INNER||LA(1)==JOIN||LA(1)==LEFT)) {
					node=join();
					if ( inputState.guessing==0 ) {
						varDecls.add(node);
					}
				}
				else {
					break _loop50;
				}
				
			} while (true);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_21);
			} else {
			  throw ex;
			}
		}
	}
	
	public final Object  collectionMemberDeclaration() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		Token  i = null;
		node = null;
		
		try {      // for error handling
			t = LT(1);
			match(IN);
			match(LEFT_ROUND_BRACKET);
			node=collectionValuedPathExpression();
			match(RIGHT_ROUND_BRACKET);
			{
			switch ( LA(1)) {
			case AS:
			{
				match(AS);
				break;
			}
			case IDENT:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			i = LT(1);
			match(IDENT);
			if ( inputState.guessing==0 ) {
				
				node = factory.newCollectionMemberVariableDecl(
				t.getLine(), t.getColumn(), node, i.getText()); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_21);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  rangeVariableDeclaration() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  i = null;
		
		node = null; 
		String schema;
		
		
		try {      // for error handling
			schema=abstractSchemaName();
			{
			switch ( LA(1)) {
			case AS:
			{
				match(AS);
				break;
			}
			case IDENT:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			i = LT(1);
			match(IDENT);
			if ( inputState.guessing==0 ) {
				
				node = factory.newRangeVariableDecl(i.getLine(), i.getColumn(), 
				schema, i.getText()); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_22);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  join() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  i = null;
		Token  t = null;
		
		node = null;
		boolean outerJoin; 
		
		
		try {      // for error handling
			outerJoin=joinSpec();
			{
			switch ( LA(1)) {
			case IDENT:
			{
				node=joinAssociationPathExpression();
				{
				switch ( LA(1)) {
				case AS:
				{
					match(AS);
					break;
				}
				case IDENT:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				i = LT(1);
				match(IDENT);
				if ( inputState.guessing==0 ) {
					
					node = factory.newJoinVariableDecl(i.getLine(), i.getColumn(), 
					outerJoin, node, i.getText()); 
					
				}
				break;
			}
			case FETCH:
			{
				t = LT(1);
				match(FETCH);
				node=joinAssociationPathExpression();
				if ( inputState.guessing==0 ) {
					
					node = factory.newFetchJoin(t.getLine(), t.getColumn(), 
					outerJoin, node);
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_22);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final boolean  joinSpec() throws RecognitionException, TokenStreamException {
		boolean outer;
		
		outer = false;
		
		try {      // for error handling
			{
			switch ( LA(1)) {
			case LEFT:
			{
				match(LEFT);
				{
				switch ( LA(1)) {
				case OUTER:
				{
					match(OUTER);
					break;
				}
				case JOIN:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				if ( inputState.guessing==0 ) {
					outer = true;
				}
				break;
			}
			case INNER:
			{
				match(INNER);
				break;
			}
			case JOIN:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			match(JOIN);
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_23);
			} else {
			  throw ex;
			}
		}
		return outer;
	}
	
	public final Object  joinAssociationPathExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  d = null;
		
		node = null; 
		Object left, right;
		
		
		try {      // for error handling
			left=variableAccess();
			d = LT(1);
			match(DOT);
			right=attribute();
			if ( inputState.guessing==0 ) {
				node = factory.newDot(d.getLine(), d.getColumn(), left, right);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_24);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  collectionValuedPathExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			node=pathExpression();
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  associationPathExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			node=pathExpression();
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_26);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  singleValuedPathExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			node=pathExpression();
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_1);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  conditionalExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null; 
		Object right;
		
		
		try {      // for error handling
			node=conditionalTerm();
			{
			_loop75:
			do {
				if ((LA(1)==OR)) {
					t = LT(1);
					match(OR);
					right=conditionalTerm();
					if ( inputState.guessing==0 ) {
						node = factory.newOr(t.getLine(), t.getColumn(), node, right);
					}
				}
				else {
					break _loop75;
				}
				
			} while (true);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_3);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  conditionalTerm() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null; 
		Object right;
		
		
		try {      // for error handling
			node=conditionalFactor();
			{
			_loop78:
			do {
				if ((LA(1)==AND)) {
					t = LT(1);
					match(AND);
					right=conditionalFactor();
					if ( inputState.guessing==0 ) {
						node = factory.newAnd(t.getLine(), t.getColumn(), node, right);
					}
				}
				else {
					break _loop78;
				}
				
			} while (true);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_27);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  conditionalFactor() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  n = null;
		node = null;
		
		try {      // for error handling
			{
			switch ( LA(1)) {
			case NOT:
			{
				n = LT(1);
				match(NOT);
				break;
			}
			case ABS:
			case AVG:
			case CONCAT:
			case COUNT:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case EXISTS:
			case FALSE:
			case LENGTH:
			case LOCATE:
			case LOWER:
			case MAX:
			case MIN:
			case MOD:
			case SIZE:
			case SQRT:
			case SUBSTRING:
			case SUM:
			case TRIM:
			case TRUE:
			case UPPER:
			case IDENT:
			case LEFT_ROUND_BRACKET:
			case PLUS:
			case MINUS:
			case NUM_INT:
			case NUM_LONG:
			case NUM_FLOAT:
			case NUM_DOUBLE:
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case ABS:
			case AVG:
			case CONCAT:
			case COUNT:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case FALSE:
			case LENGTH:
			case LOCATE:
			case LOWER:
			case MAX:
			case MIN:
			case MOD:
			case SIZE:
			case SQRT:
			case SUBSTRING:
			case SUM:
			case TRIM:
			case TRUE:
			case UPPER:
			case IDENT:
			case LEFT_ROUND_BRACKET:
			case PLUS:
			case MINUS:
			case NUM_INT:
			case NUM_LONG:
			case NUM_FLOAT:
			case NUM_DOUBLE:
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				node=conditionalPrimary();
				if ( inputState.guessing==0 ) {
					
					if (n != null) {
					node = factory.newNot(n.getLine(), n.getColumn(), node); 
					}
					
				}
				break;
			}
			case EXISTS:
			{
				node=existsExpression((n!=null));
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  conditionalPrimary() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			boolean synPredMatched84 = false;
			if (((LA(1)==LEFT_ROUND_BRACKET) && (_tokenSet_28.member(LA(2))) && (_tokenSet_29.member(LA(3))))) {
				int _m84 = mark();
				synPredMatched84 = true;
				inputState.guessing++;
				try {
					{
					match(LEFT_ROUND_BRACKET);
					conditionalExpression();
					}
				}
				catch (RecognitionException pe) {
					synPredMatched84 = false;
				}
				rewind(_m84);
				inputState.guessing--;
			}
			if ( synPredMatched84 ) {
				match(LEFT_ROUND_BRACKET);
				node=conditionalExpression();
				match(RIGHT_ROUND_BRACKET);
			}
			else if ((_tokenSet_30.member(LA(1))) && (_tokenSet_31.member(LA(2))) && ((LA(3) >= ABS && LA(3) <= FLOAT_SUFFIX))) {
				node=simpleConditionalExpression();
			}
			else {
				throw new NoViableAltException(LT(1), getFilename());
			}
			
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  existsExpression(
		boolean not
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		Object subqueryNode = null; 
		node = null;
		
		
		try {      // for error handling
			t = LT(1);
			match(EXISTS);
			match(LEFT_ROUND_BRACKET);
			subqueryNode=subquery();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				
				node = factory.newExists(t.getLine(), t.getColumn(), 
				not, subqueryNode); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  simpleConditionalExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		
		node = null; 
		Object left = null;
		
		
		try {      // for error handling
			left=arithmeticExpression();
			node=simpleConditionalExpressionRemainder(left);
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  arithmeticExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			if ((_tokenSet_30.member(LA(1))) && (_tokenSet_32.member(LA(2)))) {
				node=simpleArithmeticExpression();
			}
			else if ((LA(1)==LEFT_ROUND_BRACKET) && (LA(2)==SELECT)) {
				match(LEFT_ROUND_BRACKET);
				node=subquery();
				match(RIGHT_ROUND_BRACKET);
			}
			else {
				throw new NoViableAltException(LT(1), getFilename());
			}
			
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_33);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  simpleConditionalExpressionRemainder(
		Object left
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  n1 = null;
		Token  n2 = null;
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case EQUALS:
			case NOT_EQUAL_TO:
			case GREATER_THAN:
			case GREATER_THAN_EQUAL_TO:
			case LESS_THAN:
			case LESS_THAN_EQUAL_TO:
			{
				node=comparisonExpression(left);
				break;
			}
			case BETWEEN:
			case IN:
			case LIKE:
			case MEMBER:
			case NOT:
			{
				{
				switch ( LA(1)) {
				case NOT:
				{
					n1 = LT(1);
					match(NOT);
					break;
				}
				case BETWEEN:
				case IN:
				case LIKE:
				case MEMBER:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				node=conditionWithNotExpression((n1!=null), left);
				break;
			}
			case IS:
			{
				match(IS);
				{
				switch ( LA(1)) {
				case NOT:
				{
					n2 = LT(1);
					match(NOT);
					break;
				}
				case EMPTY:
				case NULL:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				node=isExpression((n2!=null), left);
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  comparisonExpression(
		Object left
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t1 = null;
		Token  t2 = null;
		Token  t3 = null;
		Token  t4 = null;
		Token  t5 = null;
		Token  t6 = null;
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case EQUALS:
			{
				t1 = LT(1);
				match(EQUALS);
				node=comparisonExpressionRightOperand();
				if ( inputState.guessing==0 ) {
					node = factory.newEquals(t1.getLine(), t1.getColumn(), left, node);
				}
				break;
			}
			case NOT_EQUAL_TO:
			{
				t2 = LT(1);
				match(NOT_EQUAL_TO);
				node=comparisonExpressionRightOperand();
				if ( inputState.guessing==0 ) {
					node = factory.newNotEquals(t2.getLine(), t2.getColumn(), left, node);
				}
				break;
			}
			case GREATER_THAN:
			{
				t3 = LT(1);
				match(GREATER_THAN);
				node=comparisonExpressionRightOperand();
				if ( inputState.guessing==0 ) {
					node = factory.newGreaterThan(t3.getLine(), t3.getColumn(), left, node);
				}
				break;
			}
			case GREATER_THAN_EQUAL_TO:
			{
				t4 = LT(1);
				match(GREATER_THAN_EQUAL_TO);
				node=comparisonExpressionRightOperand();
				if ( inputState.guessing==0 ) {
					node = factory.newGreaterThanEqual(t4.getLine(), t4.getColumn(), left, node);
				}
				break;
			}
			case LESS_THAN:
			{
				t5 = LT(1);
				match(LESS_THAN);
				node=comparisonExpressionRightOperand();
				if ( inputState.guessing==0 ) {
					node = factory.newLessThan(t5.getLine(), t5.getColumn(), left, node);
				}
				break;
			}
			case LESS_THAN_EQUAL_TO:
			{
				t6 = LT(1);
				match(LESS_THAN_EQUAL_TO);
				node=comparisonExpressionRightOperand();
				if ( inputState.guessing==0 ) {
					node = factory.newLessThanEqual(t6.getLine(), t6.getColumn(), left, node);
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  conditionWithNotExpression(
		boolean not, Object left
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case BETWEEN:
			{
				node=betweenExpression(not, left);
				break;
			}
			case LIKE:
			{
				node=likeExpression(not, left);
				break;
			}
			case IN:
			{
				node=inExpression(not, left);
				break;
			}
			case MEMBER:
			{
				node=collectionMemberExpression(not, left);
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  isExpression(
		boolean not, Object left
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case NULL:
			{
				node=nullComparisonExpression(not, left);
				break;
			}
			case EMPTY:
			{
				node=emptyCollectionComparisonExpression(not, left);
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  betweenExpression(
		boolean not, Object left
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null;
		Object lower, upper;
		
		
		try {      // for error handling
			t = LT(1);
			match(BETWEEN);
			lower=arithmeticExpression();
			match(AND);
			upper=arithmeticExpression();
			if ( inputState.guessing==0 ) {
				
				node = factory.newBetween(t.getLine(), t.getColumn(),
				not, left, lower, upper);
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  likeExpression(
		boolean not, Object left
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null;
		Object pattern, escape = null;
		
		
		try {      // for error handling
			t = LT(1);
			match(LIKE);
			pattern=likeValue();
			{
			switch ( LA(1)) {
			case ESCAPE:
			{
				escape=escape();
				break;
			}
			case EOF:
			case AND:
			case GROUP:
			case HAVING:
			case OR:
			case ORDER:
			case RIGHT_ROUND_BRACKET:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			if ( inputState.guessing==0 ) {
				
				node = factory.newLike(t.getLine(), t.getColumn(), not,
				left, pattern, escape);
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  inExpression(
		boolean not, Object left
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null;
		List items = new ArrayList();
		Object subqueryNode, itemNode;
		
		
		try {      // for error handling
			t = LT(1);
			match(IN);
			match(LEFT_ROUND_BRACKET);
			{
			switch ( LA(1)) {
			case NUM_INT:
			case NUM_LONG:
			case NUM_FLOAT:
			case NUM_DOUBLE:
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				itemNode=inItem();
				if ( inputState.guessing==0 ) {
					items.add(itemNode);
				}
				{
				_loop95:
				do {
					if ((LA(1)==COMMA)) {
						match(COMMA);
						itemNode=inItem();
						if ( inputState.guessing==0 ) {
							items.add(itemNode);
						}
					}
					else {
						break _loop95;
					}
					
				} while (true);
				}
				if ( inputState.guessing==0 ) {
					
					node = factory.newIn(t.getLine(), t.getColumn(),
					not, left, items);
					
				}
				break;
			}
			case SELECT:
			{
				subqueryNode=subquery();
				if ( inputState.guessing==0 ) {
					
					node = factory.newIn(t.getLine(), t.getColumn(),
					not, left, subqueryNode);
					
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			match(RIGHT_ROUND_BRACKET);
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  collectionMemberExpression(
		boolean not, Object left
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		node = null;
		
		try {      // for error handling
			t = LT(1);
			match(MEMBER);
			{
			switch ( LA(1)) {
			case OF:
			{
				match(OF);
				break;
			}
			case IDENT:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			node=collectionValuedPathExpression();
			if ( inputState.guessing==0 ) {
				
				node = factory.newMemberOf(t.getLine(), t.getColumn(), 
				not, left, node); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  nullComparisonExpression(
		boolean not, Object left
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		node = null;
		
		try {      // for error handling
			t = LT(1);
			match(NULL);
			if ( inputState.guessing==0 ) {
				node = factory.newIsNull(t.getLine(), t.getColumn(), not, left);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  emptyCollectionComparisonExpression(
		boolean not, Object left
	) throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		node = null;
		
		try {      // for error handling
			t = LT(1);
			match(EMPTY);
			if ( inputState.guessing==0 ) {
				node = factory.newIsEmpty(t.getLine(), t.getColumn(), not, left);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  inItem() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			{
				node=literalString();
				break;
			}
			case NUM_INT:
			case NUM_LONG:
			case NUM_FLOAT:
			case NUM_DOUBLE:
			{
				node=literalNumeric();
				break;
			}
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				node=inputParameter();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_20);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  subquery() throws RecognitionException, TokenStreamException {
		Object node;
		
		
		node = null; 
		Object select, from;
		Object where = null;
		Object groupBy = null;
		Object having = null;
		
		
		try {      // for error handling
			select=simpleSelectClause();
			from=subqueryFromClause();
			{
			switch ( LA(1)) {
			case WHERE:
			{
				where=whereClause();
				break;
			}
			case GROUP:
			case HAVING:
			case RIGHT_ROUND_BRACKET:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case GROUP:
			{
				groupBy=groupByClause();
				break;
			}
			case HAVING:
			case RIGHT_ROUND_BRACKET:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			{
			switch ( LA(1)) {
			case HAVING:
			{
				having=havingClause();
				break;
			}
			case RIGHT_ROUND_BRACKET:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			if ( inputState.guessing==0 ) {
				
				node = factory.newSubquery(0, 0, select, from, 
				where, groupBy, having); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_34);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  literalString() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  d = null;
		Token  s = null;
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case STRING_LITERAL_DOUBLE_QUOTED:
			{
				d = LT(1);
				match(STRING_LITERAL_DOUBLE_QUOTED);
				if ( inputState.guessing==0 ) {
					
					node = factory.newStringLiteral(d.getLine(), d.getColumn(), 
					convertStringLiteral(d.getText())); 
					
				}
				break;
			}
			case STRING_LITERAL_SINGLE_QUOTED:
			{
				s = LT(1);
				match(STRING_LITERAL_SINGLE_QUOTED);
				if ( inputState.guessing==0 ) {
					
					node = factory.newStringLiteral(s.getLine(), s.getColumn(), 
					convertStringLiteral(s.getText())); 
					
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_35);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  literalNumeric() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  i = null;
		Token  l = null;
		Token  f = null;
		Token  d = null;
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case NUM_INT:
			{
				i = LT(1);
				match(NUM_INT);
				if ( inputState.guessing==0 ) {
					
					node = factory.newIntegerLiteral(i.getLine(), i.getColumn(), 
					Integer.valueOf(i.getText())); 
					
				}
				break;
			}
			case NUM_LONG:
			{
				l = LT(1);
				match(NUM_LONG);
				if ( inputState.guessing==0 ) {
					
					String text = l.getText();
					// skip the tailing 'l'
					text = text.substring(0, text.length() - 1);
					node = factory.newLongLiteral(l.getLine(), l.getColumn(), 
					Long.valueOf(text)); 
					
				}
				break;
			}
			case NUM_FLOAT:
			{
				f = LT(1);
				match(NUM_FLOAT);
				if ( inputState.guessing==0 ) {
					
					node = factory.newFloatLiteral(f.getLine(), f.getColumn(),
					Float.valueOf(f.getText()));
					
				}
				break;
			}
			case NUM_DOUBLE:
			{
				d = LT(1);
				match(NUM_DOUBLE);
				if ( inputState.guessing==0 ) {
					
					node = factory.newDoubleLiteral(d.getLine(), d.getColumn(),
					Double.valueOf(d.getText()));
					
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  inputParameter() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  p = null;
		Token  n = null;
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case POSITIONAL_PARAM:
			{
				p = LT(1);
				match(POSITIONAL_PARAM);
				if ( inputState.guessing==0 ) {
					
					// skip the leading ?
					String text = p.getText().substring(1);
					node = factory.newPositionalParameter(p.getLine(), p.getColumn(), text); 
					
				}
				break;
			}
			case NAMED_PARAM:
			{
				n = LT(1);
				match(NAMED_PARAM);
				if ( inputState.guessing==0 ) {
					
					// skip the leading :
					String text = n.getText().substring(1);
					node = factory.newNamedParameter(n.getLine(), n.getColumn(), text); 
					
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_35);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  likeValue() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			{
				node=literalString();
				break;
			}
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				node=inputParameter();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_37);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  escape() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null; 
		Object escape = null;
		
		
		
		try {      // for error handling
			t = LT(1);
			match(ESCAPE);
			escape=likeValue();
			if ( inputState.guessing==0 ) {
				node = factory.newEscape(t.getLine(), t.getColumn(), escape);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  comparisonExpressionRightOperand() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case ABS:
			case AVG:
			case CONCAT:
			case COUNT:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case FALSE:
			case LENGTH:
			case LOCATE:
			case LOWER:
			case MAX:
			case MIN:
			case MOD:
			case SIZE:
			case SQRT:
			case SUBSTRING:
			case SUM:
			case TRIM:
			case TRUE:
			case UPPER:
			case IDENT:
			case LEFT_ROUND_BRACKET:
			case PLUS:
			case MINUS:
			case NUM_INT:
			case NUM_LONG:
			case NUM_FLOAT:
			case NUM_DOUBLE:
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				node=arithmeticExpression();
				break;
			}
			case ALL:
			case ANY:
			case SOME:
			{
				node=anyOrAllExpression();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  anyOrAllExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  a = null;
		Token  y = null;
		Token  s = null;
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case ALL:
			{
				a = LT(1);
				match(ALL);
				match(LEFT_ROUND_BRACKET);
				node=subquery();
				match(RIGHT_ROUND_BRACKET);
				if ( inputState.guessing==0 ) {
					node = factory.newAll(a.getLine(), a.getColumn(), node);
				}
				break;
			}
			case ANY:
			{
				y = LT(1);
				match(ANY);
				match(LEFT_ROUND_BRACKET);
				node=subquery();
				match(RIGHT_ROUND_BRACKET);
				if ( inputState.guessing==0 ) {
					node = factory.newAny(y.getLine(), y.getColumn(), node);
				}
				break;
			}
			case SOME:
			{
				s = LT(1);
				match(SOME);
				match(LEFT_ROUND_BRACKET);
				node=subquery();
				match(RIGHT_ROUND_BRACKET);
				if ( inputState.guessing==0 ) {
					node = factory.newSome(s.getLine(), s.getColumn(), node);
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_25);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  arithmeticTerm() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  m = null;
		Token  d = null;
		
		node = null; 
		Object right;
		
		
		try {      // for error handling
			node=arithmeticFactor();
			{
			_loop114:
			do {
				switch ( LA(1)) {
				case MULTIPLY:
				{
					m = LT(1);
					match(MULTIPLY);
					right=arithmeticFactor();
					if ( inputState.guessing==0 ) {
						node = factory.newMultiply(m.getLine(), m.getColumn(), node, right);
					}
					break;
				}
				case DIVIDE:
				{
					d = LT(1);
					match(DIVIDE);
					right=arithmeticFactor();
					if ( inputState.guessing==0 ) {
						node = factory.newDivide(d.getLine(), d.getColumn(), node, right);
					}
					break;
				}
				default:
				{
					break _loop114;
				}
				}
			} while (true);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_38);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  arithmeticFactor() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  p = null;
		Token  m = null;
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case PLUS:
			{
				p = LT(1);
				match(PLUS);
				node=arithmeticPrimary();
				if ( inputState.guessing==0 ) {
					node = factory.newUnaryPlus(p.getLine(), p.getColumn(), node);
				}
				break;
			}
			case MINUS:
			{
				m = LT(1);
				match(MINUS);
				node=arithmeticPrimary();
				if ( inputState.guessing==0 ) {
					node = factory.newUnaryMinus(m.getLine(), m.getColumn(), node);
				}
				break;
			}
			case ABS:
			case AVG:
			case CONCAT:
			case COUNT:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case FALSE:
			case LENGTH:
			case LOCATE:
			case LOWER:
			case MAX:
			case MIN:
			case MOD:
			case SIZE:
			case SQRT:
			case SUBSTRING:
			case SUM:
			case TRIM:
			case TRUE:
			case UPPER:
			case IDENT:
			case LEFT_ROUND_BRACKET:
			case NUM_INT:
			case NUM_LONG:
			case NUM_FLOAT:
			case NUM_DOUBLE:
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				node=arithmeticPrimary();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  arithmeticPrimary() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case ABS:
			case LENGTH:
			case LOCATE:
			case MOD:
			case SIZE:
			case SQRT:
			{
				node=functionsReturningNumerics();
				break;
			}
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			{
				node=functionsReturningDatetime();
				break;
			}
			case CONCAT:
			case LOWER:
			case SUBSTRING:
			case TRIM:
			case UPPER:
			{
				node=functionsReturningStrings();
				break;
			}
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				node=inputParameter();
				break;
			}
			case NUM_INT:
			case NUM_LONG:
			case NUM_FLOAT:
			case NUM_DOUBLE:
			{
				node=literalNumeric();
				break;
			}
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			{
				node=literalString();
				break;
			}
			case FALSE:
			case TRUE:
			{
				node=literalBoolean();
				break;
			}
			case LEFT_ROUND_BRACKET:
			{
				match(LEFT_ROUND_BRACKET);
				node=simpleArithmeticExpression();
				match(RIGHT_ROUND_BRACKET);
				break;
			}
			default:
				if (((_tokenSet_39.member(LA(1))))&&( aggregatesAllowed() )) {
					node=aggregateExpression();
				}
				else if ((LA(1)==IDENT) && (_tokenSet_36.member(LA(2)))) {
					node=variableAccess();
				}
				else if ((LA(1)==IDENT) && (LA(2)==DOT)) {
					node=stateFieldPathExpression();
				}
			else {
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  functionsReturningNumerics() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case ABS:
			{
				node=abs();
				break;
			}
			case LENGTH:
			{
				node=length();
				break;
			}
			case MOD:
			{
				node=mod();
				break;
			}
			case SQRT:
			{
				node=sqrt();
				break;
			}
			case LOCATE:
			{
				node=locate();
				break;
			}
			case SIZE:
			{
				node=size();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  functionsReturningDatetime() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  d = null;
		Token  t = null;
		Token  ts = null;
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case CURRENT_DATE:
			{
				d = LT(1);
				match(CURRENT_DATE);
				if ( inputState.guessing==0 ) {
					node = factory.newCurrentDate(d.getLine(), d.getColumn());
				}
				break;
			}
			case CURRENT_TIME:
			{
				t = LT(1);
				match(CURRENT_TIME);
				if ( inputState.guessing==0 ) {
					node = factory.newCurrentTime(t.getLine(), t.getColumn());
				}
				break;
			}
			case CURRENT_TIMESTAMP:
			{
				ts = LT(1);
				match(CURRENT_TIMESTAMP);
				if ( inputState.guessing==0 ) {
					node = factory.newCurrentTimestamp(ts.getLine(), ts.getColumn());
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  functionsReturningStrings() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case CONCAT:
			{
				node=concat();
				break;
			}
			case SUBSTRING:
			{
				node=substring();
				break;
			}
			case TRIM:
			{
				node=trim();
				break;
			}
			case UPPER:
			{
				node=upper();
				break;
			}
			case LOWER:
			{
				node=lower();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  literalBoolean() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		Token  f = null;
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case TRUE:
			{
				t = LT(1);
				match(TRUE);
				if ( inputState.guessing==0 ) {
					node = factory.newBooleanLiteral(t.getLine(), t.getColumn(), Boolean.TRUE);
				}
				break;
			}
			case FALSE:
			{
				f = LT(1);
				match(FALSE);
				if ( inputState.guessing==0 ) {
					node = factory.newBooleanLiteral(f.getLine(), f.getColumn(), Boolean.FALSE);
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  stringPrimary() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			{
				node=literalString();
				break;
			}
			case CONCAT:
			case LOWER:
			case SUBSTRING:
			case TRIM:
			case UPPER:
			{
				node=functionsReturningStrings();
				break;
			}
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				node=inputParameter();
				break;
			}
			case IDENT:
			{
				node=stateFieldPathExpression();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_20);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  literal() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case NUM_INT:
			case NUM_LONG:
			case NUM_FLOAT:
			case NUM_DOUBLE:
			{
				node=literalNumeric();
				break;
			}
			case FALSE:
			case TRUE:
			{
				node=literalBoolean();
				break;
			}
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			{
				node=literalString();
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_0);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  abs() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  a = null;
		node = null;
		
		try {      // for error handling
			a = LT(1);
			match(ABS);
			match(LEFT_ROUND_BRACKET);
			node=simpleArithmeticExpression();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				node = factory.newAbs(a.getLine(), a.getColumn(), node);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  length() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  l = null;
		node = null;
		
		try {      // for error handling
			l = LT(1);
			match(LENGTH);
			match(LEFT_ROUND_BRACKET);
			node=stringPrimary();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				node = factory.newLength(l.getLine(), l.getColumn(), node);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  mod() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  m = null;
		
		node = null; 
		Object left, right;
		
		
		try {      // for error handling
			m = LT(1);
			match(MOD);
			match(LEFT_ROUND_BRACKET);
			left=simpleArithmeticExpression();
			match(COMMA);
			right=simpleArithmeticExpression();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				node = factory.newMod(m.getLine(), m.getColumn(), left, right);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  sqrt() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  s = null;
		node = null;
		
		try {      // for error handling
			s = LT(1);
			match(SQRT);
			match(LEFT_ROUND_BRACKET);
			node=simpleArithmeticExpression();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				node = factory.newSqrt(s.getLine(), s.getColumn(), node);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  locate() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  l = null;
		
		node = null; 
		Object pattern, startPos = null;
		
		
		try {      // for error handling
			l = LT(1);
			match(LOCATE);
			match(LEFT_ROUND_BRACKET);
			pattern=stringPrimary();
			match(COMMA);
			node=stringPrimary();
			{
			switch ( LA(1)) {
			case COMMA:
			{
				match(COMMA);
				startPos=simpleArithmeticExpression();
				break;
			}
			case RIGHT_ROUND_BRACKET:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				
				node = factory.newLocate(l.getLine(), l.getColumn(), 
				pattern, node, startPos); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  size() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  s = null;
		node = null;
		
		try {      // for error handling
			s = LT(1);
			match(SIZE);
			match(LEFT_ROUND_BRACKET);
			node=collectionValuedPathExpression();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				node = factory.newSize(s.getLine(), s.getColumn(), node);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  concat() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  c = null;
		
		node = null;
		Object firstArg, secondArg;
		
		
		try {      // for error handling
			c = LT(1);
			match(CONCAT);
			match(LEFT_ROUND_BRACKET);
			firstArg=stringPrimary();
			match(COMMA);
			secondArg=stringPrimary();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				node = factory.newConcat(c.getLine(), c.getColumn(), firstArg, secondArg);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  substring() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  s = null;
		
		node = null;
		Object string, start, length;
		
		
		try {      // for error handling
			s = LT(1);
			match(SUBSTRING);
			match(LEFT_ROUND_BRACKET);
			string=stringPrimary();
			match(COMMA);
			start=simpleArithmeticExpression();
			match(COMMA);
			length=simpleArithmeticExpression();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				
				node = factory.newSubstring(s.getLine(), s.getColumn(), 
				string, start, length); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  trim() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  t = null;
		
		node = null; 
		TrimSpecification trimSpec = TrimSpecification.BOTH;
		Object trimChar = null;
		
		
		try {      // for error handling
			t = LT(1);
			match(TRIM);
			match(LEFT_ROUND_BRACKET);
			{
			boolean synPredMatched132 = false;
			if (((_tokenSet_40.member(LA(1))) && (_tokenSet_41.member(LA(2))))) {
				int _m132 = mark();
				synPredMatched132 = true;
				inputState.guessing++;
				try {
					{
					trimSpec();
					trimChar();
					match(FROM);
					}
				}
				catch (RecognitionException pe) {
					synPredMatched132 = false;
				}
				rewind(_m132);
				inputState.guessing--;
			}
			if ( synPredMatched132 ) {
				trimSpec=trimSpec();
				trimChar=trimChar();
				match(FROM);
			}
			else if ((_tokenSet_42.member(LA(1))) && ((LA(2) >= LEFT_ROUND_BRACKET && LA(2) <= DOT))) {
			}
			else {
				throw new NoViableAltException(LT(1), getFilename());
			}
			
			}
			node=stringPrimary();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				
				node = factory.newTrim(t.getLine(), t.getColumn(), 
				trimSpec, trimChar, node); 
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  upper() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  u = null;
		node = null;
		
		try {      // for error handling
			u = LT(1);
			match(UPPER);
			match(LEFT_ROUND_BRACKET);
			node=stringPrimary();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				node = factory.newUpper(u.getLine(), u.getColumn(), node);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  lower() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  l = null;
		node = null;
		
		try {      // for error handling
			l = LT(1);
			match(LOWER);
			match(LEFT_ROUND_BRACKET);
			node=stringPrimary();
			match(RIGHT_ROUND_BRACKET);
			if ( inputState.guessing==0 ) {
				node = factory.newLower(l.getLine(), l.getColumn(), node);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_36);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final TrimSpecification  trimSpec() throws RecognitionException, TokenStreamException {
		TrimSpecification trimSpec;
		
		trimSpec = TrimSpecification.BOTH;
		
		try {      // for error handling
			switch ( LA(1)) {
			case LEADING:
			{
				match(LEADING);
				if ( inputState.guessing==0 ) {
					trimSpec = TrimSpecification.LEADING;
				}
				break;
			}
			case TRAILING:
			{
				match(TRAILING);
				if ( inputState.guessing==0 ) {
					trimSpec = TrimSpecification.TRAILING;
				}
				break;
			}
			case BOTH:
			{
				match(BOTH);
				if ( inputState.guessing==0 ) {
					trimSpec = TrimSpecification.BOTH;
				}
				break;
			}
			case FROM:
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_43);
			} else {
			  throw ex;
			}
		}
		return trimSpec;
	}
	
	public final Object  trimChar() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			switch ( LA(1)) {
			case STRING_LITERAL_DOUBLE_QUOTED:
			case STRING_LITERAL_SINGLE_QUOTED:
			{
				node=literalString();
				break;
			}
			case POSITIONAL_PARAM:
			case NAMED_PARAM:
			{
				node=inputParameter();
				break;
			}
			case FROM:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_1);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  simpleSelectClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  s = null;
		
		node = null; 
		boolean distinct = false;
		
		
		try {      // for error handling
			s = LT(1);
			match(SELECT);
			{
			switch ( LA(1)) {
			case DISTINCT:
			{
				match(DISTINCT);
				if ( inputState.guessing==0 ) {
					distinct = true;
				}
				break;
			}
			case AVG:
			case COUNT:
			case MAX:
			case MIN:
			case SUM:
			case IDENT:
			{
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
			node=simpleSelectExpression();
			if ( inputState.guessing==0 ) {
				
				List exprs = new ArrayList();
				exprs.add(node);
				node = factory.newSelectClause(s.getLine(), s.getColumn(), 
				distinct, exprs);
				
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_1);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  subqueryFromClause() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  f = null;
		
		node = null; 
		List varDecls = new ArrayList();
		
		
		try {      // for error handling
			f = LT(1);
			match(FROM);
			subselectIdentificationVariableDeclaration(varDecls);
			{
			_loop153:
			do {
				if ((LA(1)==COMMA)) {
					match(COMMA);
					subselectIdentificationVariableDeclaration(varDecls);
				}
				else {
					break _loop153;
				}
				
			} while (true);
			}
			if ( inputState.guessing==0 ) {
				node = factory.newFromClause(f.getLine(), f.getColumn(), varDecls);
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_44);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  simpleSelectExpression() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			if ((LA(1)==IDENT) && (LA(2)==DOT)) {
				node=singleValuedPathExpression();
			}
			else if ((_tokenSet_39.member(LA(1)))) {
				node=aggregateExpression();
			}
			else if ((LA(1)==IDENT) && (LA(2)==FROM)) {
				node=variableAccess();
			}
			else {
				throw new NoViableAltException(LT(1), getFilename());
			}
			
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_1);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final void subselectIdentificationVariableDeclaration(
		List varDecls
	) throws RecognitionException, TokenStreamException {
		
		Token  i = null;
		Object node;
		
		try {      // for error handling
			if (((LA(1) >= ABS && LA(1) <= FLOAT_SUFFIX)) && (LA(2)==AS||LA(2)==IDENT)) {
				identificationVariableDeclaration(varDecls);
			}
			else if ((LA(1)==IDENT) && (LA(2)==DOT)) {
				node=associationPathExpression();
				{
				switch ( LA(1)) {
				case AS:
				{
					match(AS);
					break;
				}
				case IDENT:
				{
					break;
				}
				default:
				{
					throw new NoViableAltException(LT(1), getFilename());
				}
				}
				}
				i = LT(1);
				match(IDENT);
				if ( inputState.guessing==0 ) {
					
					varDecls.add(factory.newVariableDecl(i.getLine(), i.getColumn(), 
					node, i.getText())); 
					
				}
			}
			else if ((LA(1)==IN) && (LA(2)==LEFT_ROUND_BRACKET)) {
				node=collectionMemberDeclaration();
				if ( inputState.guessing==0 ) {
					varDecls.add(node);
				}
			}
			else {
				throw new NoViableAltException(LT(1), getFilename());
			}
			
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_45);
			} else {
			  throw ex;
			}
		}
	}
	
	public final Object  orderByItem() throws RecognitionException, TokenStreamException {
		Object node;
		
		Token  a = null;
		Token  d = null;
		node = null;
		
		try {      // for error handling
			node=stateFieldPathExpression();
			{
			switch ( LA(1)) {
			case ASC:
			{
				a = LT(1);
				match(ASC);
				if ( inputState.guessing==0 ) {
					node = factory.newAscOrdering(a.getLine(), a.getColumn(), node);
				}
				break;
			}
			case DESC:
			{
				d = LT(1);
				match(DESC);
				if ( inputState.guessing==0 ) {
					node = factory.newDescOrdering(d.getLine(), d.getColumn(), node);
				}
				break;
			}
			case EOF:
			case COMMA:
			{
				if ( inputState.guessing==0 ) {
					node = factory.newAscOrdering(0, 0, node);
				}
				break;
			}
			default:
			{
				throw new NoViableAltException(LT(1), getFilename());
			}
			}
			}
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_46);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	public final Object  groupByItem() throws RecognitionException, TokenStreamException {
		Object node;
		
		node = null;
		
		try {      // for error handling
			if ((LA(1)==IDENT) && (LA(2)==DOT)) {
				node=stateFieldPathExpression();
			}
			else if ((LA(1)==IDENT) && (_tokenSet_47.member(LA(2)))) {
				node=variableAccess();
			}
			else {
				throw new NoViableAltException(LT(1), getFilename());
			}
			
		}
		catch (RecognitionException ex) {
			if (inputState.guessing==0) {
				reportError(ex);
				consume();
				consumeUntil(_tokenSet_47);
			} else {
			  throw ex;
			}
		}
		return node;
	}
	
	
	public static final String[] _tokenNames = {
		"<0>",
		"EOF",
		"<2>",
		"NULL_TREE_LOOKAHEAD",
		"\"abs\"",
		"\"all\"",
		"\"and\"",
		"\"any\"",
		"\"as\"",
		"\"asc\"",
		"\"avg\"",
		"\"between\"",
		"\"both\"",
		"\"by\"",
		"\"concat\"",
		"\"count\"",
		"\"current_date\"",
		"\"current_time\"",
		"\"current_timestamp\"",
		"\"desc\"",
		"\"delete\"",
		"\"distinct\"",
		"\"empty\"",
		"\"escape\"",
		"\"exists\"",
		"\"false\"",
		"\"fetch\"",
		"\"from\"",
		"\"group\"",
		"\"having\"",
		"\"in\"",
		"\"inner\"",
		"\"is\"",
		"\"join\"",
		"\"leading\"",
		"\"left\"",
		"\"length\"",
		"\"like\"",
		"\"locate\"",
		"\"lower\"",
		"\"max\"",
		"\"member\"",
		"\"min\"",
		"\"mod\"",
		"\"new\"",
		"\"not\"",
		"\"null\"",
		"\"object\"",
		"\"of\"",
		"\"or\"",
		"\"order\"",
		"\"outer\"",
		"\"select\"",
		"\"set\"",
		"\"size\"",
		"\"sqrt\"",
		"\"some\"",
		"\"substring\"",
		"\"sum\"",
		"\"trailing\"",
		"\"trim\"",
		"\"true\"",
		"\"unknown\"",
		"\"update\"",
		"\"upper\"",
		"\"where\"",
		"IDENT",
		"COMMA",
		"EQUALS",
		"LEFT_ROUND_BRACKET",
		"RIGHT_ROUND_BRACKET",
		"DOT",
		"NOT_EQUAL_TO",
		"GREATER_THAN",
		"GREATER_THAN_EQUAL_TO",
		"LESS_THAN",
		"LESS_THAN_EQUAL_TO",
		"PLUS",
		"MINUS",
		"MULTIPLY",
		"DIVIDE",
		"NUM_INT",
		"NUM_LONG",
		"NUM_FLOAT",
		"NUM_DOUBLE",
		"STRING_LITERAL_DOUBLE_QUOTED",
		"STRING_LITERAL_SINGLE_QUOTED",
		"POSITIONAL_PARAM",
		"NAMED_PARAM",
		"HEX_DIGIT",
		"WS",
		"TEXTCHAR",
		"EXPONENT",
		"FLOAT_SUFFIX"
	};
	
	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 = { 134217728L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
	private static final long[] mk_tokenSet_2() {
		long[] data = { 1125900712148994L, 2L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
	private static final long[] mk_tokenSet_3() {
		long[] data = { 1125900712148994L, 64L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_3 = new BitSet(mk_tokenSet_3());
	private static final long[] mk_tokenSet_4() {
		long[] data = { 1125900443713538L, 64L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_4 = new BitSet(mk_tokenSet_4());
	private static final long[] mk_tokenSet_5() {
		long[] data = { 1125899906842626L, 64L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_5 = new BitSet(mk_tokenSet_5());
	private static final long[] mk_tokenSet_6() {
		long[] data = { 9007199254740992L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_6 = new BitSet(mk_tokenSet_6());
	private static final long[] mk_tokenSet_7() {
		long[] data = { 2L, 2L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_7 = new BitSet(mk_tokenSet_7());
	private static final long[] mk_tokenSet_8() {
		long[] data = { 9007199254741250L, 6L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_8 = new BitSet(mk_tokenSet_8());
	private static final long[] mk_tokenSet_9() {
		long[] data = { 2L, 10L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_9 = new BitSet(mk_tokenSet_9());
	private static final long[] mk_tokenSet_10() {
		long[] data = { 0L, 16L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_10 = new BitSet(mk_tokenSet_10());
	private static final long[] mk_tokenSet_11() {
		long[] data = { 1726422100478786L, 131038L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_11 = new BitSet(mk_tokenSet_11());
	private static final long[] mk_tokenSet_12() {
		long[] data = { 1726377003322178L, 130910L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_12 = new BitSet(mk_tokenSet_12());
	private static final long[] mk_tokenSet_13() {
		long[] data = { 1726376868579394L, 8026L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_13 = new BitSet(mk_tokenSet_13());
	private static final long[] mk_tokenSet_14() {
		long[] data = { 134217728L, 8L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_14 = new BitSet(mk_tokenSet_14());
	private static final long[] mk_tokenSet_15() {
		long[] data = { 134217728L, 72L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_15 = new BitSet(mk_tokenSet_15());
	private static final long[] mk_tokenSet_16() {
		long[] data = { 1726377002797122L, 130906L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_16 = new BitSet(mk_tokenSet_16());
	private static final long[] mk_tokenSet_17() {
		long[] data = { 1726377002797122L, 131034L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_17 = new BitSet(mk_tokenSet_17());
	private static final long[] mk_tokenSet_18() {
		long[] data = { 1726376869104194L, 130906L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_18 = new BitSet(mk_tokenSet_18());
	private static final long[] mk_tokenSet_19() {
		long[] data = { 0L, 32L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_19 = new BitSet(mk_tokenSet_19());
	private static final long[] mk_tokenSet_20() {
		long[] data = { 0L, 72L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_20 = new BitSet(mk_tokenSet_20());
	private static final long[] mk_tokenSet_21() {
		long[] data = { 1125900712148994L, 74L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_21 = new BitSet(mk_tokenSet_21());
	private static final long[] mk_tokenSet_22() {
		long[] data = { 1125945809305602L, 74L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_22 = new BitSet(mk_tokenSet_22());
	private static final long[] mk_tokenSet_23() {
		long[] data = { 67108864L, 4L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_23 = new BitSet(mk_tokenSet_23());
	private static final long[] mk_tokenSet_24() {
		long[] data = { 1125945809305858L, 78L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_24 = new BitSet(mk_tokenSet_24());
	private static final long[] mk_tokenSet_25() {
		long[] data = { 1688850665570370L, 64L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_25 = new BitSet(mk_tokenSet_25());
	private static final long[] mk_tokenSet_26() {
		long[] data = { 256L, 4L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_26 = new BitSet(mk_tokenSet_26());
	private static final long[] mk_tokenSet_27() {
		long[] data = { 1688850665570306L, 64L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_27 = new BitSet(mk_tokenSet_27());
	private static final long[] mk_tokenSet_28() {
		long[] data = { 3945203645003842576L, 33447973L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_28 = new BitSet(mk_tokenSet_28());
	private static final long[] mk_tokenSet_29() {
		long[] data = { 3949709586462133264L, 33554357L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_29 = new BitSet(mk_tokenSet_29());
	private static final long[] mk_tokenSet_30() {
		long[] data = { 3945168460614976528L, 33447973L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_30 = new BitSet(mk_tokenSet_30());
	private static final long[] mk_tokenSet_31() {
		long[] data = { 3949709586445356048L, 33554357L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_31 = new BitSet(mk_tokenSet_31());
	private static final long[] mk_tokenSet_32() {
		long[] data = { 3946894837483555922L, 33554421L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_32 = new BitSet(mk_tokenSet_32());
	private static final long[] mk_tokenSet_33() {
		long[] data = { 1726376868579394L, 8016L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_33 = new BitSet(mk_tokenSet_33());
	private static final long[] mk_tokenSet_34() {
		long[] data = { 0L, 64L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_34 = new BitSet(mk_tokenSet_34());
	private static final long[] mk_tokenSet_35() {
		long[] data = { 1726377011185730L, 130906L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_35 = new BitSet(mk_tokenSet_35());
	private static final long[] mk_tokenSet_36() {
		long[] data = { 1726376868579394L, 130906L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_36 = new BitSet(mk_tokenSet_36());
	private static final long[] mk_tokenSet_37() {
		long[] data = { 1688850673958978L, 64L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_37 = new BitSet(mk_tokenSet_37());
	private static final long[] mk_tokenSet_38() {
		long[] data = { 1726376868579394L, 32602L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_38 = new BitSet(mk_tokenSet_38());
	private static final long[] mk_tokenSet_39() {
		long[] data = { 288235873709884416L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_39 = new BitSet(mk_tokenSet_39());
	private static final long[] mk_tokenSet_40() {
		long[] data = { 576460769617514496L, 31457280L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_40 = new BitSet(mk_tokenSet_40());
	private static final long[] mk_tokenSet_41() {
		long[] data = { 1297037242572750848L, 31457285L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_41 = new BitSet(mk_tokenSet_41());
	private static final long[] mk_tokenSet_42() {
		long[] data = { 1297037242438533120L, 31457285L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_42 = new BitSet(mk_tokenSet_42());
	private static final long[] mk_tokenSet_43() {
		long[] data = { 134217728L, 31457280L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_43 = new BitSet(mk_tokenSet_43());
	private static final long[] mk_tokenSet_44() {
		long[] data = { 805306368L, 66L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_44 = new BitSet(mk_tokenSet_44());
	private static final long[] mk_tokenSet_45() {
		long[] data = { 805306368L, 74L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_45 = new BitSet(mk_tokenSet_45());
	private static final long[] mk_tokenSet_46() {
		long[] data = { 2L, 8L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_46 = new BitSet(mk_tokenSet_46());
	private static final long[] mk_tokenSet_47() {
		long[] data = { 1125900443713538L, 72L, 0L, 0L};
		return data;
	}
	public static final BitSet _tokenSet_47 = new BitSet(mk_tokenSet_47());
	
	}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy