OQLParser.java :  » Database-ORM » db-ojb » org » apache » ojb » odmg » oql » Java Open Source

Java Open Source » Database ORM » db ojb 
db ojb » org » apache » ojb » odmg » oql » OQLParser.java
// $ANTLR 2.7.5 (20050128): "oql-ojb.g" -> "OQLParser.java"$

/* Copyright 2003-2005 The Apache Software Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.ojb.odmg.oql;


import java.util.ArrayList;
import java.util.Collection;
import java.util.Vector;

import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.MetadataManager;
import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
import org.apache.ojb.broker.query.QueryByCriteria;
import org.apache.ojb.broker.query.QueryFactory;
import org.apache.ojb.broker.util.ClassHelper;

import antlr.NoViableAltException;
import antlr.ParserSharedInputState;
import antlr.RecognitionException;
import antlr.Token;
import antlr.TokenBuffer;
import antlr.TokenStream;
import antlr.TokenStreamException;
import antlr.collections.impl.BitSet;

public class OQLParser extends antlr.LLkParser       implements OQLLexerTokenTypes
 {

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

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

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

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

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

  public final Query  buildQuery() throws RecognitionException, TokenStreamException {
    Query query = null;
    
    
    try {      // for error handling
      query=selectQuery();
      {
      if ((LA(1)==TOK_SEMIC)) {
        match(TOK_SEMIC);
      }
      else if ((LA(1)==EOF)) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_0);
    }
    return query;
  }
  
  public final QueryByCriteria  selectQuery() throws RecognitionException, TokenStreamException {
    QueryByCriteria query = null;
    
    
    try {      // for error handling
      
      Class clazz = null;
      Criteria criteria = new Criteria();
      String[] projectionAttrs;
      boolean distinct = false;
      
      match(LITERAL_select);
      {
      if ((LA(1)==LITERAL_distinct)) {
        match(LITERAL_distinct);
        
        distinct = true;
        
      }
      else if ((LA(1)==TOK_STAR||LA(1)==Identifier)) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      projectionAttrs=projectionAttributes();
      match(LITERAL_from);
      clazz=fromClause();
      {
      if ((LA(1)==LITERAL_where)) {
        match(LITERAL_where);
        whereClause(criteria);
      }
      else if ((_tokenSet_1.member(LA(1)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      
      if (clazz != null)
      {
      if (projectionAttrs[0].indexOf('.') < 0)
      {
      query = QueryFactory.newQuery(clazz, criteria, distinct);
      }
      else
      {
      ClassDescriptor cld = MetadataManager.getInstance().getRepository().getDescriptorFor(clazz);
      for (int i = 0; i < projectionAttrs.length; i++)
      {
      projectionAttrs[i] = projectionAttrs[i].substring(projectionAttrs[i].indexOf('.') + 1);
      }
      
      ArrayList descs = cld.getAttributeDescriptorsForPath(projectionAttrs[0]);
      int pathLen = descs.size();
      
      if ((pathLen > 0) && (descs.get(pathLen - 1) instanceof ObjectReferenceDescriptor))
      {
      ObjectReferenceDescriptor ord =
      ((ObjectReferenceDescriptor) descs.get(pathLen - 1));
      query = QueryFactory.newQuery(clazz, criteria, distinct);
      query.setObjectProjectionAttribute(projectionAttrs[0],
      ord.getItemClass());
      }
      else
      {
      query = QueryFactory.newReportQuery(clazz, projectionAttrs, criteria, distinct);
      }
      }
      }
      
      {
      if ((LA(1)==LITERAL_order)) {
        match(LITERAL_order);
        match(LITERAL_by);
        orderClause(query);
      }
      else if ((_tokenSet_2.member(LA(1)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      {
      if ((LA(1)==LITERAL_group)) {
        match(LITERAL_group);
        match(LITERAL_by);
        groupClause(query);
      }
      else if ((_tokenSet_3.member(LA(1)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      {
      if ((LA(1)==LITERAL_prefetch)) {
        match(LITERAL_prefetch);
        prefetchClause(query);
      }
      else if ((LA(1)==EOF||LA(1)==TOK_RPAREN||LA(1)==TOK_SEMIC)) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_4);
    }
    return query;
  }
  
  public final String[]  projectionAttributes() throws RecognitionException, TokenStreamException {
    String[] projectionAttrs = null;
    
    Token  id = null;
    Token  id1 = null;
    
    try {      // for error handling
      
      String first = null;
      ArrayList list = null;
      
      {
      if ((LA(1)==Identifier)) {
        id = LT(1);
        match(Identifier);
        {
        
        first = id.getText();
        
        }
        {
        _loop80:
        do {
          if ((LA(1)==TOK_COMMA)) {
            match(TOK_COMMA);
            id1 = LT(1);
            match(Identifier);
            {
            
            if (list == null)
            {
            list = new ArrayList();
            list.add(first);
            }
            list.add(id1.getText());
            
            }
          }
          else {
            break _loop80;
          }
          
        } while (true);
        }
      }
      else if ((LA(1)==TOK_STAR)) {
        match(TOK_STAR);
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      
      if (list == null)
      {
      projectionAttrs = new String[] {first};
      }
      else
      {
      projectionAttrs = (String[]) list.toArray(new String[list.size()]);
      }
      
      
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_5);
    }
    return projectionAttrs;
  }
  
  public final Class  fromClause() throws RecognitionException, TokenStreamException {
    Class clazz = null;
    
    Token  id = null;
    
    try {      // for error handling
      id = LT(1);
      match(Identifier);
      
      try {
      clazz = ClassHelper.getClass(id.getText());
      } catch (Exception e) {
      }
      
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_6);
    }
    return clazz;
  }
  
  public final void whereClause(
    Criteria criteria
  ) throws RecognitionException, TokenStreamException {
    
    
    try {      // for error handling
      orExpr(criteria);
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
  }
  
  public final void orderClause(
    QueryByCriteria query
  ) throws RecognitionException, TokenStreamException {
    
    
    try {      // for error handling
      sortCriterion(query);
      {
      _loop83:
      do {
        if ((LA(1)==TOK_COMMA)) {
          match(TOK_COMMA);
          sortCriterion(query);
        }
        else {
          break _loop83;
        }
        
      } while (true);
      }
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_2);
    }
  }
  
  public final void groupClause(
    QueryByCriteria query
  ) throws RecognitionException, TokenStreamException {
    
    
    try {      // for error handling
      groupCriterion(query);
      {
      _loop89:
      do {
        if ((LA(1)==TOK_COMMA)) {
          match(TOK_COMMA);
          groupCriterion(query);
        }
        else {
          break _loop89;
        }
        
      } while (true);
      }
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_3);
    }
  }
  
  public final void prefetchClause(
    QueryByCriteria query
  ) throws RecognitionException, TokenStreamException {
    
    
    try {      // for error handling
      prefetchCriterion(query);
      {
      _loop93:
      do {
        if ((LA(1)==TOK_COMMA)) {
          match(TOK_COMMA);
          prefetchCriterion(query);
        }
        else {
          break _loop93;
        }
        
      } while (true);
      }
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_4);
    }
  }
  
  public final Query  existsQuery() throws RecognitionException, TokenStreamException {
    Query query = null;
    
    
    try {      // for error handling
      
      Class clazz = null;
      Criteria criteria = new Criteria();
      
      match(LITERAL_exists);
      projectionAttributes();
      match(LITERAL_in);
      clazz=fromClause();
      {
      if ((LA(1)==TOK_COLON)) {
        match(TOK_COLON);
        whereClause(criteria);
      }
      else if ((_tokenSet_7.member(LA(1)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      
      if (clazz != null) {
      query = QueryFactory.newQuery(clazz, criteria);
      }
          
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
    return query;
  }
  
  public final void orExpr(
    Criteria criteria
  ) throws RecognitionException, TokenStreamException {
    
    
    try {      // for error handling
      andExpr(criteria);
      {
      _loop97:
      do {
        if ((LA(1)==LITERAL_or) && (_tokenSet_8.member(LA(2))) && (_tokenSet_9.member(LA(3)))) {
          match(LITERAL_or);
          Criteria orCriteria = new Criteria();
          andExpr(orCriteria);
          criteria.addOrCriteria(orCriteria);
        }
        else {
          break _loop97;
        }
        
      } while (true);
      }
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
  }
  
  public final void sortCriterion(
    QueryByCriteria query
  ) throws RecognitionException, TokenStreamException {
    
    Token  id = null;
    
    try {      // for error handling
      boolean descending = false;
      id = LT(1);
      match(Identifier);
      {
      if ((LA(1)==LITERAL_asc||LA(1)==LITERAL_desc)) {
        {
        if ((LA(1)==LITERAL_asc)) {
          match(LITERAL_asc);
          descending = false;
        }
        else if ((LA(1)==LITERAL_desc)) {
          match(LITERAL_desc);
          descending = true;
        }
        else {
          throw new NoViableAltException(LT(1), getFilename());
        }
        
        }
      }
      else if ((_tokenSet_10.member(LA(1)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      
      if (descending) {
      query.addOrderByDescending(id.getText());
      } else {
      query.addOrderByAscending(id.getText());
      }
      
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_10);
    }
  }
  
  public final void groupCriterion(
    QueryByCriteria query
  ) throws RecognitionException, TokenStreamException {
    
    Token  id = null;
    
    try {      // for error handling
      id = LT(1);
      match(Identifier);
      
      query.addGroupBy(id.getText());
      
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_11);
    }
  }
  
  public final void prefetchCriterion(
    QueryByCriteria query
  ) throws RecognitionException, TokenStreamException {
    
    Token  id = null;
    
    try {      // for error handling
      id = LT(1);
      match(Identifier);
      
      query.addPrefetchedRelationship(id.getText());
      
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_12);
    }
  }
  
  public final void andExpr(
    Criteria criteria
  ) throws RecognitionException, TokenStreamException {
    
    
    try {      // for error handling
      quantifierExpr(criteria);
      {
      _loop100:
      do {
        if ((LA(1)==LITERAL_and) && (_tokenSet_8.member(LA(2))) && (_tokenSet_9.member(LA(3)))) {
          match(LITERAL_and);
          Criteria andCriteria = new Criteria();
          quantifierExpr(andCriteria);
          criteria.addAndCriteria(andCriteria);
        }
        else {
          break _loop100;
        }
        
      } while (true);
      }
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
  }
  
  public final void quantifierExpr(
    Criteria criteria
  ) throws RecognitionException, TokenStreamException {
    
    
    try {      // for error handling
      switch ( LA(1)) {
      case TOK_LPAREN:
      {
        match(TOK_LPAREN);
        orExpr(criteria);
        match(TOK_RPAREN);
        break;
      }
      case LITERAL_is_undefined:
      case LITERAL_is_defined:
      {
        undefinedExpr(criteria);
        break;
      }
      case LITERAL_exists:
      case LITERAL_not:
      {
        existsExpr(criteria);
        break;
      }
      default:
        if ((LA(1)==Identifier) && (_tokenSet_13.member(LA(2)))) {
          equalityExpr(criteria);
        }
        else if ((LA(1)==Identifier) && (LA(2)==LITERAL_not||LA(2)==LITERAL_like) && (_tokenSet_14.member(LA(3)))) {
          likeExpr(criteria);
        }
        else if ((LA(1)==Identifier) && (LA(2)==LITERAL_not||LA(2)==LITERAL_between) && (_tokenSet_15.member(LA(3)))) {
          betweenExpr(criteria);
        }
        else if ((LA(1)==Identifier) && (LA(2)==LITERAL_in||LA(2)==LITERAL_not) && (LA(3)==TOK_LPAREN||LA(3)==LITERAL_in||LA(3)==LITERAL_list)) {
          inExpr(criteria);
        }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
  }
  
  public final void equalityExpr(
    Criteria criteria
  ) throws RecognitionException, TokenStreamException {
    
    Token  id = null;
    
    try {      // for error handling
      
        Object value = null;
      
      id = LT(1);
      match(Identifier);
      {
      {
      switch ( LA(1)) {
      case TOK_EQ:
      {
        match(TOK_EQ);
        {
        if ((LA(1)==LITERAL_nil)) {
          match(LITERAL_nil);
          criteria.addIsNull(id.getText());
        }
        else if ((_tokenSet_16.member(LA(1)))) {
          value=literal();
          criteria.addEqualTo(id.getText(), value);
        }
        else {
          throw new NoViableAltException(LT(1), getFilename());
        }
        
        }
        break;
      }
      case TOK_NE:
      {
        match(TOK_NE);
        {
        if ((LA(1)==LITERAL_nil)) {
          match(LITERAL_nil);
          criteria.addNotNull(id.getText());
        }
        else if ((_tokenSet_16.member(LA(1)))) {
          value=literal();
          criteria.addNotEqualTo(id.getText(), value);
        }
        else {
          throw new NoViableAltException(LT(1), getFilename());
        }
        
        }
        break;
      }
      case TOK_NE2:
      {
        match(TOK_NE2);
        {
        if ((LA(1)==LITERAL_nil)) {
          match(LITERAL_nil);
          criteria.addNotNull(id.getText());
        }
        else if ((_tokenSet_16.member(LA(1)))) {
          value=literal();
          criteria.addNotEqualTo(id.getText(), value);
        }
        else {
          throw new NoViableAltException(LT(1), getFilename());
        }
        
        }
        break;
      }
      case TOK_LT:
      {
        match(TOK_LT);
        value=literal();
        criteria.addLessThan(id.getText(), value);
        break;
      }
      case TOK_GT:
      {
        match(TOK_GT);
        value=literal();
        criteria.addGreaterThan(id.getText(), value);
        break;
      }
      case TOK_LE:
      {
        match(TOK_LE);
        value=literal();
        criteria.addLessOrEqualThan(id.getText(), value);
        break;
      }
      case TOK_GE:
      {
        match(TOK_GE);
        value=literal();
        criteria.addGreaterOrEqualThan(id.getText(), value);
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      }
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
  }
  
  public final void likeExpr(
    Criteria criteria
  ) throws RecognitionException, TokenStreamException {
    
    Token  id = null;
    
    try {      // for error handling
      
      boolean negative = false;
      Object value = null;
      
      id = LT(1);
      match(Identifier);
      {
      if ((LA(1)==LITERAL_not)) {
        match(LITERAL_not);
        negative = true;
      }
      else if ((LA(1)==LITERAL_like)) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      match(LITERAL_like);
      value=literal();
      
      if (negative) {
      criteria.addNotLike(id.getText(), value);
      } else {
      criteria.addLike(id.getText(), value);
      }
      
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
  }
  
  public final void undefinedExpr(
    Criteria criteria
  ) throws RecognitionException, TokenStreamException {
    
    Token  id = null;
    
    try {      // for error handling
      boolean negative = false;
      {
      if ((LA(1)==LITERAL_is_undefined)) {
        match(LITERAL_is_undefined);
        negative = false;
      }
      else if ((LA(1)==LITERAL_is_defined)) {
        match(LITERAL_is_defined);
        negative = true;
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      match(TOK_LPAREN);
      id = LT(1);
      match(Identifier);
      match(TOK_RPAREN);
      
      if (negative) {
      criteria.addNotNull(id.getText());
      } else {
      criteria.addIsNull(id.getText());
      }
      
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
  }
  
  public final void betweenExpr(
    Criteria criteria
  ) throws RecognitionException, TokenStreamException {
    
    Token  id = null;
    
    try {      // for error handling
      
      boolean negative = false;
      Object lower = null;
      Object upper = null;
      
      id = LT(1);
      match(Identifier);
      {
      if ((LA(1)==LITERAL_not)) {
        match(LITERAL_not);
        negative = true;
      }
      else if ((LA(1)==LITERAL_between)) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      match(LITERAL_between);
      lower=literal();
      match(LITERAL_and);
      upper=literal();
      
      if (negative) {
      criteria.addNotBetween(id.getText(), lower, upper);
      } else {
      criteria.addBetween(id.getText(), lower, upper);
      }
      
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
  }
  
  public final void inExpr(
    Criteria criteria
  ) throws RecognitionException, TokenStreamException {
    
    Token  id = null;
    
    try {      // for error handling
      
         boolean negative = false;
         Collection coll;
      
      id = LT(1);
      match(Identifier);
      {
      if ((LA(1)==LITERAL_not)) {
        match(LITERAL_not);
        negative = true;
      }
      else if ((LA(1)==LITERAL_in)) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      match(LITERAL_in);
      {
      if ((LA(1)==LITERAL_list)) {
        match(LITERAL_list);
      }
      else if ((LA(1)==TOK_LPAREN)) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      coll=argList();
      
      if (negative) {
      criteria.addNotIn(id.getText(), coll);
      } else {
      criteria.addIn(id.getText(), coll);
      }
      
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
  }
  
  public final void existsExpr(
    Criteria criteria
  ) throws RecognitionException, TokenStreamException {
    
    
    try {      // for error handling
      
      Query subQuery = null;
      boolean negative = false;
      
      {
      if ((LA(1)==LITERAL_not)) {
        match(LITERAL_not);
        negative = true;
      }
      else if ((LA(1)==LITERAL_exists)) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      {
      if ((LA(1)==LITERAL_exists) && (LA(2)==TOK_LPAREN)) {
        match(LITERAL_exists);
        match(TOK_LPAREN);
        subQuery=selectQuery();
        match(TOK_RPAREN);
      }
      else if ((LA(1)==LITERAL_exists) && (LA(2)==TOK_STAR||LA(2)==Identifier)) {
        subQuery=existsQuery();
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      
      if (negative) {
      criteria.addNotExists(subQuery);
      } else {
      criteria.addExists(subQuery);
      }
      
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
  }
  
  public final Object  literal() throws RecognitionException, TokenStreamException {
    Object value = null;
    
    Token  tokInt = null;
    Token  tokADbl = null;
    Token  tokEDbl = null;
    Token  tokChar = null;
    Token  tokStr = null;
    Token  tokDate = null;
    Token  tokTime = null;
    Token  tokTs = null;
    
    try {      // for error handling
      switch ( LA(1)) {
      case TOK_DOLLAR:
      {
        match(TOK_DOLLAR);
        match(TOK_UNSIGNED_INTEGER);
        value = null;
        break;
      }
      case LITERAL_true:
      {
        match(LITERAL_true);
        value = Boolean.TRUE;
        break;
      }
      case LITERAL_false:
      {
        match(LITERAL_false);
        value = Boolean.FALSE;
        break;
      }
      case TOK_UNSIGNED_INTEGER:
      {
        tokInt = LT(1);
        match(TOK_UNSIGNED_INTEGER);
        
          try
          {
            value = Integer.valueOf(tokInt.getText());
          }
          catch (NumberFormatException ignored)
          {
            value = Long.valueOf(tokInt.getText());
          }
        
        break;
      }
      case TOK_APPROXIMATE_NUMERIC_LITERAL:
      {
        tokADbl = LT(1);
        match(TOK_APPROXIMATE_NUMERIC_LITERAL);
        value = Double.valueOf(tokADbl.getText());
        break;
      }
      case TOK_EXACT_NUMERIC_LITERAL:
      {
        tokEDbl = LT(1);
        match(TOK_EXACT_NUMERIC_LITERAL);
        value = Double.valueOf(tokEDbl.getText());
        break;
      }
      case CharLiteral:
      {
        tokChar = LT(1);
        match(CharLiteral);
        value = new Character(tokChar.getText().charAt(0));
        break;
      }
      case StringLiteral:
      {
        tokStr = LT(1);
        match(StringLiteral);
        value = tokStr.getText();
        break;
      }
      case LITERAL_date:
      {
        match(LITERAL_date);
        tokDate = LT(1);
        match(StringLiteral);
        value = java.sql.Date.valueOf(tokDate.getText());
        break;
      }
      case LITERAL_time:
      {
        match(LITERAL_time);
        tokTime = LT(1);
        match(StringLiteral);
        value = java.sql.Time.valueOf(tokTime.getText());
        break;
      }
      case LITERAL_timestamp:
      {
        match(LITERAL_timestamp);
        tokTs = LT(1);
        match(StringLiteral);
        value = java.sql.Timestamp.valueOf(tokTs.getText());
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_17);
    }
    return value;
  }
  
  public final Collection  argList() throws RecognitionException, TokenStreamException {
    Collection coll = null;
    
    
    try {      // for error handling
      
          Collection temp = new Vector();
            Object val;
        
      match(TOK_LPAREN);
      {
      if ((_tokenSet_16.member(LA(1)))) {
        val=literal();
        if (val != null) {temp.add(val);}
        {
        _loop124:
        do {
          if ((LA(1)==TOK_COMMA)) {
            match(TOK_COMMA);
            val=literal();
            if (val != null) {temp.add(val);}
          }
          else {
            break _loop124;
          }
          
        } while (true);
        }
      }
      else if ((LA(1)==TOK_RPAREN)) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      match(TOK_RPAREN);
      
          if (!temp.isEmpty()) {coll = temp;}
          
    }
    catch (RecognitionException ex) {
      reportError(ex);
      recover(ex,_tokenSet_7);
    }
    return coll;
  }
  
  
  public static final String[] _tokenNames = {
    "<0>",
    "EOF",
    "<2>",
    "NULL_TREE_LOOKAHEAD",
    "right parenthesis",
    "left parenthesis",
    "comma",
    "semicolon",
    "TOK_COLON",
    "dot",
    "dot",
    "operator",
    "comparison operator",
    "operator",
    "operator",
    "operator",
    "operator",
    "comparison operator",
    "comparison operator",
    "comparison operator",
    "comparison operator",
    "comparison operator",
    "comparison operator",
    "left bracket",
    "right bracket",
    "TOK_DOLLAR",
    "NameFirstCharacter",
    "NameCharacter",
    "Identifier",
    "TOK_UNSIGNED_INTEGER",
    "TOK_APPROXIMATE_NUMERIC_LITERAL",
    "numeric value",
    "character string",
    "character string",
    "WhiteSpace",
    "NewLine",
    "CommentLine",
    "MultiLineComment",
    "\"select\"",
    "\"distinct\"",
    "\"from\"",
    "\"where\"",
    "\"order\"",
    "\"by\"",
    "\"group\"",
    "\"prefetch\"",
    "\"exists\"",
    "\"in\"",
    "\"asc\"",
    "\"desc\"",
    "\"or\"",
    "\"and\"",
    "\"nil\"",
    "\"not\"",
    "\"list\"",
    "\"between\"",
    "\"is_undefined\"",
    "\"is_defined\"",
    "\"like\"",
    "\"true\"",
    "\"false\"",
    "\"date\"",
    "\"time\"",
    "\"timestamp\""
  };
  
  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 = { 57174604644498L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
  private static final long[] mk_tokenSet_2() {
    long[] data = { 52776558133394L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
  private static final long[] mk_tokenSet_3() {
    long[] data = { 35184372088978L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_3 = new BitSet(mk_tokenSet_3());
  private static final long[] mk_tokenSet_4() {
    long[] data = { 146L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_4 = new BitSet(mk_tokenSet_4());
  private static final long[] mk_tokenSet_5() {
    long[] data = { 141836999983104L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_5 = new BitSet(mk_tokenSet_5());
  private static final long[] mk_tokenSet_6() {
    long[] data = { 3437073348428178L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_6 = new BitSet(mk_tokenSet_6());
  private static final long[] mk_tokenSet_7() {
    long[] data = { 3434874325172370L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_7 = new BitSet(mk_tokenSet_7());
  private static final long[] mk_tokenSet_8() {
    long[] data = { 225250350381137952L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_8 = new BitSet(mk_tokenSet_8());
  private static final long[] mk_tokenSet_9() {
    long[] data = { 549650261048496160L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_9 = new BitSet(mk_tokenSet_9());
  private static final long[] mk_tokenSet_10() {
    long[] data = { 52776558133458L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_10 = new BitSet(mk_tokenSet_10());
  private static final long[] mk_tokenSet_11() {
    long[] data = { 35184372089042L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_11 = new BitSet(mk_tokenSet_11());
  private static final long[] mk_tokenSet_12() {
    long[] data = { 210L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_12 = new BitSet(mk_tokenSet_12());
  private static final long[] mk_tokenSet_13() {
    long[] data = { 8261632L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_13 = new BitSet(mk_tokenSet_13());
  private static final long[] mk_tokenSet_14() {
    long[] data = { -288230359475159040L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_14 = new BitSet(mk_tokenSet_14());
  private static final long[] mk_tokenSet_15() {
    long[] data = { -540431938607906816L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_15 = new BitSet(mk_tokenSet_15());
  private static final long[] mk_tokenSet_16() {
    long[] data = { -576460735626870784L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_16 = new BitSet(mk_tokenSet_16());
  private static final long[] mk_tokenSet_17() {
    long[] data = { 3434874325172434L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_17 = new BitSet(mk_tokenSet_17());
  
  }
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.