code: public final hqlParser.selectObject_return selectObject() throws RecognitionException {
  		hqlParser.selectObject_return retval = new hqlParser.selectObject_return();
  		retval.start = input.LT(1);
  
  		CommonTree root_0 = null;
  
  		Token OBJECT54=null;
  		Token OPEN55=null;
  		Token CLOSE57=null;
  		ParserRuleReturnScope identifier56 =null;
  
  		CommonTree OBJECT54_tree=null;
  		CommonTree OPEN55_tree=null;
  		CommonTree CLOSE57_tree=null;
  
  		try {
  			// hql.g:268:4: ( OBJECT ^ OPEN ! identifier CLOSE !)
  			// hql.g:268:6: OBJECT ^ OPEN ! identifier CLOSE !
  			{
  			root_0 = (CommonTree)adaptor.nil();
  
  
  			OBJECT54=(Token)match(input,OBJECT,FOLLOW_OBJECT_in_selectObject1095);
  			OBJECT54_tree = (CommonTree)adaptor.create(OBJECT54);
  			root_0 = (CommonTree)adaptor.becomeRoot(OBJECT54_tree, root_0);
  
  			OPEN55=(Token)match(input,OPEN,FOLLOW_OPEN_in_selectObject1098);
  			pushFollow(FOLLOW_identifier_in_selectObject1101);
  			identifier56=identifier();
  			state._fsp--;
  
  			adaptor.addChild(root_0, identifier56.getTree());
  
  			CLOSE57=(Token)match(input,CLOSE,FOLLOW_CLOSE_in_selectObject1103);
  			}
  
  			retval.stop = input.LT(-1);
  
  			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
  			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
  
  		}
  		catch (RecognitionException re) {
  			reportError(re);
  			recover(input,re);
  			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
  		}
  		finally {
  			// do for sure before leaving
  		}
  		return retval;
  	}
docs: hql.g:267:1: selectObject : OBJECT ^ OPEN ! identifier CLOSE !;