This project has retired. For details please refer to its Attic page.
CmisQlExtParser_CmisBaseGrammar xref

1   // $ANTLR 3.3 Nov 30, 2010 12:46:29 CmisBaseGrammar.g 2012-04-03 05:22:15
2   
3   /*
4    * THIS FILE IS AUTO-GENERATED, DO NOT EDIT.
5    *
6    * Licensed to the Apache Software Foundation (ASF) under one
7    * or more contributor license agreements.  See the NOTICE file
8    * distributed with this work for additional information
9    * regarding copyright ownership.  The ASF licenses this file
10   * to you under the Apache License, Version 2.0 (the
11   * "License"); you may not use this file except in compliance
12   * with the License.  You may obtain a copy of the License at
13   *
14   * http://www.apache.org/licenses/LICENSE-2.0
15   *
16   * Unless required by applicable law or agreed to in writing,
17   * software distributed under the License is distributed on an
18   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19   * KIND, either express or implied.  See the License for the
20   * specific language governing permissions and limitations
21   * under the License.
22   *
23   * Authors:
24   *     Stefane Fermigier, Nuxeo
25   *     Florent Guillaume, Nuxeo
26   *
27   * THIS FILE IS AUTO-GENERATED, DO NOT EDIT.
28   */
29  package org.apache.chemistry.opencmis.server.support.query;
30  
31  
32  import org.antlr.runtime.*;
33  import java.util.Stack;
34  import java.util.List;
35  import java.util.ArrayList;
36  
37  
38  import org.antlr.runtime.tree.*;
39  
40  public class CmisQlExtParser_CmisBaseGrammar extends Parser {
41      public static final int EOF=-1;
42      public static final int TABLE=4;
43      public static final int COL=5;
44      public static final int SEL_LIST=6;
45      public static final int IN_LIST=7;
46      public static final int IN_ANY=8;
47      public static final int NOT_IN_ANY=9;
48      public static final int EQ_ANY=10;
49      public static final int NOT_IN=11;
50      public static final int NOT_LIKE=12;
51      public static final int IS_NULL=13;
52      public static final int IS_NOT_NULL=14;
53      public static final int ORDER_BY=15;
54      public static final int SELECT=16;
55      public static final int FROM=17;
56      public static final int AS=18;
57      public static final int JOIN=19;
58      public static final int INNER=20;
59      public static final int OUTER=21;
60      public static final int LEFT=22;
61      public static final int RIGHT=23;
62      public static final int ON=24;
63      public static final int WHERE=25;
64      public static final int ORDER=26;
65      public static final int BY=27;
66      public static final int ASC=28;
67      public static final int DESC=29;
68      public static final int IS=30;
69      public static final int NULL=31;
70      public static final int AND=32;
71      public static final int OR=33;
72      public static final int NOT=34;
73      public static final int IN=35;
74      public static final int LIKE=36;
75      public static final int ANY=37;
76      public static final int CONTAINS=38;
77      public static final int SCORE=39;
78      public static final int IN_FOLDER=40;
79      public static final int IN_TREE=41;
80      public static final int TIMESTAMP=42;
81      public static final int STAR=43;
82      public static final int LPAR=44;
83      public static final int RPAR=45;
84      public static final int COMMA=46;
85      public static final int DOT=47;
86      public static final int EQ=48;
87      public static final int NEQ=49;
88      public static final int LT=50;
89      public static final int GT=51;
90      public static final int LTEQ=52;
91      public static final int GTEQ=53;
92      public static final int BOOL_LIT=54;
93      public static final int Sign=55;
94      public static final int Digits=56;
95      public static final int ExactNumLit=57;
96      public static final int ApproxNumLit=58;
97      public static final int NUM_LIT=59;
98      public static final int QUOTE=60;
99      public static final int BACKSL=61;
100     public static final int UNDERSCORE=62;
101     public static final int PERCENT=63;
102     public static final int ESC=64;
103     public static final int STRING_LIT=65;
104     public static final int WS=66;
105     public static final int TIME_LIT=67;
106     public static final int ID=68;
107     public static final int FUNC=111;
108     public static final int OP_ANY=112;
109     public static final int DISTINCT=113;
110 
111     // delegates
112     // delegators
113     public CmisQlExtParser gCmisQlExtParser;
114     public CmisQlExtParser gParent;
115 
116 
117         public CmisQlExtParser_CmisBaseGrammar(TokenStream input, CmisQlExtParser gCmisQlExtParser) {
118             this(input, new RecognizerSharedState(), gCmisQlExtParser);
119         }
120         public CmisQlExtParser_CmisBaseGrammar(TokenStream input, RecognizerSharedState state, CmisQlExtParser gCmisQlExtParser) {
121             super(input, state);
122             this.gCmisQlExtParser = gCmisQlExtParser;
123              
124             gParent = gCmisQlExtParser;
125         }
126         
127     protected TreeAdaptor adaptor = new CommonTreeAdaptor();
128 
129     public void setTreeAdaptor(TreeAdaptor adaptor) {
130         this.adaptor = adaptor;
131     }
132     public TreeAdaptor getTreeAdaptor() {
133         return adaptor;
134     }
135 
136     public String[] getTokenNames() { return CmisQlExtParser.tokenNames; }
137     public String getGrammarFileName() { return "CmisBaseGrammar.g"; }
138 
139 
140         private List<String> errorMessages = new ArrayList<String>();
141         
142         public boolean hasErrors() {
143         	return errorMessages.size() > 0;
144         }
145 
146     	public String getErrorMessages() {
147     		StringBuffer allMessages = new StringBuffer();
148     		
149     		for (String msg : errorMessages)
150     			allMessages.append(msg).append('\n');
151     			
152     		return allMessages.toString();
153     	}
154 
155         @Override
156         // Instead of sending all errors to System.err collect them in a list
157     	public void emitErrorMessage(String msg) {
158     		errorMessages.add(msg);
159     	}
160     	
161 
162 
163     public static class select_list_return extends ParserRuleReturnScope {
164         Object tree;
165         public Object getTree() { return tree; }
166     };
167 
168     // $ANTLR start "select_list"
169     // CmisBaseGrammar.g:67:1: select_list : ( STAR | select_sublist ( COMMA select_sublist )* -> ^( SEL_LIST ( select_sublist )+ ) );
170     public final CmisQlExtParser_CmisBaseGrammar.select_list_return select_list() throws RecognitionException {
171         CmisQlExtParser_CmisBaseGrammar.select_list_return retval = new CmisQlExtParser_CmisBaseGrammar.select_list_return();
172         retval.start = input.LT(1);
173 
174         Object root_0 = null;
175 
176         Token STAR1=null;
177         Token COMMA3=null;
178         CmisQlExtParser_CmisBaseGrammar.select_sublist_return select_sublist2 = null;
179 
180         CmisQlExtParser_CmisBaseGrammar.select_sublist_return select_sublist4 = null;
181 
182 
183         Object STAR1_tree=null;
184         Object COMMA3_tree=null;
185         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
186         RewriteRuleSubtreeStream stream_select_sublist=new RewriteRuleSubtreeStream(adaptor,"rule select_sublist");
187         try {
188             // CmisBaseGrammar.g:68:5: ( STAR | select_sublist ( COMMA select_sublist )* -> ^( SEL_LIST ( select_sublist )+ ) )
189             int alt4=2;
190             switch ( input.LA(1) ) {
191             case STAR:
192                 {
193                 alt4=1;
194                 }
195                 break;
196             case SCORE:
197             case ID:
198                 {
199                 alt4=2;
200                 }
201                 break;
202             default:
203                 NoViableAltException nvae =
204                     new NoViableAltException("", 4, 0, input);
205 
206                 throw nvae;
207             }
208 
209             switch (alt4) {
210                 case 1 :
211                     // CmisBaseGrammar.g:68:7: STAR
212                     {
213                     root_0 = (Object)adaptor.nil();
214 
215                     STAR1=(Token)match(input,STAR,FOLLOW_STAR_in_select_list99); 
216                     STAR1_tree = (Object)adaptor.create(STAR1);
217                     adaptor.addChild(root_0, STAR1_tree);
218 
219 
220                     }
221                     break;
222                 case 2 :
223                     // CmisBaseGrammar.g:69:7: select_sublist ( COMMA select_sublist )*
224                     {
225                     pushFollow(FOLLOW_select_sublist_in_select_list107);
226                     select_sublist2=select_sublist();
227 
228                     state._fsp--;
229 
230                     stream_select_sublist.add(select_sublist2.getTree());
231                     // CmisBaseGrammar.g:69:22: ( COMMA select_sublist )*
232                     loop3:
233                     do {
234                         int alt3=2;
235                         switch ( input.LA(1) ) {
236                         case COMMA:
237                             {
238                             alt3=1;
239                             }
240                             break;
241 
242                         }
243 
244                         switch (alt3) {
245                     	case 1 :
246                     	    // CmisBaseGrammar.g:69:24: COMMA select_sublist
247                     	    {
248                     	    COMMA3=(Token)match(input,COMMA,FOLLOW_COMMA_in_select_list111);  
249                     	    stream_COMMA.add(COMMA3);
250 
251                     	    pushFollow(FOLLOW_select_sublist_in_select_list113);
252                     	    select_sublist4=select_sublist();
253 
254                     	    state._fsp--;
255 
256                     	    stream_select_sublist.add(select_sublist4.getTree());
257 
258                     	    }
259                     	    break;
260 
261                     	default :
262                     	    break loop3;
263                         }
264                     } while (true);
265 
266 
267 
268                     // AST REWRITE
269                     // elements: select_sublist
270                     // token labels: 
271                     // rule labels: retval
272                     // token list labels: 
273                     // rule list labels: 
274                     // wildcard labels: 
275                     retval.tree = root_0;
276                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
277 
278                     root_0 = (Object)adaptor.nil();
279                     // 70:7: -> ^( SEL_LIST ( select_sublist )+ )
280                     {
281                         // CmisBaseGrammar.g:70:10: ^( SEL_LIST ( select_sublist )+ )
282                         {
283                         Object root_1 = (Object)adaptor.nil();
284                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SEL_LIST, "SEL_LIST"), root_1);
285 
286                         if ( !(stream_select_sublist.hasNext()) ) {
287                             throw new RewriteEarlyExitException();
288                         }
289                         while ( stream_select_sublist.hasNext() ) {
290                             adaptor.addChild(root_1, stream_select_sublist.nextTree());
291 
292                         }
293                         stream_select_sublist.reset();
294 
295                         adaptor.addChild(root_0, root_1);
296                         }
297 
298                     }
299 
300                     retval.tree = root_0;
301                     }
302                     break;
303 
304             }
305             retval.stop = input.LT(-1);
306 
307             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
308             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
309 
310         }
311         catch (RecognitionException re) {
312             reportError(re);
313             recover(input,re);
314     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
315 
316         }
317         finally {
318         }
319         return retval;
320     }
321     // $ANTLR end "select_list"
322 
323     public static class select_sublist_return extends ParserRuleReturnScope {
324         Object tree;
325         public Object getTree() { return tree; }
326     };
327 
328     // $ANTLR start "select_sublist"
329     // CmisBaseGrammar.g:73:1: select_sublist : ( value_expression ( ( AS )? column_name )? | qualifier DOT STAR );
330     public final CmisQlExtParser_CmisBaseGrammar.select_sublist_return select_sublist() throws RecognitionException {
331         CmisQlExtParser_CmisBaseGrammar.select_sublist_return retval = new CmisQlExtParser_CmisBaseGrammar.select_sublist_return();
332         retval.start = input.LT(1);
333 
334         Object root_0 = null;
335 
336         Token AS6=null;
337         Token DOT9=null;
338         Token STAR10=null;
339         CmisQlExtParser.value_expression_return value_expression5 = null;
340 
341         CmisQlExtParser_CmisBaseGrammar.column_name_return column_name7 = null;
342 
343         CmisQlExtParser_CmisBaseGrammar.qualifier_return qualifier8 = null;
344 
345 
346         Object AS6_tree=null;
347         Object DOT9_tree=null;
348         Object STAR10_tree=null;
349 
350         try {
351             // CmisBaseGrammar.g:74:5: ( value_expression ( ( AS )? column_name )? | qualifier DOT STAR )
352             int alt7=2;
353             switch ( input.LA(1) ) {
354             case ID:
355                 {
356                 switch ( input.LA(2) ) {
357                 case FROM:
358                 case AS:
359                 case LPAR:
360                 case COMMA:
361                 case ID:
362                     {
363                     alt7=1;
364                     }
365                     break;
366                 case DOT:
367                     {
368                     switch ( input.LA(3) ) {
369                     case STAR:
370                         {
371                         alt7=2;
372                         }
373                         break;
374                     case ID:
375                         {
376                         alt7=1;
377                         }
378                         break;
379                     default:
380                         NoViableAltException nvae =
381                             new NoViableAltException("", 7, 3, input);
382 
383                         throw nvae;
384                     }
385 
386                     }
387                     break;
388                 default:
389                     NoViableAltException nvae =
390                         new NoViableAltException("", 7, 1, input);
391 
392                     throw nvae;
393                 }
394 
395                 }
396                 break;
397             case SCORE:
398                 {
399                 alt7=1;
400                 }
401                 break;
402             default:
403                 NoViableAltException nvae =
404                     new NoViableAltException("", 7, 0, input);
405 
406                 throw nvae;
407             }
408 
409             switch (alt7) {
410                 case 1 :
411                     // CmisBaseGrammar.g:74:7: value_expression ( ( AS )? column_name )?
412                     {
413                     root_0 = (Object)adaptor.nil();
414 
415                     pushFollow(FOLLOW_value_expression_in_select_sublist148);
416                     value_expression5=gCmisQlExtParser.value_expression();
417 
418                     state._fsp--;
419 
420                     adaptor.addChild(root_0, value_expression5.getTree());
421                     // CmisBaseGrammar.g:74:24: ( ( AS )? column_name )?
422                     int alt6=2;
423                     switch ( input.LA(1) ) {
424                         case AS:
425                         case ID:
426                             {
427                             alt6=1;
428                             }
429                             break;
430                     }
431 
432                     switch (alt6) {
433                         case 1 :
434                             // CmisBaseGrammar.g:74:26: ( AS )? column_name
435                             {
436                             // CmisBaseGrammar.g:74:28: ( AS )?
437                             int alt5=2;
438                             switch ( input.LA(1) ) {
439                                 case AS:
440                                     {
441                                     alt5=1;
442                                     }
443                                     break;
444                             }
445 
446                             switch (alt5) {
447                                 case 1 :
448                                     // CmisBaseGrammar.g:74:28: AS
449                                     {
450                                     AS6=(Token)match(input,AS,FOLLOW_AS_in_select_sublist152); 
451 
452                                     }
453                                     break;
454 
455                             }
456 
457                             pushFollow(FOLLOW_column_name_in_select_sublist156);
458                             column_name7=column_name();
459 
460                             state._fsp--;
461 
462                             adaptor.addChild(root_0, column_name7.getTree());
463 
464                             }
465                             break;
466 
467                     }
468 
469 
470                     }
471                     break;
472                 case 2 :
473                     // CmisBaseGrammar.g:75:7: qualifier DOT STAR
474                     {
475                     root_0 = (Object)adaptor.nil();
476 
477                     pushFollow(FOLLOW_qualifier_in_select_sublist167);
478                     qualifier8=qualifier();
479 
480                     state._fsp--;
481 
482                     adaptor.addChild(root_0, qualifier8.getTree());
483                     DOT9=(Token)match(input,DOT,FOLLOW_DOT_in_select_sublist169); 
484                     DOT9_tree = (Object)adaptor.create(DOT9);
485                     adaptor.addChild(root_0, DOT9_tree);
486 
487                     STAR10=(Token)match(input,STAR,FOLLOW_STAR_in_select_sublist171); 
488                     STAR10_tree = (Object)adaptor.create(STAR10);
489                     adaptor.addChild(root_0, STAR10_tree);
490 
491 
492                     }
493                     break;
494 
495             }
496             retval.stop = input.LT(-1);
497 
498             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
499             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
500 
501         }
502         catch (RecognitionException re) {
503             reportError(re);
504             recover(input,re);
505     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
506 
507         }
508         finally {
509         }
510         return retval;
511     }
512     // $ANTLR end "select_sublist"
513 
514     public static class column_reference_return extends ParserRuleReturnScope {
515         Object tree;
516         public Object getTree() { return tree; }
517     };
518 
519     // $ANTLR start "column_reference"
520     // CmisBaseGrammar.g:84:1: column_reference : ( qualifier DOT )? column_name -> ^( COL ( qualifier )? column_name ) ;
521     public final CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference() throws RecognitionException {
522         CmisQlExtParser_CmisBaseGrammar.column_reference_return retval = new CmisQlExtParser_CmisBaseGrammar.column_reference_return();
523         retval.start = input.LT(1);
524 
525         Object root_0 = null;
526 
527         Token DOT12=null;
528         CmisQlExtParser_CmisBaseGrammar.qualifier_return qualifier11 = null;
529 
530         CmisQlExtParser_CmisBaseGrammar.column_name_return column_name13 = null;
531 
532 
533         Object DOT12_tree=null;
534         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
535         RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
536         RewriteRuleSubtreeStream stream_column_name=new RewriteRuleSubtreeStream(adaptor,"rule column_name");
537         try {
538             // CmisBaseGrammar.g:84:17: ( ( qualifier DOT )? column_name -> ^( COL ( qualifier )? column_name ) )
539             // CmisBaseGrammar.g:85:5: ( qualifier DOT )? column_name
540             {
541             // CmisBaseGrammar.g:85:5: ( qualifier DOT )?
542             int alt9=2;
543             switch ( input.LA(1) ) {
544                 case ID:
545                     {
546                     switch ( input.LA(2) ) {
547                         case DOT:
548                             {
549                             alt9=1;
550                             }
551                             break;
552                     }
553 
554                     }
555                     break;
556             }
557 
558             switch (alt9) {
559                 case 1 :
560                     // CmisBaseGrammar.g:85:7: qualifier DOT
561                     {
562                     pushFollow(FOLLOW_qualifier_in_column_reference220);
563                     qualifier11=qualifier();
564 
565                     state._fsp--;
566 
567                     stream_qualifier.add(qualifier11.getTree());
568                     DOT12=(Token)match(input,DOT,FOLLOW_DOT_in_column_reference222);  
569                     stream_DOT.add(DOT12);
570 
571 
572                     }
573                     break;
574 
575             }
576 
577             pushFollow(FOLLOW_column_name_in_column_reference227);
578             column_name13=column_name();
579 
580             state._fsp--;
581 
582             stream_column_name.add(column_name13.getTree());
583 
584 
585             // AST REWRITE
586             // elements: column_name, qualifier
587             // token labels: 
588             // rule labels: retval
589             // token list labels: 
590             // rule list labels: 
591             // wildcard labels: 
592             retval.tree = root_0;
593             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
594 
595             root_0 = (Object)adaptor.nil();
596             // 86:7: -> ^( COL ( qualifier )? column_name )
597             {
598                 // CmisBaseGrammar.g:86:10: ^( COL ( qualifier )? column_name )
599                 {
600                 Object root_1 = (Object)adaptor.nil();
601                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COL, "COL"), root_1);
602 
603                 // CmisBaseGrammar.g:86:16: ( qualifier )?
604                 if ( stream_qualifier.hasNext() ) {
605                     adaptor.addChild(root_1, stream_qualifier.nextTree());
606 
607                 }
608                 stream_qualifier.reset();
609                 adaptor.addChild(root_1, stream_column_name.nextTree());
610 
611                 adaptor.addChild(root_0, root_1);
612                 }
613 
614             }
615 
616             retval.tree = root_0;
617             }
618 
619             retval.stop = input.LT(-1);
620 
621             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
622             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
623 
624         }
625         catch (RecognitionException re) {
626             reportError(re);
627             recover(input,re);
628     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
629 
630         }
631         finally {
632         }
633         return retval;
634     }
635     // $ANTLR end "column_reference"
636 
637     public static class multi_valued_column_reference_return extends ParserRuleReturnScope {
638         Object tree;
639         public Object getTree() { return tree; }
640     };
641 
642     // $ANTLR start "multi_valued_column_reference"
643     // CmisBaseGrammar.g:89:1: multi_valued_column_reference : ( qualifier DOT )? multi_valued_column_name -> ^( COL ( qualifier )? multi_valued_column_name ) ;
644     public final CmisQlExtParser_CmisBaseGrammar.multi_valued_column_reference_return multi_valued_column_reference() throws RecognitionException {
645         CmisQlExtParser_CmisBaseGrammar.multi_valued_column_reference_return retval = new CmisQlExtParser_CmisBaseGrammar.multi_valued_column_reference_return();
646         retval.start = input.LT(1);
647 
648         Object root_0 = null;
649 
650         Token DOT15=null;
651         CmisQlExtParser_CmisBaseGrammar.qualifier_return qualifier14 = null;
652 
653         CmisQlExtParser_CmisBaseGrammar.multi_valued_column_name_return multi_valued_column_name16 = null;
654 
655 
656         Object DOT15_tree=null;
657         RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
658         RewriteRuleSubtreeStream stream_multi_valued_column_name=new RewriteRuleSubtreeStream(adaptor,"rule multi_valued_column_name");
659         RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
660         try {
661             // CmisBaseGrammar.g:89:30: ( ( qualifier DOT )? multi_valued_column_name -> ^( COL ( qualifier )? multi_valued_column_name ) )
662             // CmisBaseGrammar.g:90:5: ( qualifier DOT )? multi_valued_column_name
663             {
664             // CmisBaseGrammar.g:90:5: ( qualifier DOT )?
665             int alt10=2;
666             switch ( input.LA(1) ) {
667                 case ID:
668                     {
669                     switch ( input.LA(2) ) {
670                         case DOT:
671                             {
672                             alt10=1;
673                             }
674                             break;
675                     }
676 
677                     }
678                     break;
679             }
680 
681             switch (alt10) {
682                 case 1 :
683                     // CmisBaseGrammar.g:90:7: qualifier DOT
684                     {
685                     pushFollow(FOLLOW_qualifier_in_multi_valued_column_reference262);
686                     qualifier14=qualifier();
687 
688                     state._fsp--;
689 
690                     stream_qualifier.add(qualifier14.getTree());
691                     DOT15=(Token)match(input,DOT,FOLLOW_DOT_in_multi_valued_column_reference264);  
692                     stream_DOT.add(DOT15);
693 
694 
695                     }
696                     break;
697 
698             }
699 
700             pushFollow(FOLLOW_multi_valued_column_name_in_multi_valued_column_reference269);
701             multi_valued_column_name16=multi_valued_column_name();
702 
703             state._fsp--;
704 
705             stream_multi_valued_column_name.add(multi_valued_column_name16.getTree());
706 
707 
708             // AST REWRITE
709             // elements: multi_valued_column_name, qualifier
710             // token labels: 
711             // rule labels: retval
712             // token list labels: 
713             // rule list labels: 
714             // wildcard labels: 
715             retval.tree = root_0;
716             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
717 
718             root_0 = (Object)adaptor.nil();
719             // 91:7: -> ^( COL ( qualifier )? multi_valued_column_name )
720             {
721                 // CmisBaseGrammar.g:91:10: ^( COL ( qualifier )? multi_valued_column_name )
722                 {
723                 Object root_1 = (Object)adaptor.nil();
724                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COL, "COL"), root_1);
725 
726                 // CmisBaseGrammar.g:91:16: ( qualifier )?
727                 if ( stream_qualifier.hasNext() ) {
728                     adaptor.addChild(root_1, stream_qualifier.nextTree());
729 
730                 }
731                 stream_qualifier.reset();
732                 adaptor.addChild(root_1, stream_multi_valued_column_name.nextTree());
733 
734                 adaptor.addChild(root_0, root_1);
735                 }
736 
737             }
738 
739             retval.tree = root_0;
740             }
741 
742             retval.stop = input.LT(-1);
743 
744             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
745             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
746 
747         }
748         catch (RecognitionException re) {
749             reportError(re);
750             recover(input,re);
751     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
752 
753         }
754         finally {
755         }
756         return retval;
757     }
758     // $ANTLR end "multi_valued_column_reference"
759 
760     public static class numeric_value_function_return extends ParserRuleReturnScope {
761         Object tree;
762         public Object getTree() { return tree; }
763     };
764 
765     // $ANTLR start "numeric_value_function"
766     // CmisBaseGrammar.g:94:1: numeric_value_function : SCORE LPAR RPAR -> ^( SCORE ) ;
767     public final CmisQlExtParser_CmisBaseGrammar.numeric_value_function_return numeric_value_function() throws RecognitionException {
768         CmisQlExtParser_CmisBaseGrammar.numeric_value_function_return retval = new CmisQlExtParser_CmisBaseGrammar.numeric_value_function_return();
769         retval.start = input.LT(1);
770 
771         Object root_0 = null;
772 
773         Token SCORE17=null;
774         Token LPAR18=null;
775         Token RPAR19=null;
776 
777         Object SCORE17_tree=null;
778         Object LPAR18_tree=null;
779         Object RPAR19_tree=null;
780         RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
781         RewriteRuleTokenStream stream_SCORE=new RewriteRuleTokenStream(adaptor,"token SCORE");
782         RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
783 
784         try {
785             // CmisBaseGrammar.g:94:23: ( SCORE LPAR RPAR -> ^( SCORE ) )
786             // CmisBaseGrammar.g:95:5: SCORE LPAR RPAR
787             {
788             SCORE17=(Token)match(input,SCORE,FOLLOW_SCORE_in_numeric_value_function302);  
789             stream_SCORE.add(SCORE17);
790 
791             LPAR18=(Token)match(input,LPAR,FOLLOW_LPAR_in_numeric_value_function304);  
792             stream_LPAR.add(LPAR18);
793 
794             RPAR19=(Token)match(input,RPAR,FOLLOW_RPAR_in_numeric_value_function306);  
795             stream_RPAR.add(RPAR19);
796 
797 
798 
799             // AST REWRITE
800             // elements: SCORE
801             // token labels: 
802             // rule labels: retval
803             // token list labels: 
804             // rule list labels: 
805             // wildcard labels: 
806             retval.tree = root_0;
807             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
808 
809             root_0 = (Object)adaptor.nil();
810             // 95:21: -> ^( SCORE )
811             {
812                 // CmisBaseGrammar.g:95:24: ^( SCORE )
813                 {
814                 Object root_1 = (Object)adaptor.nil();
815                 root_1 = (Object)adaptor.becomeRoot(stream_SCORE.nextNode(), root_1);
816 
817                 adaptor.addChild(root_0, root_1);
818                 }
819 
820             }
821 
822             retval.tree = root_0;
823             }
824 
825             retval.stop = input.LT(-1);
826 
827             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
828             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
829 
830         }
831         catch (RecognitionException re) {
832             reportError(re);
833             recover(input,re);
834     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
835 
836         }
837         finally {
838         }
839         return retval;
840     }
841     // $ANTLR end "numeric_value_function"
842 
843     public static class qualifier_return extends ParserRuleReturnScope {
844         Object tree;
845         public Object getTree() { return tree; }
846     };
847 
848     // $ANTLR start "qualifier"
849     // CmisBaseGrammar.g:97:1: qualifier : table_name ;
850     public final CmisQlExtParser_CmisBaseGrammar.qualifier_return qualifier() throws RecognitionException {
851         CmisQlExtParser_CmisBaseGrammar.qualifier_return retval = new CmisQlExtParser_CmisBaseGrammar.qualifier_return();
852         retval.start = input.LT(1);
853 
854         Object root_0 = null;
855 
856         CmisQlExtParser_CmisBaseGrammar.table_name_return table_name20 = null;
857 
858 
859 
860         try {
861             // CmisBaseGrammar.g:97:10: ( table_name )
862             // CmisBaseGrammar.g:98:7: table_name
863             {
864             root_0 = (Object)adaptor.nil();
865 
866             pushFollow(FOLLOW_table_name_in_qualifier325);
867             table_name20=table_name();
868 
869             state._fsp--;
870 
871             adaptor.addChild(root_0, table_name20.getTree());
872 
873             }
874 
875             retval.stop = input.LT(-1);
876 
877             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
878             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
879 
880         }
881         catch (RecognitionException re) {
882             reportError(re);
883             recover(input,re);
884     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
885 
886         }
887         finally {
888         }
889         return retval;
890     }
891     // $ANTLR end "qualifier"
892 
893     public static class from_clause_return extends ParserRuleReturnScope {
894         Object tree;
895         public Object getTree() { return tree; }
896     };
897 
898     // $ANTLR start "from_clause"
899     // CmisBaseGrammar.g:102:1: from_clause : FROM table_reference ;
900     public final CmisQlExtParser_CmisBaseGrammar.from_clause_return from_clause() throws RecognitionException {
901         CmisQlExtParser_CmisBaseGrammar.from_clause_return retval = new CmisQlExtParser_CmisBaseGrammar.from_clause_return();
902         retval.start = input.LT(1);
903 
904         Object root_0 = null;
905 
906         Token FROM21=null;
907         CmisQlExtParser_CmisBaseGrammar.table_reference_return table_reference22 = null;
908 
909 
910         Object FROM21_tree=null;
911 
912         try {
913             // CmisBaseGrammar.g:102:12: ( FROM table_reference )
914             // CmisBaseGrammar.g:102:14: FROM table_reference
915             {
916             root_0 = (Object)adaptor.nil();
917 
918             FROM21=(Token)match(input,FROM,FOLLOW_FROM_in_from_clause342); 
919             FROM21_tree = (Object)adaptor.create(FROM21);
920             root_0 = (Object)adaptor.becomeRoot(FROM21_tree, root_0);
921 
922             pushFollow(FOLLOW_table_reference_in_from_clause345);
923             table_reference22=table_reference();
924 
925             state._fsp--;
926 
927             adaptor.addChild(root_0, table_reference22.getTree());
928 
929             }
930 
931             retval.stop = input.LT(-1);
932 
933             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
934             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
935 
936         }
937         catch (RecognitionException re) {
938             reportError(re);
939             recover(input,re);
940     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
941 
942         }
943         finally {
944         }
945         return retval;
946     }
947     // $ANTLR end "from_clause"
948 
949     public static class table_reference_return extends ParserRuleReturnScope {
950         Object tree;
951         public Object getTree() { return tree; }
952     };
953 
954     // $ANTLR start "table_reference"
955     // CmisBaseGrammar.g:104:1: table_reference : one_table ( table_join )* ;
956     public final CmisQlExtParser_CmisBaseGrammar.table_reference_return table_reference() throws RecognitionException {
957         CmisQlExtParser_CmisBaseGrammar.table_reference_return retval = new CmisQlExtParser_CmisBaseGrammar.table_reference_return();
958         retval.start = input.LT(1);
959 
960         Object root_0 = null;
961 
962         CmisQlExtParser_CmisBaseGrammar.one_table_return one_table23 = null;
963 
964         CmisQlExtParser_CmisBaseGrammar.table_join_return table_join24 = null;
965 
966 
967 
968         try {
969             // CmisBaseGrammar.g:104:16: ( one_table ( table_join )* )
970             // CmisBaseGrammar.g:105:5: one_table ( table_join )*
971             {
972             root_0 = (Object)adaptor.nil();
973 
974             pushFollow(FOLLOW_one_table_in_table_reference356);
975             one_table23=one_table();
976 
977             state._fsp--;
978 
979             adaptor.addChild(root_0, one_table23.getTree());
980             // CmisBaseGrammar.g:105:15: ( table_join )*
981             loop11:
982             do {
983                 int alt11=2;
984                 switch ( input.LA(1) ) {
985                 case JOIN:
986                 case INNER:
987                 case LEFT:
988                 case RIGHT:
989                     {
990                     alt11=1;
991                     }
992                     break;
993 
994                 }
995 
996                 switch (alt11) {
997             	case 1 :
998             	    // CmisBaseGrammar.g:105:15: table_join
999             	    {
1000             	    pushFollow(FOLLOW_table_join_in_table_reference358);
1001             	    table_join24=table_join();
1002 
1003             	    state._fsp--;
1004 
1005             	    adaptor.addChild(root_0, table_join24.getTree());
1006 
1007             	    }
1008             	    break;
1009 
1010             	default :
1011             	    break loop11;
1012                 }
1013             } while (true);
1014 
1015 
1016             }
1017 
1018             retval.stop = input.LT(-1);
1019 
1020             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1021             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1022 
1023         }
1024         catch (RecognitionException re) {
1025             reportError(re);
1026             recover(input,re);
1027     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1028 
1029         }
1030         finally {
1031         }
1032         return retval;
1033     }
1034     // $ANTLR end "table_reference"
1035 
1036     public static class table_join_return extends ParserRuleReturnScope {
1037         Object tree;
1038         public Object getTree() { return tree; }
1039     };
1040 
1041     // $ANTLR start "table_join"
1042     // CmisBaseGrammar.g:108:1: table_join : join_kind one_table ( join_specification )? -> ^( JOIN join_kind one_table ( join_specification )? ) ;
1043     public final CmisQlExtParser_CmisBaseGrammar.table_join_return table_join() throws RecognitionException {
1044         CmisQlExtParser_CmisBaseGrammar.table_join_return retval = new CmisQlExtParser_CmisBaseGrammar.table_join_return();
1045         retval.start = input.LT(1);
1046 
1047         Object root_0 = null;
1048 
1049         CmisQlExtParser_CmisBaseGrammar.join_kind_return join_kind25 = null;
1050 
1051         CmisQlExtParser_CmisBaseGrammar.one_table_return one_table26 = null;
1052 
1053         CmisQlExtParser_CmisBaseGrammar.join_specification_return join_specification27 = null;
1054 
1055 
1056         RewriteRuleSubtreeStream stream_join_kind=new RewriteRuleSubtreeStream(adaptor,"rule join_kind");
1057         RewriteRuleSubtreeStream stream_join_specification=new RewriteRuleSubtreeStream(adaptor,"rule join_specification");
1058         RewriteRuleSubtreeStream stream_one_table=new RewriteRuleSubtreeStream(adaptor,"rule one_table");
1059         try {
1060             // CmisBaseGrammar.g:108:11: ( join_kind one_table ( join_specification )? -> ^( JOIN join_kind one_table ( join_specification )? ) )
1061             // CmisBaseGrammar.g:109:5: join_kind one_table ( join_specification )?
1062             {
1063             pushFollow(FOLLOW_join_kind_in_table_join375);
1064             join_kind25=join_kind();
1065 
1066             state._fsp--;
1067 
1068             stream_join_kind.add(join_kind25.getTree());
1069             pushFollow(FOLLOW_one_table_in_table_join377);
1070             one_table26=one_table();
1071 
1072             state._fsp--;
1073 
1074             stream_one_table.add(one_table26.getTree());
1075             // CmisBaseGrammar.g:109:25: ( join_specification )?
1076             int alt12=2;
1077             switch ( input.LA(1) ) {
1078                 case ON:
1079                     {
1080                     alt12=1;
1081                     }
1082                     break;
1083             }
1084 
1085             switch (alt12) {
1086                 case 1 :
1087                     // CmisBaseGrammar.g:109:25: join_specification
1088                     {
1089                     pushFollow(FOLLOW_join_specification_in_table_join379);
1090                     join_specification27=join_specification();
1091 
1092                     state._fsp--;
1093 
1094                     stream_join_specification.add(join_specification27.getTree());
1095 
1096                     }
1097                     break;
1098 
1099             }
1100 
1101 
1102 
1103             // AST REWRITE
1104             // elements: join_specification, join_kind, one_table
1105             // token labels: 
1106             // rule labels: retval
1107             // token list labels: 
1108             // rule list labels: 
1109             // wildcard labels: 
1110             retval.tree = root_0;
1111             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1112 
1113             root_0 = (Object)adaptor.nil();
1114             // 110:5: -> ^( JOIN join_kind one_table ( join_specification )? )
1115             {
1116                 // CmisBaseGrammar.g:110:8: ^( JOIN join_kind one_table ( join_specification )? )
1117                 {
1118                 Object root_1 = (Object)adaptor.nil();
1119                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(JOIN, "JOIN"), root_1);
1120 
1121                 adaptor.addChild(root_1, stream_join_kind.nextTree());
1122                 adaptor.addChild(root_1, stream_one_table.nextTree());
1123                 // CmisBaseGrammar.g:110:35: ( join_specification )?
1124                 if ( stream_join_specification.hasNext() ) {
1125                     adaptor.addChild(root_1, stream_join_specification.nextTree());
1126 
1127                 }
1128                 stream_join_specification.reset();
1129 
1130                 adaptor.addChild(root_0, root_1);
1131                 }
1132 
1133             }
1134 
1135             retval.tree = root_0;
1136             }
1137 
1138             retval.stop = input.LT(-1);
1139 
1140             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1141             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1142 
1143         }
1144         catch (RecognitionException re) {
1145             reportError(re);
1146             recover(input,re);
1147     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1148 
1149         }
1150         finally {
1151         }
1152         return retval;
1153     }
1154     // $ANTLR end "table_join"
1155 
1156     public static class one_table_return extends ParserRuleReturnScope {
1157         Object tree;
1158         public Object getTree() { return tree; }
1159     };
1160 
1161     // $ANTLR start "one_table"
1162     // CmisBaseGrammar.g:113:1: one_table : ( LPAR table_reference RPAR | table_name -> ^( TABLE table_name ) | table_name ( AS )? correlation_name -> ^( TABLE table_name correlation_name ) );
1163     public final CmisQlExtParser_CmisBaseGrammar.one_table_return one_table() throws RecognitionException {
1164         CmisQlExtParser_CmisBaseGrammar.one_table_return retval = new CmisQlExtParser_CmisBaseGrammar.one_table_return();
1165         retval.start = input.LT(1);
1166 
1167         Object root_0 = null;
1168 
1169         Token LPAR28=null;
1170         Token RPAR30=null;
1171         Token AS33=null;
1172         CmisQlExtParser_CmisBaseGrammar.table_reference_return table_reference29 = null;
1173 
1174         CmisQlExtParser_CmisBaseGrammar.table_name_return table_name31 = null;
1175 
1176         CmisQlExtParser_CmisBaseGrammar.table_name_return table_name32 = null;
1177 
1178         CmisQlExtParser_CmisBaseGrammar.correlation_name_return correlation_name34 = null;
1179 
1180 
1181         Object LPAR28_tree=null;
1182         Object RPAR30_tree=null;
1183         Object AS33_tree=null;
1184         RewriteRuleTokenStream stream_AS=new RewriteRuleTokenStream(adaptor,"token AS");
1185         RewriteRuleSubtreeStream stream_table_name=new RewriteRuleSubtreeStream(adaptor,"rule table_name");
1186         RewriteRuleSubtreeStream stream_correlation_name=new RewriteRuleSubtreeStream(adaptor,"rule correlation_name");
1187         try {
1188             // CmisBaseGrammar.g:113:10: ( LPAR table_reference RPAR | table_name -> ^( TABLE table_name ) | table_name ( AS )? correlation_name -> ^( TABLE table_name correlation_name ) )
1189             int alt14=3;
1190             switch ( input.LA(1) ) {
1191             case LPAR:
1192                 {
1193                 alt14=1;
1194                 }
1195                 break;
1196             case ID:
1197                 {
1198                 switch ( input.LA(2) ) {
1199                 case EOF:
1200                 case JOIN:
1201                 case INNER:
1202                 case LEFT:
1203                 case RIGHT:
1204                 case ON:
1205                 case WHERE:
1206                 case ORDER:
1207                 case RPAR:
1208                     {
1209                     alt14=2;
1210                     }
1211                     break;
1212                 case AS:
1213                 case ID:
1214                     {
1215                     alt14=3;
1216                     }
1217                     break;
1218                 default:
1219                     NoViableAltException nvae =
1220                         new NoViableAltException("", 14, 2, input);
1221 
1222                     throw nvae;
1223                 }
1224 
1225                 }
1226                 break;
1227             default:
1228                 NoViableAltException nvae =
1229                     new NoViableAltException("", 14, 0, input);
1230 
1231                 throw nvae;
1232             }
1233 
1234             switch (alt14) {
1235                 case 1 :
1236                     // CmisBaseGrammar.g:114:7: LPAR table_reference RPAR
1237                     {
1238                     root_0 = (Object)adaptor.nil();
1239 
1240                     LPAR28=(Token)match(input,LPAR,FOLLOW_LPAR_in_one_table415); 
1241                     pushFollow(FOLLOW_table_reference_in_one_table418);
1242                     table_reference29=table_reference();
1243 
1244                     state._fsp--;
1245 
1246                     adaptor.addChild(root_0, table_reference29.getTree());
1247                     RPAR30=(Token)match(input,RPAR,FOLLOW_RPAR_in_one_table420); 
1248 
1249                     }
1250                     break;
1251                 case 2 :
1252                     // CmisBaseGrammar.g:115:7: table_name
1253                     {
1254                     pushFollow(FOLLOW_table_name_in_one_table429);
1255                     table_name31=table_name();
1256 
1257                     state._fsp--;
1258 
1259                     stream_table_name.add(table_name31.getTree());
1260 
1261 
1262                     // AST REWRITE
1263                     // elements: table_name
1264                     // token labels: 
1265                     // rule labels: retval
1266                     // token list labels: 
1267                     // rule list labels: 
1268                     // wildcard labels: 
1269                     retval.tree = root_0;
1270                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1271 
1272                     root_0 = (Object)adaptor.nil();
1273                     // 116:9: -> ^( TABLE table_name )
1274                     {
1275                         // CmisBaseGrammar.g:116:12: ^( TABLE table_name )
1276                         {
1277                         Object root_1 = (Object)adaptor.nil();
1278                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TABLE, "TABLE"), root_1);
1279 
1280                         adaptor.addChild(root_1, stream_table_name.nextTree());
1281 
1282                         adaptor.addChild(root_0, root_1);
1283                         }
1284 
1285                     }
1286 
1287                     retval.tree = root_0;
1288                     }
1289                     break;
1290                 case 3 :
1291                     // CmisBaseGrammar.g:117:7: table_name ( AS )? correlation_name
1292                     {
1293                     pushFollow(FOLLOW_table_name_in_one_table453);
1294                     table_name32=table_name();
1295 
1296                     state._fsp--;
1297 
1298                     stream_table_name.add(table_name32.getTree());
1299                     // CmisBaseGrammar.g:117:18: ( AS )?
1300                     int alt13=2;
1301                     switch ( input.LA(1) ) {
1302                         case AS:
1303                             {
1304                             alt13=1;
1305                             }
1306                             break;
1307                     }
1308 
1309                     switch (alt13) {
1310                         case 1 :
1311                             // CmisBaseGrammar.g:117:18: AS
1312                             {
1313                             AS33=(Token)match(input,AS,FOLLOW_AS_in_one_table455);  
1314                             stream_AS.add(AS33);
1315 
1316 
1317                             }
1318                             break;
1319 
1320                     }
1321 
1322                     pushFollow(FOLLOW_correlation_name_in_one_table458);
1323                     correlation_name34=correlation_name();
1324 
1325                     state._fsp--;
1326 
1327                     stream_correlation_name.add(correlation_name34.getTree());
1328 
1329 
1330                     // AST REWRITE
1331                     // elements: table_name, correlation_name
1332                     // token labels: 
1333                     // rule labels: retval
1334                     // token list labels: 
1335                     // rule list labels: 
1336                     // wildcard labels: 
1337                     retval.tree = root_0;
1338                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1339 
1340                     root_0 = (Object)adaptor.nil();
1341                     // 118:9: -> ^( TABLE table_name correlation_name )
1342                     {
1343                         // CmisBaseGrammar.g:118:12: ^( TABLE table_name correlation_name )
1344                         {
1345                         Object root_1 = (Object)adaptor.nil();
1346                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TABLE, "TABLE"), root_1);
1347 
1348                         adaptor.addChild(root_1, stream_table_name.nextTree());
1349                         adaptor.addChild(root_1, stream_correlation_name.nextTree());
1350 
1351                         adaptor.addChild(root_0, root_1);
1352                         }
1353 
1354                     }
1355 
1356                     retval.tree = root_0;
1357                     }
1358                     break;
1359 
1360             }
1361             retval.stop = input.LT(-1);
1362 
1363             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1364             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1365 
1366         }
1367         catch (RecognitionException re) {
1368             reportError(re);
1369             recover(input,re);
1370     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1371 
1372         }
1373         finally {
1374         }
1375         return retval;
1376     }
1377     // $ANTLR end "one_table"
1378 
1379     public static class join_kind_return extends ParserRuleReturnScope {
1380         Object tree;
1381         public Object getTree() { return tree; }
1382     };
1383 
1384     // $ANTLR start "join_kind"
1385     // CmisBaseGrammar.g:121:1: join_kind : ( JOIN -> INNER | INNER JOIN -> INNER | LEFT ( OUTER )? JOIN -> LEFT | RIGHT ( OUTER )? JOIN -> RIGHT );
1386     public final CmisQlExtParser_CmisBaseGrammar.join_kind_return join_kind() throws RecognitionException {
1387         CmisQlExtParser_CmisBaseGrammar.join_kind_return retval = new CmisQlExtParser_CmisBaseGrammar.join_kind_return();
1388         retval.start = input.LT(1);
1389 
1390         Object root_0 = null;
1391 
1392         Token JOIN35=null;
1393         Token INNER36=null;
1394         Token JOIN37=null;
1395         Token LEFT38=null;
1396         Token OUTER39=null;
1397         Token JOIN40=null;
1398         Token RIGHT41=null;
1399         Token OUTER42=null;
1400         Token JOIN43=null;
1401 
1402         Object JOIN35_tree=null;
1403         Object INNER36_tree=null;
1404         Object JOIN37_tree=null;
1405         Object LEFT38_tree=null;
1406         Object OUTER39_tree=null;
1407         Object JOIN40_tree=null;
1408         Object RIGHT41_tree=null;
1409         Object OUTER42_tree=null;
1410         Object JOIN43_tree=null;
1411         RewriteRuleTokenStream stream_OUTER=new RewriteRuleTokenStream(adaptor,"token OUTER");
1412         RewriteRuleTokenStream stream_RIGHT=new RewriteRuleTokenStream(adaptor,"token RIGHT");
1413         RewriteRuleTokenStream stream_INNER=new RewriteRuleTokenStream(adaptor,"token INNER");
1414         RewriteRuleTokenStream stream_LEFT=new RewriteRuleTokenStream(adaptor,"token LEFT");
1415         RewriteRuleTokenStream stream_JOIN=new RewriteRuleTokenStream(adaptor,"token JOIN");
1416 
1417         try {
1418             // CmisBaseGrammar.g:121:10: ( JOIN -> INNER | INNER JOIN -> INNER | LEFT ( OUTER )? JOIN -> LEFT | RIGHT ( OUTER )? JOIN -> RIGHT )
1419             int alt17=4;
1420             switch ( input.LA(1) ) {
1421             case JOIN:
1422                 {
1423                 alt17=1;
1424                 }
1425                 break;
1426             case INNER:
1427                 {
1428                 alt17=2;
1429                 }
1430                 break;
1431             case LEFT:
1432                 {
1433                 alt17=3;
1434                 }
1435                 break;
1436             case RIGHT:
1437                 {
1438                 alt17=4;
1439                 }
1440                 break;
1441             default:
1442                 NoViableAltException nvae =
1443                     new NoViableAltException("", 17, 0, input);
1444 
1445                 throw nvae;
1446             }
1447 
1448             switch (alt17) {
1449                 case 1 :
1450                     // CmisBaseGrammar.g:122:7: JOIN
1451                     {
1452                     JOIN35=(Token)match(input,JOIN,FOLLOW_JOIN_in_join_kind494);  
1453                     stream_JOIN.add(JOIN35);
1454 
1455 
1456 
1457                     // AST REWRITE
1458                     // elements: 
1459                     // token labels: 
1460                     // rule labels: retval
1461                     // token list labels: 
1462                     // rule list labels: 
1463                     // wildcard labels: 
1464                     retval.tree = root_0;
1465                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1466 
1467                     root_0 = (Object)adaptor.nil();
1468                     // 123:9: -> INNER
1469                     {
1470                         adaptor.addChild(root_0, (Object)adaptor.create(INNER, "INNER"));
1471 
1472                     }
1473 
1474                     retval.tree = root_0;
1475                     }
1476                     break;
1477                 case 2 :
1478                     // CmisBaseGrammar.g:124:7: INNER JOIN
1479                     {
1480                     INNER36=(Token)match(input,INNER,FOLLOW_INNER_in_join_kind514);  
1481                     stream_INNER.add(INNER36);
1482 
1483                     JOIN37=(Token)match(input,JOIN,FOLLOW_JOIN_in_join_kind516);  
1484                     stream_JOIN.add(JOIN37);
1485 
1486 
1487 
1488                     // AST REWRITE
1489                     // elements: INNER
1490                     // token labels: 
1491                     // rule labels: retval
1492                     // token list labels: 
1493                     // rule list labels: 
1494                     // wildcard labels: 
1495                     retval.tree = root_0;
1496                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1497 
1498                     root_0 = (Object)adaptor.nil();
1499                     // 125:9: -> INNER
1500                     {
1501                         adaptor.addChild(root_0, stream_INNER.nextNode());
1502 
1503                     }
1504 
1505                     retval.tree = root_0;
1506                     }
1507                     break;
1508                 case 3 :
1509                     // CmisBaseGrammar.g:126:7: LEFT ( OUTER )? JOIN
1510                     {
1511                     LEFT38=(Token)match(input,LEFT,FOLLOW_LEFT_in_join_kind536);  
1512                     stream_LEFT.add(LEFT38);
1513 
1514                     // CmisBaseGrammar.g:126:12: ( OUTER )?
1515                     int alt15=2;
1516                     switch ( input.LA(1) ) {
1517                         case OUTER:
1518                             {
1519                             alt15=1;
1520                             }
1521                             break;
1522                     }
1523 
1524                     switch (alt15) {
1525                         case 1 :
1526                             // CmisBaseGrammar.g:126:12: OUTER
1527                             {
1528                             OUTER39=(Token)match(input,OUTER,FOLLOW_OUTER_in_join_kind538);  
1529                             stream_OUTER.add(OUTER39);
1530 
1531 
1532                             }
1533                             break;
1534 
1535                     }
1536 
1537                     JOIN40=(Token)match(input,JOIN,FOLLOW_JOIN_in_join_kind541);  
1538                     stream_JOIN.add(JOIN40);
1539 
1540 
1541 
1542                     // AST REWRITE
1543                     // elements: LEFT
1544                     // token labels: 
1545                     // rule labels: retval
1546                     // token list labels: 
1547                     // rule list labels: 
1548                     // wildcard labels: 
1549                     retval.tree = root_0;
1550                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1551 
1552                     root_0 = (Object)adaptor.nil();
1553                     // 127:9: -> LEFT
1554                     {
1555                         adaptor.addChild(root_0, stream_LEFT.nextNode());
1556 
1557                     }
1558 
1559                     retval.tree = root_0;
1560                     }
1561                     break;
1562                 case 4 :
1563                     // CmisBaseGrammar.g:128:7: RIGHT ( OUTER )? JOIN
1564                     {
1565                     RIGHT41=(Token)match(input,RIGHT,FOLLOW_RIGHT_in_join_kind561);  
1566                     stream_RIGHT.add(RIGHT41);
1567 
1568                     // CmisBaseGrammar.g:128:13: ( OUTER )?
1569                     int alt16=2;
1570                     switch ( input.LA(1) ) {
1571                         case OUTER:
1572                             {
1573                             alt16=1;
1574                             }
1575                             break;
1576                     }
1577 
1578                     switch (alt16) {
1579                         case 1 :
1580                             // CmisBaseGrammar.g:128:13: OUTER
1581                             {
1582                             OUTER42=(Token)match(input,OUTER,FOLLOW_OUTER_in_join_kind563);  
1583                             stream_OUTER.add(OUTER42);
1584 
1585 
1586                             }
1587                             break;
1588 
1589                     }
1590 
1591                     JOIN43=(Token)match(input,JOIN,FOLLOW_JOIN_in_join_kind566);  
1592                     stream_JOIN.add(JOIN43);
1593 
1594 
1595 
1596                     // AST REWRITE
1597                     // elements: RIGHT
1598                     // token labels: 
1599                     // rule labels: retval
1600                     // token list labels: 
1601                     // rule list labels: 
1602                     // wildcard labels: 
1603                     retval.tree = root_0;
1604                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
1605 
1606                     root_0 = (Object)adaptor.nil();
1607                     // 129:9: -> RIGHT
1608                     {
1609                         adaptor.addChild(root_0, stream_RIGHT.nextNode());
1610 
1611                     }
1612 
1613                     retval.tree = root_0;
1614                     }
1615                     break;
1616 
1617             }
1618             retval.stop = input.LT(-1);
1619 
1620             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1621             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1622 
1623         }
1624         catch (RecognitionException re) {
1625             reportError(re);
1626             recover(input,re);
1627     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1628 
1629         }
1630         finally {
1631         }
1632         return retval;
1633     }
1634     // $ANTLR end "join_kind"
1635 
1636     public static class join_specification_return extends ParserRuleReturnScope {
1637         Object tree;
1638         public Object getTree() { return tree; }
1639     };
1640 
1641     // $ANTLR start "join_specification"
1642     // CmisBaseGrammar.g:132:1: join_specification : ON column_reference EQ column_reference ;
1643     public final CmisQlExtParser_CmisBaseGrammar.join_specification_return join_specification() throws RecognitionException {
1644         CmisQlExtParser_CmisBaseGrammar.join_specification_return retval = new CmisQlExtParser_CmisBaseGrammar.join_specification_return();
1645         retval.start = input.LT(1);
1646 
1647         Object root_0 = null;
1648 
1649         Token ON44=null;
1650         Token EQ46=null;
1651         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference45 = null;
1652 
1653         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference47 = null;
1654 
1655 
1656         Object ON44_tree=null;
1657         Object EQ46_tree=null;
1658 
1659         try {
1660             // CmisBaseGrammar.g:132:19: ( ON column_reference EQ column_reference )
1661             // CmisBaseGrammar.g:133:5: ON column_reference EQ column_reference
1662             {
1663             root_0 = (Object)adaptor.nil();
1664 
1665             ON44=(Token)match(input,ON,FOLLOW_ON_in_join_specification594); 
1666             ON44_tree = (Object)adaptor.create(ON44);
1667             root_0 = (Object)adaptor.becomeRoot(ON44_tree, root_0);
1668 
1669             pushFollow(FOLLOW_column_reference_in_join_specification597);
1670             column_reference45=column_reference();
1671 
1672             state._fsp--;
1673 
1674             adaptor.addChild(root_0, column_reference45.getTree());
1675             EQ46=(Token)match(input,EQ,FOLLOW_EQ_in_join_specification599); 
1676             EQ46_tree = (Object)adaptor.create(EQ46);
1677             adaptor.addChild(root_0, EQ46_tree);
1678 
1679             pushFollow(FOLLOW_column_reference_in_join_specification601);
1680             column_reference47=column_reference();
1681 
1682             state._fsp--;
1683 
1684             adaptor.addChild(root_0, column_reference47.getTree());
1685 
1686             }
1687 
1688             retval.stop = input.LT(-1);
1689 
1690             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1691             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1692 
1693         }
1694         catch (RecognitionException re) {
1695             reportError(re);
1696             recover(input,re);
1697     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1698 
1699         }
1700         finally {
1701         }
1702         return retval;
1703     }
1704     // $ANTLR end "join_specification"
1705 
1706     public static class where_clause_return extends ParserRuleReturnScope {
1707         Object tree;
1708         public Object getTree() { return tree; }
1709     };
1710 
1711     // $ANTLR start "where_clause"
1712     // CmisBaseGrammar.g:139:1: where_clause : WHERE search_condition ;
1713     public final CmisQlExtParser_CmisBaseGrammar.where_clause_return where_clause() throws RecognitionException {
1714         CmisQlExtParser_CmisBaseGrammar.where_clause_return retval = new CmisQlExtParser_CmisBaseGrammar.where_clause_return();
1715         retval.start = input.LT(1);
1716 
1717         Object root_0 = null;
1718 
1719         Token WHERE48=null;
1720         CmisQlExtParser_CmisBaseGrammar.search_condition_return search_condition49 = null;
1721 
1722 
1723         Object WHERE48_tree=null;
1724 
1725         try {
1726             // CmisBaseGrammar.g:139:13: ( WHERE search_condition )
1727             // CmisBaseGrammar.g:139:15: WHERE search_condition
1728             {
1729             root_0 = (Object)adaptor.nil();
1730 
1731             WHERE48=(Token)match(input,WHERE,FOLLOW_WHERE_in_where_clause616); 
1732             WHERE48_tree = (Object)adaptor.create(WHERE48);
1733             root_0 = (Object)adaptor.becomeRoot(WHERE48_tree, root_0);
1734 
1735             pushFollow(FOLLOW_search_condition_in_where_clause619);
1736             search_condition49=search_condition();
1737 
1738             state._fsp--;
1739 
1740             adaptor.addChild(root_0, search_condition49.getTree());
1741 
1742             }
1743 
1744             retval.stop = input.LT(-1);
1745 
1746             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1747             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1748 
1749         }
1750         catch (RecognitionException re) {
1751             reportError(re);
1752             recover(input,re);
1753     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1754 
1755         }
1756         finally {
1757         }
1758         return retval;
1759     }
1760     // $ANTLR end "where_clause"
1761 
1762     public static class search_condition_return extends ParserRuleReturnScope {
1763         Object tree;
1764         public Object getTree() { return tree; }
1765     };
1766 
1767     // $ANTLR start "search_condition"
1768     // CmisBaseGrammar.g:141:1: search_condition : boolean_term ( OR boolean_term )* ;
1769     public final CmisQlExtParser_CmisBaseGrammar.search_condition_return search_condition() throws RecognitionException {
1770         CmisQlExtParser_CmisBaseGrammar.search_condition_return retval = new CmisQlExtParser_CmisBaseGrammar.search_condition_return();
1771         retval.start = input.LT(1);
1772 
1773         Object root_0 = null;
1774 
1775         Token OR51=null;
1776         CmisQlExtParser_CmisBaseGrammar.boolean_term_return boolean_term50 = null;
1777 
1778         CmisQlExtParser_CmisBaseGrammar.boolean_term_return boolean_term52 = null;
1779 
1780 
1781         Object OR51_tree=null;
1782 
1783         try {
1784             // CmisBaseGrammar.g:141:17: ( boolean_term ( OR boolean_term )* )
1785             // CmisBaseGrammar.g:142:5: boolean_term ( OR boolean_term )*
1786             {
1787             root_0 = (Object)adaptor.nil();
1788 
1789             pushFollow(FOLLOW_boolean_term_in_search_condition630);
1790             boolean_term50=boolean_term();
1791 
1792             state._fsp--;
1793 
1794             adaptor.addChild(root_0, boolean_term50.getTree());
1795             // CmisBaseGrammar.g:142:18: ( OR boolean_term )*
1796             loop18:
1797             do {
1798                 int alt18=2;
1799                 switch ( input.LA(1) ) {
1800                 case OR:
1801                     {
1802                     alt18=1;
1803                     }
1804                     break;
1805 
1806                 }
1807 
1808                 switch (alt18) {
1809             	case 1 :
1810             	    // CmisBaseGrammar.g:142:19: OR boolean_term
1811             	    {
1812             	    OR51=(Token)match(input,OR,FOLLOW_OR_in_search_condition633); 
1813             	    OR51_tree = (Object)adaptor.create(OR51);
1814             	    root_0 = (Object)adaptor.becomeRoot(OR51_tree, root_0);
1815 
1816             	    pushFollow(FOLLOW_boolean_term_in_search_condition636);
1817             	    boolean_term52=boolean_term();
1818 
1819             	    state._fsp--;
1820 
1821             	    adaptor.addChild(root_0, boolean_term52.getTree());
1822 
1823             	    }
1824             	    break;
1825 
1826             	default :
1827             	    break loop18;
1828                 }
1829             } while (true);
1830 
1831 
1832             }
1833 
1834             retval.stop = input.LT(-1);
1835 
1836             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1837             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1838 
1839         }
1840         catch (RecognitionException re) {
1841             reportError(re);
1842             recover(input,re);
1843     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1844 
1845         }
1846         finally {
1847         }
1848         return retval;
1849     }
1850     // $ANTLR end "search_condition"
1851 
1852     public static class boolean_term_return extends ParserRuleReturnScope {
1853         Object tree;
1854         public Object getTree() { return tree; }
1855     };
1856 
1857     // $ANTLR start "boolean_term"
1858     // CmisBaseGrammar.g:144:1: boolean_term : boolean_factor ( AND boolean_factor )* ;
1859     public final CmisQlExtParser_CmisBaseGrammar.boolean_term_return boolean_term() throws RecognitionException {
1860         CmisQlExtParser_CmisBaseGrammar.boolean_term_return retval = new CmisQlExtParser_CmisBaseGrammar.boolean_term_return();
1861         retval.start = input.LT(1);
1862 
1863         Object root_0 = null;
1864 
1865         Token AND54=null;
1866         CmisQlExtParser_CmisBaseGrammar.boolean_factor_return boolean_factor53 = null;
1867 
1868         CmisQlExtParser_CmisBaseGrammar.boolean_factor_return boolean_factor55 = null;
1869 
1870 
1871         Object AND54_tree=null;
1872 
1873         try {
1874             // CmisBaseGrammar.g:144:13: ( boolean_factor ( AND boolean_factor )* )
1875             // CmisBaseGrammar.g:145:5: boolean_factor ( AND boolean_factor )*
1876             {
1877             root_0 = (Object)adaptor.nil();
1878 
1879             pushFollow(FOLLOW_boolean_factor_in_boolean_term649);
1880             boolean_factor53=boolean_factor();
1881 
1882             state._fsp--;
1883 
1884             adaptor.addChild(root_0, boolean_factor53.getTree());
1885             // CmisBaseGrammar.g:145:20: ( AND boolean_factor )*
1886             loop19:
1887             do {
1888                 int alt19=2;
1889                 switch ( input.LA(1) ) {
1890                 case AND:
1891                     {
1892                     alt19=1;
1893                     }
1894                     break;
1895 
1896                 }
1897 
1898                 switch (alt19) {
1899             	case 1 :
1900             	    // CmisBaseGrammar.g:145:21: AND boolean_factor
1901             	    {
1902             	    AND54=(Token)match(input,AND,FOLLOW_AND_in_boolean_term652); 
1903             	    AND54_tree = (Object)adaptor.create(AND54);
1904             	    root_0 = (Object)adaptor.becomeRoot(AND54_tree, root_0);
1905 
1906             	    pushFollow(FOLLOW_boolean_factor_in_boolean_term655);
1907             	    boolean_factor55=boolean_factor();
1908 
1909             	    state._fsp--;
1910 
1911             	    adaptor.addChild(root_0, boolean_factor55.getTree());
1912 
1913             	    }
1914             	    break;
1915 
1916             	default :
1917             	    break loop19;
1918                 }
1919             } while (true);
1920 
1921 
1922             }
1923 
1924             retval.stop = input.LT(-1);
1925 
1926             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
1927             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
1928 
1929         }
1930         catch (RecognitionException re) {
1931             reportError(re);
1932             recover(input,re);
1933     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
1934 
1935         }
1936         finally {
1937         }
1938         return retval;
1939     }
1940     // $ANTLR end "boolean_term"
1941 
1942     public static class boolean_factor_return extends ParserRuleReturnScope {
1943         Object tree;
1944         public Object getTree() { return tree; }
1945     };
1946 
1947     // $ANTLR start "boolean_factor"
1948     // CmisBaseGrammar.g:147:1: boolean_factor : ( NOT boolean_test | boolean_test );
1949     public final CmisQlExtParser_CmisBaseGrammar.boolean_factor_return boolean_factor() throws RecognitionException {
1950         CmisQlExtParser_CmisBaseGrammar.boolean_factor_return retval = new CmisQlExtParser_CmisBaseGrammar.boolean_factor_return();
1951         retval.start = input.LT(1);
1952 
1953         Object root_0 = null;
1954 
1955         Token NOT56=null;
1956         CmisQlExtParser_CmisBaseGrammar.boolean_test_return boolean_test57 = null;
1957 
1958         CmisQlExtParser_CmisBaseGrammar.boolean_test_return boolean_test58 = null;
1959 
1960 
1961         Object NOT56_tree=null;
1962 
1963         try {
1964             // CmisBaseGrammar.g:147:15: ( NOT boolean_test | boolean_test )
1965             int alt20=2;
1966             switch ( input.LA(1) ) {
1967             case NOT:
1968                 {
1969                 alt20=1;
1970                 }
1971                 break;
1972             case ANY:
1973             case CONTAINS:
1974             case SCORE:
1975             case IN_FOLDER:
1976             case IN_TREE:
1977             case LPAR:
1978             case BOOL_LIT:
1979             case NUM_LIT:
1980             case STRING_LIT:
1981             case TIME_LIT:
1982             case ID:
1983                 {
1984                 alt20=2;
1985                 }
1986                 break;
1987             default:
1988                 NoViableAltException nvae =
1989                     new NoViableAltException("", 20, 0, input);
1990 
1991                 throw nvae;
1992             }
1993 
1994             switch (alt20) {
1995                 case 1 :
1996                     // CmisBaseGrammar.g:148:5: NOT boolean_test
1997                     {
1998                     root_0 = (Object)adaptor.nil();
1999 
2000                     NOT56=(Token)match(input,NOT,FOLLOW_NOT_in_boolean_factor668); 
2001                     NOT56_tree = (Object)adaptor.create(NOT56);
2002                     root_0 = (Object)adaptor.becomeRoot(NOT56_tree, root_0);
2003 
2004                     pushFollow(FOLLOW_boolean_test_in_boolean_factor671);
2005                     boolean_test57=boolean_test();
2006 
2007                     state._fsp--;
2008 
2009                     adaptor.addChild(root_0, boolean_test57.getTree());
2010 
2011                     }
2012                     break;
2013                 case 2 :
2014                     // CmisBaseGrammar.g:149:7: boolean_test
2015                     {
2016                     root_0 = (Object)adaptor.nil();
2017 
2018                     pushFollow(FOLLOW_boolean_test_in_boolean_factor679);
2019                     boolean_test58=boolean_test();
2020 
2021                     state._fsp--;
2022 
2023                     adaptor.addChild(root_0, boolean_test58.getTree());
2024 
2025                     }
2026                     break;
2027 
2028             }
2029             retval.stop = input.LT(-1);
2030 
2031             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
2032             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
2033 
2034         }
2035         catch (RecognitionException re) {
2036             reportError(re);
2037             recover(input,re);
2038     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
2039 
2040         }
2041         finally {
2042         }
2043         return retval;
2044     }
2045     // $ANTLR end "boolean_factor"
2046 
2047     public static class boolean_test_return extends ParserRuleReturnScope {
2048         Object tree;
2049         public Object getTree() { return tree; }
2050     };
2051 
2052     // $ANTLR start "boolean_test"
2053     // CmisBaseGrammar.g:152:1: boolean_test : ( predicate | LPAR search_condition RPAR -> search_condition );
2054     public final CmisQlExtParser_CmisBaseGrammar.boolean_test_return boolean_test() throws RecognitionException {
2055         CmisQlExtParser_CmisBaseGrammar.boolean_test_return retval = new CmisQlExtParser_CmisBaseGrammar.boolean_test_return();
2056         retval.start = input.LT(1);
2057 
2058         Object root_0 = null;
2059 
2060         Token LPAR60=null;
2061         Token RPAR62=null;
2062         CmisQlExtParser_CmisBaseGrammar.predicate_return predicate59 = null;
2063 
2064         CmisQlExtParser_CmisBaseGrammar.search_condition_return search_condition61 = null;
2065 
2066 
2067         Object LPAR60_tree=null;
2068         Object RPAR62_tree=null;
2069         RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
2070         RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
2071         RewriteRuleSubtreeStream stream_search_condition=new RewriteRuleSubtreeStream(adaptor,"rule search_condition");
2072         try {
2073             // CmisBaseGrammar.g:152:13: ( predicate | LPAR search_condition RPAR -> search_condition )
2074             int alt21=2;
2075             switch ( input.LA(1) ) {
2076             case ANY:
2077             case CONTAINS:
2078             case SCORE:
2079             case IN_FOLDER:
2080             case IN_TREE:
2081             case BOOL_LIT:
2082             case NUM_LIT:
2083             case STRING_LIT:
2084             case TIME_LIT:
2085             case ID:
2086                 {
2087                 alt21=1;
2088                 }
2089                 break;
2090             case LPAR:
2091                 {
2092                 alt21=2;
2093                 }
2094                 break;
2095             default:
2096                 NoViableAltException nvae =
2097                     new NoViableAltException("", 21, 0, input);
2098 
2099                 throw nvae;
2100             }
2101 
2102             switch (alt21) {
2103                 case 1 :
2104                     // CmisBaseGrammar.g:153:7: predicate
2105                     {
2106                     root_0 = (Object)adaptor.nil();
2107 
2108                     pushFollow(FOLLOW_predicate_in_boolean_test695);
2109                     predicate59=predicate();
2110 
2111                     state._fsp--;
2112 
2113                     adaptor.addChild(root_0, predicate59.getTree());
2114 
2115                     }
2116                     break;
2117                 case 2 :
2118                     // CmisBaseGrammar.g:154:7: LPAR search_condition RPAR
2119                     {
2120                     LPAR60=(Token)match(input,LPAR,FOLLOW_LPAR_in_boolean_test703);  
2121                     stream_LPAR.add(LPAR60);
2122 
2123                     pushFollow(FOLLOW_search_condition_in_boolean_test705);
2124                     search_condition61=search_condition();
2125 
2126                     state._fsp--;
2127 
2128                     stream_search_condition.add(search_condition61.getTree());
2129                     RPAR62=(Token)match(input,RPAR,FOLLOW_RPAR_in_boolean_test707);  
2130                     stream_RPAR.add(RPAR62);
2131 
2132 
2133 
2134                     // AST REWRITE
2135                     // elements: search_condition
2136                     // token labels: 
2137                     // rule labels: retval
2138                     // token list labels: 
2139                     // rule list labels: 
2140                     // wildcard labels: 
2141                     retval.tree = root_0;
2142                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
2143 
2144                     root_0 = (Object)adaptor.nil();
2145                     // 154:34: -> search_condition
2146                     {
2147                         adaptor.addChild(root_0, stream_search_condition.nextTree());
2148 
2149                     }
2150 
2151                     retval.tree = root_0;
2152                     }
2153                     break;
2154 
2155             }
2156             retval.stop = input.LT(-1);
2157 
2158             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
2159             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
2160 
2161         }
2162         catch (RecognitionException re) {
2163             reportError(re);
2164             recover(input,re);
2165     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
2166 
2167         }
2168         finally {
2169         }
2170         return retval;
2171     }
2172     // $ANTLR end "boolean_test"
2173 
2174     public static class predicate_return extends ParserRuleReturnScope {
2175         Object tree;
2176         public Object getTree() { return tree; }
2177     };
2178 
2179     // $ANTLR start "predicate"
2180     // CmisBaseGrammar.g:157:1: predicate : ( comparison_predicate | in_predicate | like_predicate | null_predicate | quantified_comparison_predicate | quantified_in_predicate | text_search_predicate | folder_predicate );
2181     public final CmisQlExtParser_CmisBaseGrammar.predicate_return predicate() throws RecognitionException {
2182         CmisQlExtParser_CmisBaseGrammar.predicate_return retval = new CmisQlExtParser_CmisBaseGrammar.predicate_return();
2183         retval.start = input.LT(1);
2184 
2185         Object root_0 = null;
2186 
2187         CmisQlExtParser_CmisBaseGrammar.comparison_predicate_return comparison_predicate63 = null;
2188 
2189         CmisQlExtParser_CmisBaseGrammar.in_predicate_return in_predicate64 = null;
2190 
2191         CmisQlExtParser_CmisBaseGrammar.like_predicate_return like_predicate65 = null;
2192 
2193         CmisQlExtParser_CmisBaseGrammar.null_predicate_return null_predicate66 = null;
2194 
2195         CmisQlExtParser.quantified_comparison_predicate_return quantified_comparison_predicate67 = null;
2196 
2197         CmisQlExtParser_CmisBaseGrammar.quantified_in_predicate_return quantified_in_predicate68 = null;
2198 
2199         CmisQlExtParser_CmisBaseGrammar.text_search_predicate_return text_search_predicate69 = null;
2200 
2201         CmisQlExtParser_CmisBaseGrammar.folder_predicate_return folder_predicate70 = null;
2202 
2203 
2204 
2205         try {
2206             // CmisBaseGrammar.g:157:10: ( comparison_predicate | in_predicate | like_predicate | null_predicate | quantified_comparison_predicate | quantified_in_predicate | text_search_predicate | folder_predicate )
2207             int alt22=8;
2208             alt22 = dfa22.predict(input);
2209             switch (alt22) {
2210                 case 1 :
2211                     // CmisBaseGrammar.g:158:7: comparison_predicate
2212                     {
2213                     root_0 = (Object)adaptor.nil();
2214 
2215                     pushFollow(FOLLOW_comparison_predicate_in_predicate729);
2216                     comparison_predicate63=comparison_predicate();
2217 
2218                     state._fsp--;
2219 
2220                     adaptor.addChild(root_0, comparison_predicate63.getTree());
2221 
2222                     }
2223                     break;
2224                 case 2 :
2225                     // CmisBaseGrammar.g:159:7: in_predicate
2226                     {
2227                     root_0 = (Object)adaptor.nil();
2228 
2229                     pushFollow(FOLLOW_in_predicate_in_predicate737);
2230                     in_predicate64=in_predicate();
2231 
2232                     state._fsp--;
2233 
2234                     adaptor.addChild(root_0, in_predicate64.getTree());
2235 
2236                     }
2237                     break;
2238                 case 3 :
2239                     // CmisBaseGrammar.g:160:7: like_predicate
2240                     {
2241                     root_0 = (Object)adaptor.nil();
2242 
2243                     pushFollow(FOLLOW_like_predicate_in_predicate745);
2244                     like_predicate65=like_predicate();
2245 
2246                     state._fsp--;
2247 
2248                     adaptor.addChild(root_0, like_predicate65.getTree());
2249 
2250                     }
2251                     break;
2252                 case 4 :
2253                     // CmisBaseGrammar.g:161:7: null_predicate
2254                     {
2255                     root_0 = (Object)adaptor.nil();
2256 
2257                     pushFollow(FOLLOW_null_predicate_in_predicate753);
2258                     null_predicate66=null_predicate();
2259 
2260                     state._fsp--;
2261 
2262                     adaptor.addChild(root_0, null_predicate66.getTree());
2263 
2264                     }
2265                     break;
2266                 case 5 :
2267                     // CmisBaseGrammar.g:162:7: quantified_comparison_predicate
2268                     {
2269                     root_0 = (Object)adaptor.nil();
2270 
2271                     pushFollow(FOLLOW_quantified_comparison_predicate_in_predicate761);
2272                     quantified_comparison_predicate67=gCmisQlExtParser.quantified_comparison_predicate();
2273 
2274                     state._fsp--;
2275 
2276                     adaptor.addChild(root_0, quantified_comparison_predicate67.getTree());
2277 
2278                     }
2279                     break;
2280                 case 6 :
2281                     // CmisBaseGrammar.g:163:7: quantified_in_predicate
2282                     {
2283                     root_0 = (Object)adaptor.nil();
2284 
2285                     pushFollow(FOLLOW_quantified_in_predicate_in_predicate769);
2286                     quantified_in_predicate68=quantified_in_predicate();
2287 
2288                     state._fsp--;
2289 
2290                     adaptor.addChild(root_0, quantified_in_predicate68.getTree());
2291 
2292                     }
2293                     break;
2294                 case 7 :
2295                     // CmisBaseGrammar.g:164:7: text_search_predicate
2296                     {
2297                     root_0 = (Object)adaptor.nil();
2298 
2299                     pushFollow(FOLLOW_text_search_predicate_in_predicate777);
2300                     text_search_predicate69=text_search_predicate();
2301 
2302                     state._fsp--;
2303 
2304                     adaptor.addChild(root_0, text_search_predicate69.getTree());
2305 
2306                     }
2307                     break;
2308                 case 8 :
2309                     // CmisBaseGrammar.g:165:7: folder_predicate
2310                     {
2311                     root_0 = (Object)adaptor.nil();
2312 
2313                     pushFollow(FOLLOW_folder_predicate_in_predicate785);
2314                     folder_predicate70=folder_predicate();
2315 
2316                     state._fsp--;
2317 
2318                     adaptor.addChild(root_0, folder_predicate70.getTree());
2319 
2320                     }
2321                     break;
2322 
2323             }
2324             retval.stop = input.LT(-1);
2325 
2326             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
2327             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
2328 
2329         }
2330         catch (RecognitionException re) {
2331             reportError(re);
2332             recover(input,re);
2333     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
2334 
2335         }
2336         finally {
2337         }
2338         return retval;
2339     }
2340     // $ANTLR end "predicate"
2341 
2342     public static class comparison_predicate_return extends ParserRuleReturnScope {
2343         Object tree;
2344         public Object getTree() { return tree; }
2345     };
2346 
2347     // $ANTLR start "comparison_predicate"
2348     // CmisBaseGrammar.g:168:1: comparison_predicate : ( value_expression EQ literal -> ^( EQ value_expression literal ) | value_expression NEQ literal -> ^( NEQ value_expression literal ) | value_expression LT literal -> ^( LT value_expression literal ) | value_expression GT literal -> ^( GT value_expression literal ) | value_expression LTEQ literal -> ^( LTEQ value_expression literal ) | value_expression GTEQ literal -> ^( GTEQ value_expression literal ) );
2349     public final CmisQlExtParser_CmisBaseGrammar.comparison_predicate_return comparison_predicate() throws RecognitionException {
2350         CmisQlExtParser_CmisBaseGrammar.comparison_predicate_return retval = new CmisQlExtParser_CmisBaseGrammar.comparison_predicate_return();
2351         retval.start = input.LT(1);
2352 
2353         Object root_0 = null;
2354 
2355         Token EQ72=null;
2356         Token NEQ75=null;
2357         Token LT78=null;
2358         Token GT81=null;
2359         Token LTEQ84=null;
2360         Token GTEQ87=null;
2361         CmisQlExtParser.value_expression_return value_expression71 = null;
2362 
2363         CmisQlExtParser_CmisBaseGrammar.literal_return literal73 = null;
2364 
2365         CmisQlExtParser.value_expression_return value_expression74 = null;
2366 
2367         CmisQlExtParser_CmisBaseGrammar.literal_return literal76 = null;
2368 
2369         CmisQlExtParser.value_expression_return value_expression77 = null;
2370 
2371         CmisQlExtParser_CmisBaseGrammar.literal_return literal79 = null;
2372 
2373         CmisQlExtParser.value_expression_return value_expression80 = null;
2374 
2375         CmisQlExtParser_CmisBaseGrammar.literal_return literal82 = null;
2376 
2377         CmisQlExtParser.value_expression_return value_expression83 = null;
2378 
2379         CmisQlExtParser_CmisBaseGrammar.literal_return literal85 = null;
2380 
2381         CmisQlExtParser.value_expression_return value_expression86 = null;
2382 
2383         CmisQlExtParser_CmisBaseGrammar.literal_return literal88 = null;
2384 
2385 
2386         Object EQ72_tree=null;
2387         Object NEQ75_tree=null;
2388         Object LT78_tree=null;
2389         Object GT81_tree=null;
2390         Object LTEQ84_tree=null;
2391         Object GTEQ87_tree=null;
2392         RewriteRuleTokenStream stream_GT=new RewriteRuleTokenStream(adaptor,"token GT");
2393         RewriteRuleTokenStream stream_LT=new RewriteRuleTokenStream(adaptor,"token LT");
2394         RewriteRuleTokenStream stream_NEQ=new RewriteRuleTokenStream(adaptor,"token NEQ");
2395         RewriteRuleTokenStream stream_GTEQ=new RewriteRuleTokenStream(adaptor,"token GTEQ");
2396         RewriteRuleTokenStream stream_EQ=new RewriteRuleTokenStream(adaptor,"token EQ");
2397         RewriteRuleTokenStream stream_LTEQ=new RewriteRuleTokenStream(adaptor,"token LTEQ");
2398         RewriteRuleSubtreeStream stream_value_expression=new RewriteRuleSubtreeStream(adaptor,"rule value_expression");
2399         RewriteRuleSubtreeStream stream_literal=new RewriteRuleSubtreeStream(adaptor,"rule literal");
2400         try {
2401             // CmisBaseGrammar.g:168:21: ( value_expression EQ literal -> ^( EQ value_expression literal ) | value_expression NEQ literal -> ^( NEQ value_expression literal ) | value_expression LT literal -> ^( LT value_expression literal ) | value_expression GT literal -> ^( GT value_expression literal ) | value_expression LTEQ literal -> ^( LTEQ value_expression literal ) | value_expression GTEQ literal -> ^( GTEQ value_expression literal ) )
2402             int alt23=6;
2403             alt23 = dfa23.predict(input);
2404             switch (alt23) {
2405                 case 1 :
2406                     // CmisBaseGrammar.g:169:5: value_expression EQ literal
2407                     {
2408                     pushFollow(FOLLOW_value_expression_in_comparison_predicate801);
2409                     value_expression71=gCmisQlExtParser.value_expression();
2410 
2411                     state._fsp--;
2412 
2413                     stream_value_expression.add(value_expression71.getTree());
2414                     EQ72=(Token)match(input,EQ,FOLLOW_EQ_in_comparison_predicate803);  
2415                     stream_EQ.add(EQ72);
2416 
2417                     pushFollow(FOLLOW_literal_in_comparison_predicate805);
2418                     literal73=literal();
2419 
2420                     state._fsp--;
2421 
2422                     stream_literal.add(literal73.getTree());
2423 
2424 
2425                     // AST REWRITE
2426                     // elements: value_expression, literal, EQ
2427                     // token labels: 
2428                     // rule labels: retval
2429                     // token list labels: 
2430                     // rule list labels: 
2431                     // wildcard labels: 
2432                     retval.tree = root_0;
2433                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
2434 
2435                     root_0 = (Object)adaptor.nil();
2436                     // 170:7: -> ^( EQ value_expression literal )
2437                     {
2438                         // CmisBaseGrammar.g:170:10: ^( EQ value_expression literal )
2439                         {
2440                         Object root_1 = (Object)adaptor.nil();
2441                         root_1 = (Object)adaptor.becomeRoot(stream_EQ.nextNode(), root_1);
2442 
2443                         adaptor.addChild(root_1, stream_value_expression.nextTree());
2444                         adaptor.addChild(root_1, stream_literal.nextTree());
2445 
2446                         adaptor.addChild(root_0, root_1);
2447                         }
2448 
2449                     }
2450 
2451                     retval.tree = root_0;
2452                     }
2453                     break;
2454                 case 2 :
2455                     // CmisBaseGrammar.g:171:7: value_expression NEQ literal
2456                     {
2457                     pushFollow(FOLLOW_value_expression_in_comparison_predicate829);
2458                     value_expression74=gCmisQlExtParser.value_expression();
2459 
2460                     state._fsp--;
2461 
2462                     stream_value_expression.add(value_expression74.getTree());
2463                     NEQ75=(Token)match(input,NEQ,FOLLOW_NEQ_in_comparison_predicate831);  
2464                     stream_NEQ.add(NEQ75);
2465 
2466                     pushFollow(FOLLOW_literal_in_comparison_predicate833);
2467                     literal76=literal();
2468 
2469                     state._fsp--;
2470 
2471                     stream_literal.add(literal76.getTree());
2472 
2473 
2474                     // AST REWRITE
2475                     // elements: value_expression, literal, NEQ
2476                     // token labels: 
2477                     // rule labels: retval
2478                     // token list labels: 
2479                     // rule list labels: 
2480                     // wildcard labels: 
2481                     retval.tree = root_0;
2482                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
2483 
2484                     root_0 = (Object)adaptor.nil();
2485                     // 172:7: -> ^( NEQ value_expression literal )
2486                     {
2487                         // CmisBaseGrammar.g:172:10: ^( NEQ value_expression literal )
2488                         {
2489                         Object root_1 = (Object)adaptor.nil();
2490                         root_1 = (Object)adaptor.becomeRoot(stream_NEQ.nextNode(), root_1);
2491 
2492                         adaptor.addChild(root_1, stream_value_expression.nextTree());
2493                         adaptor.addChild(root_1, stream_literal.nextTree());
2494 
2495                         adaptor.addChild(root_0, root_1);
2496                         }
2497 
2498                     }
2499 
2500                     retval.tree = root_0;
2501                     }
2502                     break;
2503                 case 3 :
2504                     // CmisBaseGrammar.g:173:7: value_expression LT literal
2505                     {
2506                     pushFollow(FOLLOW_value_expression_in_comparison_predicate857);
2507                     value_expression77=gCmisQlExtParser.value_expression();
2508 
2509                     state._fsp--;
2510 
2511                     stream_value_expression.add(value_expression77.getTree());
2512                     LT78=(Token)match(input,LT,FOLLOW_LT_in_comparison_predicate859);  
2513                     stream_LT.add(LT78);
2514 
2515                     pushFollow(FOLLOW_literal_in_comparison_predicate861);
2516                     literal79=literal();
2517 
2518                     state._fsp--;
2519 
2520                     stream_literal.add(literal79.getTree());
2521 
2522 
2523                     // AST REWRITE
2524                     // elements: value_expression, literal, LT
2525                     // token labels: 
2526                     // rule labels: retval
2527                     // token list labels: 
2528                     // rule list labels: 
2529                     // wildcard labels: 
2530                     retval.tree = root_0;
2531                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
2532 
2533                     root_0 = (Object)adaptor.nil();
2534                     // 174:7: -> ^( LT value_expression literal )
2535                     {
2536                         // CmisBaseGrammar.g:174:10: ^( LT value_expression literal )
2537                         {
2538                         Object root_1 = (Object)adaptor.nil();
2539                         root_1 = (Object)adaptor.becomeRoot(stream_LT.nextNode(), root_1);
2540 
2541                         adaptor.addChild(root_1, stream_value_expression.nextTree());
2542                         adaptor.addChild(root_1, stream_literal.nextTree());
2543 
2544                         adaptor.addChild(root_0, root_1);
2545                         }
2546 
2547                     }
2548 
2549                     retval.tree = root_0;
2550                     }
2551                     break;
2552                 case 4 :
2553                     // CmisBaseGrammar.g:175:7: value_expression GT literal
2554                     {
2555                     pushFollow(FOLLOW_value_expression_in_comparison_predicate885);
2556                     value_expression80=gCmisQlExtParser.value_expression();
2557 
2558                     state._fsp--;
2559 
2560                     stream_value_expression.add(value_expression80.getTree());
2561                     GT81=(Token)match(input,GT,FOLLOW_GT_in_comparison_predicate887);  
2562                     stream_GT.add(GT81);
2563 
2564                     pushFollow(FOLLOW_literal_in_comparison_predicate889);
2565                     literal82=literal();
2566 
2567                     state._fsp--;
2568 
2569                     stream_literal.add(literal82.getTree());
2570 
2571 
2572                     // AST REWRITE
2573                     // elements: literal, GT, value_expression
2574                     // token labels: 
2575                     // rule labels: retval
2576                     // token list labels: 
2577                     // rule list labels: 
2578                     // wildcard labels: 
2579                     retval.tree = root_0;
2580                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
2581 
2582                     root_0 = (Object)adaptor.nil();
2583                     // 176:7: -> ^( GT value_expression literal )
2584                     {
2585                         // CmisBaseGrammar.g:176:10: ^( GT value_expression literal )
2586                         {
2587                         Object root_1 = (Object)adaptor.nil();
2588                         root_1 = (Object)adaptor.becomeRoot(stream_GT.nextNode(), root_1);
2589 
2590                         adaptor.addChild(root_1, stream_value_expression.nextTree());
2591                         adaptor.addChild(root_1, stream_literal.nextTree());
2592 
2593                         adaptor.addChild(root_0, root_1);
2594                         }
2595 
2596                     }
2597 
2598                     retval.tree = root_0;
2599                     }
2600                     break;
2601                 case 5 :
2602                     // CmisBaseGrammar.g:177:7: value_expression LTEQ literal
2603                     {
2604                     pushFollow(FOLLOW_value_expression_in_comparison_predicate913);
2605                     value_expression83=gCmisQlExtParser.value_expression();
2606 
2607                     state._fsp--;
2608 
2609                     stream_value_expression.add(value_expression83.getTree());
2610                     LTEQ84=(Token)match(input,LTEQ,FOLLOW_LTEQ_in_comparison_predicate915);  
2611                     stream_LTEQ.add(LTEQ84);
2612 
2613                     pushFollow(FOLLOW_literal_in_comparison_predicate917);
2614                     literal85=literal();
2615 
2616                     state._fsp--;
2617 
2618                     stream_literal.add(literal85.getTree());
2619 
2620 
2621                     // AST REWRITE
2622                     // elements: literal, value_expression, LTEQ
2623                     // token labels: 
2624                     // rule labels: retval
2625                     // token list labels: 
2626                     // rule list labels: 
2627                     // wildcard labels: 
2628                     retval.tree = root_0;
2629                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
2630 
2631                     root_0 = (Object)adaptor.nil();
2632                     // 178:7: -> ^( LTEQ value_expression literal )
2633                     {
2634                         // CmisBaseGrammar.g:178:10: ^( LTEQ value_expression literal )
2635                         {
2636                         Object root_1 = (Object)adaptor.nil();
2637                         root_1 = (Object)adaptor.becomeRoot(stream_LTEQ.nextNode(), root_1);
2638 
2639                         adaptor.addChild(root_1, stream_value_expression.nextTree());
2640                         adaptor.addChild(root_1, stream_literal.nextTree());
2641 
2642                         adaptor.addChild(root_0, root_1);
2643                         }
2644 
2645                     }
2646 
2647                     retval.tree = root_0;
2648                     }
2649                     break;
2650                 case 6 :
2651                     // CmisBaseGrammar.g:179:7: value_expression GTEQ literal
2652                     {
2653                     pushFollow(FOLLOW_value_expression_in_comparison_predicate941);
2654                     value_expression86=gCmisQlExtParser.value_expression();
2655 
2656                     state._fsp--;
2657 
2658                     stream_value_expression.add(value_expression86.getTree());
2659                     GTEQ87=(Token)match(input,GTEQ,FOLLOW_GTEQ_in_comparison_predicate943);  
2660                     stream_GTEQ.add(GTEQ87);
2661 
2662                     pushFollow(FOLLOW_literal_in_comparison_predicate945);
2663                     literal88=literal();
2664 
2665                     state._fsp--;
2666 
2667                     stream_literal.add(literal88.getTree());
2668 
2669 
2670                     // AST REWRITE
2671                     // elements: value_expression, literal, GTEQ
2672                     // token labels: 
2673                     // rule labels: retval
2674                     // token list labels: 
2675                     // rule list labels: 
2676                     // wildcard labels: 
2677                     retval.tree = root_0;
2678                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
2679 
2680                     root_0 = (Object)adaptor.nil();
2681                     // 180:7: -> ^( GTEQ value_expression literal )
2682                     {
2683                         // CmisBaseGrammar.g:180:10: ^( GTEQ value_expression literal )
2684                         {
2685                         Object root_1 = (Object)adaptor.nil();
2686                         root_1 = (Object)adaptor.becomeRoot(stream_GTEQ.nextNode(), root_1);
2687 
2688                         adaptor.addChild(root_1, stream_value_expression.nextTree());
2689                         adaptor.addChild(root_1, stream_literal.nextTree());
2690 
2691                         adaptor.addChild(root_0, root_1);
2692                         }
2693 
2694                     }
2695 
2696                     retval.tree = root_0;
2697                     }
2698                     break;
2699 
2700             }
2701             retval.stop = input.LT(-1);
2702 
2703             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
2704             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
2705 
2706         }
2707         catch (RecognitionException re) {
2708             reportError(re);
2709             recover(input,re);
2710     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
2711 
2712         }
2713         finally {
2714         }
2715         return retval;
2716     }
2717     // $ANTLR end "comparison_predicate"
2718 
2719     public static class literal_return extends ParserRuleReturnScope {
2720         Object tree;
2721         public Object getTree() { return tree; }
2722     };
2723 
2724     // $ANTLR start "literal"
2725     // CmisBaseGrammar.g:183:1: literal : ( NUM_LIT | STRING_LIT | TIME_LIT | BOOL_LIT );
2726     public final CmisQlExtParser_CmisBaseGrammar.literal_return literal() throws RecognitionException {
2727         CmisQlExtParser_CmisBaseGrammar.literal_return retval = new CmisQlExtParser_CmisBaseGrammar.literal_return();
2728         retval.start = input.LT(1);
2729 
2730         Object root_0 = null;
2731 
2732         Token set89=null;
2733 
2734         Object set89_tree=null;
2735 
2736         try {
2737             // CmisBaseGrammar.g:183:8: ( NUM_LIT | STRING_LIT | TIME_LIT | BOOL_LIT )
2738             // CmisBaseGrammar.g:
2739             {
2740             root_0 = (Object)adaptor.nil();
2741 
2742             set89=(Token)input.LT(1);
2743             if ( input.LA(1)==BOOL_LIT||input.LA(1)==NUM_LIT||input.LA(1)==STRING_LIT||input.LA(1)==TIME_LIT ) {
2744                 input.consume();
2745                 adaptor.addChild(root_0, (Object)adaptor.create(set89));
2746                 state.errorRecovery=false;
2747             }
2748             else {
2749                 MismatchedSetException mse = new MismatchedSetException(null,input);
2750                 throw mse;
2751             }
2752 
2753 
2754             }
2755 
2756             retval.stop = input.LT(-1);
2757 
2758             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
2759             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
2760 
2761         }
2762         catch (RecognitionException re) {
2763             reportError(re);
2764             recover(input,re);
2765     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
2766 
2767         }
2768         finally {
2769         }
2770         return retval;
2771     }
2772     // $ANTLR end "literal"
2773 
2774     public static class in_predicate_return extends ParserRuleReturnScope {
2775         Object tree;
2776         public Object getTree() { return tree; }
2777     };
2778 
2779     // $ANTLR start "in_predicate"
2780     // CmisBaseGrammar.g:190:1: in_predicate : ( column_reference IN LPAR in_value_list RPAR -> ^( IN column_reference in_value_list ) | column_reference NOT IN LPAR in_value_list RPAR -> ^( NOT_IN column_reference in_value_list ) );
2781     public final CmisQlExtParser_CmisBaseGrammar.in_predicate_return in_predicate() throws RecognitionException {
2782         CmisQlExtParser_CmisBaseGrammar.in_predicate_return retval = new CmisQlExtParser_CmisBaseGrammar.in_predicate_return();
2783         retval.start = input.LT(1);
2784 
2785         Object root_0 = null;
2786 
2787         Token IN91=null;
2788         Token LPAR92=null;
2789         Token RPAR94=null;
2790         Token NOT96=null;
2791         Token IN97=null;
2792         Token LPAR98=null;
2793         Token RPAR100=null;
2794         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference90 = null;
2795 
2796         CmisQlExtParser_CmisBaseGrammar.in_value_list_return in_value_list93 = null;
2797 
2798         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference95 = null;
2799 
2800         CmisQlExtParser_CmisBaseGrammar.in_value_list_return in_value_list99 = null;
2801 
2802 
2803         Object IN91_tree=null;
2804         Object LPAR92_tree=null;
2805         Object RPAR94_tree=null;
2806         Object NOT96_tree=null;
2807         Object IN97_tree=null;
2808         Object LPAR98_tree=null;
2809         Object RPAR100_tree=null;
2810         RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
2811         RewriteRuleTokenStream stream_IN=new RewriteRuleTokenStream(adaptor,"token IN");
2812         RewriteRuleTokenStream stream_NOT=new RewriteRuleTokenStream(adaptor,"token NOT");
2813         RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
2814         RewriteRuleSubtreeStream stream_column_reference=new RewriteRuleSubtreeStream(adaptor,"rule column_reference");
2815         RewriteRuleSubtreeStream stream_in_value_list=new RewriteRuleSubtreeStream(adaptor,"rule in_value_list");
2816         try {
2817             // CmisBaseGrammar.g:190:13: ( column_reference IN LPAR in_value_list RPAR -> ^( IN column_reference in_value_list ) | column_reference NOT IN LPAR in_value_list RPAR -> ^( NOT_IN column_reference in_value_list ) )
2818             int alt24=2;
2819             switch ( input.LA(1) ) {
2820             case ID:
2821                 {
2822                 switch ( input.LA(2) ) {
2823                 case DOT:
2824                     {
2825                     switch ( input.LA(3) ) {
2826                     case ID:
2827                         {
2828                         switch ( input.LA(4) ) {
2829                         case IN:
2830                             {
2831                             alt24=1;
2832                             }
2833                             break;
2834                         case NOT:
2835                             {
2836                             alt24=2;
2837                             }
2838                             break;
2839                         default:
2840                             NoViableAltException nvae =
2841                                 new NoViableAltException("", 24, 5, input);
2842 
2843                             throw nvae;
2844                         }
2845 
2846                         }
2847                         break;
2848                     default:
2849                         NoViableAltException nvae =
2850                             new NoViableAltException("", 24, 2, input);
2851 
2852                         throw nvae;
2853                     }
2854 
2855                     }
2856                     break;
2857                 case IN:
2858                     {
2859                     alt24=1;
2860                     }
2861                     break;
2862                 case NOT:
2863                     {
2864                     alt24=2;
2865                     }
2866                     break;
2867                 default:
2868                     NoViableAltException nvae =
2869                         new NoViableAltException("", 24, 1, input);
2870 
2871                     throw nvae;
2872                 }
2873 
2874                 }
2875                 break;
2876             default:
2877                 NoViableAltException nvae =
2878                     new NoViableAltException("", 24, 0, input);
2879 
2880                 throw nvae;
2881             }
2882 
2883             switch (alt24) {
2884                 case 1 :
2885                     // CmisBaseGrammar.g:191:7: column_reference IN LPAR in_value_list RPAR
2886                     {
2887                     pushFollow(FOLLOW_column_reference_in_in_predicate1021);
2888                     column_reference90=column_reference();
2889 
2890                     state._fsp--;
2891 
2892                     stream_column_reference.add(column_reference90.getTree());
2893                     IN91=(Token)match(input,IN,FOLLOW_IN_in_in_predicate1023);  
2894                     stream_IN.add(IN91);
2895 
2896                     LPAR92=(Token)match(input,LPAR,FOLLOW_LPAR_in_in_predicate1025);  
2897                     stream_LPAR.add(LPAR92);
2898 
2899                     pushFollow(FOLLOW_in_value_list_in_in_predicate1027);
2900                     in_value_list93=in_value_list();
2901 
2902                     state._fsp--;
2903 
2904                     stream_in_value_list.add(in_value_list93.getTree());
2905                     RPAR94=(Token)match(input,RPAR,FOLLOW_RPAR_in_in_predicate1029);  
2906                     stream_RPAR.add(RPAR94);
2907 
2908 
2909 
2910                     // AST REWRITE
2911                     // elements: in_value_list, IN, column_reference
2912                     // token labels: 
2913                     // rule labels: retval
2914                     // token list labels: 
2915                     // rule list labels: 
2916                     // wildcard labels: 
2917                     retval.tree = root_0;
2918                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
2919 
2920                     root_0 = (Object)adaptor.nil();
2921                     // 192:9: -> ^( IN column_reference in_value_list )
2922                     {
2923                         // CmisBaseGrammar.g:192:12: ^( IN column_reference in_value_list )
2924                         {
2925                         Object root_1 = (Object)adaptor.nil();
2926                         root_1 = (Object)adaptor.becomeRoot(stream_IN.nextNode(), root_1);
2927 
2928                         adaptor.addChild(root_1, stream_column_reference.nextTree());
2929                         adaptor.addChild(root_1, stream_in_value_list.nextTree());
2930 
2931                         adaptor.addChild(root_0, root_1);
2932                         }
2933 
2934                     }
2935 
2936                     retval.tree = root_0;
2937                     }
2938                     break;
2939                 case 2 :
2940                     // CmisBaseGrammar.g:193:7: column_reference NOT IN LPAR in_value_list RPAR
2941                     {
2942                     pushFollow(FOLLOW_column_reference_in_in_predicate1055);
2943                     column_reference95=column_reference();
2944 
2945                     state._fsp--;
2946 
2947                     stream_column_reference.add(column_reference95.getTree());
2948                     NOT96=(Token)match(input,NOT,FOLLOW_NOT_in_in_predicate1057);  
2949                     stream_NOT.add(NOT96);
2950 
2951                     IN97=(Token)match(input,IN,FOLLOW_IN_in_in_predicate1059);  
2952                     stream_IN.add(IN97);
2953 
2954                     LPAR98=(Token)match(input,LPAR,FOLLOW_LPAR_in_in_predicate1061);  
2955                     stream_LPAR.add(LPAR98);
2956 
2957                     pushFollow(FOLLOW_in_value_list_in_in_predicate1063);
2958                     in_value_list99=in_value_list();
2959 
2960                     state._fsp--;
2961 
2962                     stream_in_value_list.add(in_value_list99.getTree());
2963                     RPAR100=(Token)match(input,RPAR,FOLLOW_RPAR_in_in_predicate1065);  
2964                     stream_RPAR.add(RPAR100);
2965 
2966 
2967 
2968                     // AST REWRITE
2969                     // elements: column_reference, in_value_list
2970                     // token labels: 
2971                     // rule labels: retval
2972                     // token list labels: 
2973                     // rule list labels: 
2974                     // wildcard labels: 
2975                     retval.tree = root_0;
2976                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
2977 
2978                     root_0 = (Object)adaptor.nil();
2979                     // 194:9: -> ^( NOT_IN column_reference in_value_list )
2980                     {
2981                         // CmisBaseGrammar.g:194:12: ^( NOT_IN column_reference in_value_list )
2982                         {
2983                         Object root_1 = (Object)adaptor.nil();
2984                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NOT_IN, "NOT_IN"), root_1);
2985 
2986                         adaptor.addChild(root_1, stream_column_reference.nextTree());
2987                         adaptor.addChild(root_1, stream_in_value_list.nextTree());
2988 
2989                         adaptor.addChild(root_0, root_1);
2990                         }
2991 
2992                     }
2993 
2994                     retval.tree = root_0;
2995                     }
2996                     break;
2997 
2998             }
2999             retval.stop = input.LT(-1);
3000 
3001             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
3002             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
3003 
3004         }
3005         catch (RecognitionException re) {
3006             reportError(re);
3007             recover(input,re);
3008     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
3009 
3010         }
3011         finally {
3012         }
3013         return retval;
3014     }
3015     // $ANTLR end "in_predicate"
3016 
3017     public static class in_value_list_return extends ParserRuleReturnScope {
3018         Object tree;
3019         public Object getTree() { return tree; }
3020     };
3021 
3022     // $ANTLR start "in_value_list"
3023     // CmisBaseGrammar.g:197:1: in_value_list : literal ( COMMA literal )* -> ^( IN_LIST ( literal )+ ) ;
3024     public final CmisQlExtParser_CmisBaseGrammar.in_value_list_return in_value_list() throws RecognitionException {
3025         CmisQlExtParser_CmisBaseGrammar.in_value_list_return retval = new CmisQlExtParser_CmisBaseGrammar.in_value_list_return();
3026         retval.start = input.LT(1);
3027 
3028         Object root_0 = null;
3029 
3030         Token COMMA102=null;
3031         CmisQlExtParser_CmisBaseGrammar.literal_return literal101 = null;
3032 
3033         CmisQlExtParser_CmisBaseGrammar.literal_return literal103 = null;
3034 
3035 
3036         Object COMMA102_tree=null;
3037         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
3038         RewriteRuleSubtreeStream stream_literal=new RewriteRuleSubtreeStream(adaptor,"rule literal");
3039         try {
3040             // CmisBaseGrammar.g:197:14: ( literal ( COMMA literal )* -> ^( IN_LIST ( literal )+ ) )
3041             // CmisBaseGrammar.g:198:5: literal ( COMMA literal )*
3042             {
3043             pushFollow(FOLLOW_literal_in_in_value_list1099);
3044             literal101=literal();
3045 
3046             state._fsp--;
3047 
3048             stream_literal.add(literal101.getTree());
3049             // CmisBaseGrammar.g:198:13: ( COMMA literal )*
3050             loop25:
3051             do {
3052                 int alt25=2;
3053                 switch ( input.LA(1) ) {
3054                 case COMMA:
3055                     {
3056                     alt25=1;
3057                     }
3058                     break;
3059 
3060                 }
3061 
3062                 switch (alt25) {
3063             	case 1 :
3064             	    // CmisBaseGrammar.g:198:15: COMMA literal
3065             	    {
3066             	    COMMA102=(Token)match(input,COMMA,FOLLOW_COMMA_in_in_value_list1103);  
3067             	    stream_COMMA.add(COMMA102);
3068 
3069             	    pushFollow(FOLLOW_literal_in_in_value_list1105);
3070             	    literal103=literal();
3071 
3072             	    state._fsp--;
3073 
3074             	    stream_literal.add(literal103.getTree());
3075 
3076             	    }
3077             	    break;
3078 
3079             	default :
3080             	    break loop25;
3081                 }
3082             } while (true);
3083 
3084 
3085 
3086             // AST REWRITE
3087             // elements: literal
3088             // token labels: 
3089             // rule labels: retval
3090             // token list labels: 
3091             // rule list labels: 
3092             // wildcard labels: 
3093             retval.tree = root_0;
3094             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
3095 
3096             root_0 = (Object)adaptor.nil();
3097             // 199:7: -> ^( IN_LIST ( literal )+ )
3098             {
3099                 // CmisBaseGrammar.g:199:10: ^( IN_LIST ( literal )+ )
3100                 {
3101                 Object root_1 = (Object)adaptor.nil();
3102                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(IN_LIST, "IN_LIST"), root_1);
3103 
3104                 if ( !(stream_literal.hasNext()) ) {
3105                     throw new RewriteEarlyExitException();
3106                 }
3107                 while ( stream_literal.hasNext() ) {
3108                     adaptor.addChild(root_1, stream_literal.nextTree());
3109 
3110                 }
3111                 stream_literal.reset();
3112 
3113                 adaptor.addChild(root_0, root_1);
3114                 }
3115 
3116             }
3117 
3118             retval.tree = root_0;
3119             }
3120 
3121             retval.stop = input.LT(-1);
3122 
3123             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
3124             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
3125 
3126         }
3127         catch (RecognitionException re) {
3128             reportError(re);
3129             recover(input,re);
3130     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
3131 
3132         }
3133         finally {
3134         }
3135         return retval;
3136     }
3137     // $ANTLR end "in_value_list"
3138 
3139     public static class like_predicate_return extends ParserRuleReturnScope {
3140         Object tree;
3141         public Object getTree() { return tree; }
3142     };
3143 
3144     // $ANTLR start "like_predicate"
3145     // CmisBaseGrammar.g:202:1: like_predicate : ( column_reference LIKE STRING_LIT -> ^( LIKE column_reference STRING_LIT ) | column_reference NOT LIKE STRING_LIT -> ^( NOT_LIKE column_reference STRING_LIT ) );
3146     public final CmisQlExtParser_CmisBaseGrammar.like_predicate_return like_predicate() throws RecognitionException {
3147         CmisQlExtParser_CmisBaseGrammar.like_predicate_return retval = new CmisQlExtParser_CmisBaseGrammar.like_predicate_return();
3148         retval.start = input.LT(1);
3149 
3150         Object root_0 = null;
3151 
3152         Token LIKE105=null;
3153         Token STRING_LIT106=null;
3154         Token NOT108=null;
3155         Token LIKE109=null;
3156         Token STRING_LIT110=null;
3157         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference104 = null;
3158 
3159         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference107 = null;
3160 
3161 
3162         Object LIKE105_tree=null;
3163         Object STRING_LIT106_tree=null;
3164         Object NOT108_tree=null;
3165         Object LIKE109_tree=null;
3166         Object STRING_LIT110_tree=null;
3167         RewriteRuleTokenStream stream_NOT=new RewriteRuleTokenStream(adaptor,"token NOT");
3168         RewriteRuleTokenStream stream_STRING_LIT=new RewriteRuleTokenStream(adaptor,"token STRING_LIT");
3169         RewriteRuleTokenStream stream_LIKE=new RewriteRuleTokenStream(adaptor,"token LIKE");
3170         RewriteRuleSubtreeStream stream_column_reference=new RewriteRuleSubtreeStream(adaptor,"rule column_reference");
3171         try {
3172             // CmisBaseGrammar.g:202:15: ( column_reference LIKE STRING_LIT -> ^( LIKE column_reference STRING_LIT ) | column_reference NOT LIKE STRING_LIT -> ^( NOT_LIKE column_reference STRING_LIT ) )
3173             int alt26=2;
3174             switch ( input.LA(1) ) {
3175             case ID:
3176                 {
3177                 switch ( input.LA(2) ) {
3178                 case DOT:
3179                     {
3180                     switch ( input.LA(3) ) {
3181                     case ID:
3182                         {
3183                         switch ( input.LA(4) ) {
3184                         case LIKE:
3185                             {
3186                             alt26=1;
3187                             }
3188                             break;
3189                         case NOT:
3190                             {
3191                             alt26=2;
3192                             }
3193                             break;
3194                         default:
3195                             NoViableAltException nvae =
3196                                 new NoViableAltException("", 26, 5, input);
3197 
3198                             throw nvae;
3199                         }
3200 
3201                         }
3202                         break;
3203                     default:
3204                         NoViableAltException nvae =
3205                             new NoViableAltException("", 26, 2, input);
3206 
3207                         throw nvae;
3208                     }
3209 
3210                     }
3211                     break;
3212                 case LIKE:
3213                     {
3214                     alt26=1;
3215                     }
3216                     break;
3217                 case NOT:
3218                     {
3219                     alt26=2;
3220                     }
3221                     break;
3222                 default:
3223                     NoViableAltException nvae =
3224                         new NoViableAltException("", 26, 1, input);
3225 
3226                     throw nvae;
3227                 }
3228 
3229                 }
3230                 break;
3231             default:
3232                 NoViableAltException nvae =
3233                     new NoViableAltException("", 26, 0, input);
3234 
3235                 throw nvae;
3236             }
3237 
3238             switch (alt26) {
3239                 case 1 :
3240                     // CmisBaseGrammar.g:203:7: column_reference LIKE STRING_LIT
3241                     {
3242                     pushFollow(FOLLOW_column_reference_in_like_predicate1141);
3243                     column_reference104=column_reference();
3244 
3245                     state._fsp--;
3246 
3247                     stream_column_reference.add(column_reference104.getTree());
3248                     LIKE105=(Token)match(input,LIKE,FOLLOW_LIKE_in_like_predicate1143);  
3249                     stream_LIKE.add(LIKE105);
3250 
3251                     STRING_LIT106=(Token)match(input,STRING_LIT,FOLLOW_STRING_LIT_in_like_predicate1145);  
3252                     stream_STRING_LIT.add(STRING_LIT106);
3253 
3254 
3255 
3256                     // AST REWRITE
3257                     // elements: STRING_LIT, LIKE, column_reference
3258                     // token labels: 
3259                     // rule labels: retval
3260                     // token list labels: 
3261                     // rule list labels: 
3262                     // wildcard labels: 
3263                     retval.tree = root_0;
3264                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
3265 
3266                     root_0 = (Object)adaptor.nil();
3267                     // 204:9: -> ^( LIKE column_reference STRING_LIT )
3268                     {
3269                         // CmisBaseGrammar.g:204:12: ^( LIKE column_reference STRING_LIT )
3270                         {
3271                         Object root_1 = (Object)adaptor.nil();
3272                         root_1 = (Object)adaptor.becomeRoot(stream_LIKE.nextNode(), root_1);
3273 
3274                         adaptor.addChild(root_1, stream_column_reference.nextTree());
3275                         adaptor.addChild(root_1, stream_STRING_LIT.nextNode());
3276 
3277                         adaptor.addChild(root_0, root_1);
3278                         }
3279 
3280                     }
3281 
3282                     retval.tree = root_0;
3283                     }
3284                     break;
3285                 case 2 :
3286                     // CmisBaseGrammar.g:205:7: column_reference NOT LIKE STRING_LIT
3287                     {
3288                     pushFollow(FOLLOW_column_reference_in_like_predicate1171);
3289                     column_reference107=column_reference();
3290 
3291                     state._fsp--;
3292 
3293                     stream_column_reference.add(column_reference107.getTree());
3294                     NOT108=(Token)match(input,NOT,FOLLOW_NOT_in_like_predicate1173);  
3295                     stream_NOT.add(NOT108);
3296 
3297                     LIKE109=(Token)match(input,LIKE,FOLLOW_LIKE_in_like_predicate1175);  
3298                     stream_LIKE.add(LIKE109);
3299 
3300                     STRING_LIT110=(Token)match(input,STRING_LIT,FOLLOW_STRING_LIT_in_like_predicate1177);  
3301                     stream_STRING_LIT.add(STRING_LIT110);
3302 
3303 
3304 
3305                     // AST REWRITE
3306                     // elements: STRING_LIT, column_reference
3307                     // token labels: 
3308                     // rule labels: retval
3309                     // token list labels: 
3310                     // rule list labels: 
3311                     // wildcard labels: 
3312                     retval.tree = root_0;
3313                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
3314 
3315                     root_0 = (Object)adaptor.nil();
3316                     // 206:9: -> ^( NOT_LIKE column_reference STRING_LIT )
3317                     {
3318                         // CmisBaseGrammar.g:206:12: ^( NOT_LIKE column_reference STRING_LIT )
3319                         {
3320                         Object root_1 = (Object)adaptor.nil();
3321                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NOT_LIKE, "NOT_LIKE"), root_1);
3322 
3323                         adaptor.addChild(root_1, stream_column_reference.nextTree());
3324                         adaptor.addChild(root_1, stream_STRING_LIT.nextNode());
3325 
3326                         adaptor.addChild(root_0, root_1);
3327                         }
3328 
3329                     }
3330 
3331                     retval.tree = root_0;
3332                     }
3333                     break;
3334 
3335             }
3336             retval.stop = input.LT(-1);
3337 
3338             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
3339             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
3340 
3341         }
3342         catch (RecognitionException re) {
3343             reportError(re);
3344             recover(input,re);
3345     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
3346 
3347         }
3348         finally {
3349         }
3350         return retval;
3351     }
3352     // $ANTLR end "like_predicate"
3353 
3354     public static class null_predicate_return extends ParserRuleReturnScope {
3355         Object tree;
3356         public Object getTree() { return tree; }
3357     };
3358 
3359     // $ANTLR start "null_predicate"
3360     // CmisBaseGrammar.g:209:1: null_predicate : column_reference IS ( NOT NULL -> ^( IS_NOT_NULL column_reference ) | NULL -> ^( IS_NULL column_reference ) ) ;
3361     public final CmisQlExtParser_CmisBaseGrammar.null_predicate_return null_predicate() throws RecognitionException {
3362         CmisQlExtParser_CmisBaseGrammar.null_predicate_return retval = new CmisQlExtParser_CmisBaseGrammar.null_predicate_return();
3363         retval.start = input.LT(1);
3364 
3365         Object root_0 = null;
3366 
3367         Token IS112=null;
3368         Token NOT113=null;
3369         Token NULL114=null;
3370         Token NULL115=null;
3371         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference111 = null;
3372 
3373 
3374         Object IS112_tree=null;
3375         Object NOT113_tree=null;
3376         Object NULL114_tree=null;
3377         Object NULL115_tree=null;
3378         RewriteRuleTokenStream stream_NOT=new RewriteRuleTokenStream(adaptor,"token NOT");
3379         RewriteRuleTokenStream stream_IS=new RewriteRuleTokenStream(adaptor,"token IS");
3380         RewriteRuleTokenStream stream_NULL=new RewriteRuleTokenStream(adaptor,"token NULL");
3381         RewriteRuleSubtreeStream stream_column_reference=new RewriteRuleSubtreeStream(adaptor,"rule column_reference");
3382         try {
3383             // CmisBaseGrammar.g:209:15: ( column_reference IS ( NOT NULL -> ^( IS_NOT_NULL column_reference ) | NULL -> ^( IS_NULL column_reference ) ) )
3384             // CmisBaseGrammar.g:212:5: column_reference IS ( NOT NULL -> ^( IS_NOT_NULL column_reference ) | NULL -> ^( IS_NULL column_reference ) )
3385             {
3386             pushFollow(FOLLOW_column_reference_in_null_predicate1221);
3387             column_reference111=column_reference();
3388 
3389             state._fsp--;
3390 
3391             stream_column_reference.add(column_reference111.getTree());
3392             IS112=(Token)match(input,IS,FOLLOW_IS_in_null_predicate1223);  
3393             stream_IS.add(IS112);
3394 
3395             // CmisBaseGrammar.g:213:7: ( NOT NULL -> ^( IS_NOT_NULL column_reference ) | NULL -> ^( IS_NULL column_reference ) )
3396             int alt27=2;
3397             switch ( input.LA(1) ) {
3398             case NOT:
3399                 {
3400                 alt27=1;
3401                 }
3402                 break;
3403             case NULL:
3404                 {
3405                 alt27=2;
3406                 }
3407                 break;
3408             default:
3409                 NoViableAltException nvae =
3410                     new NoViableAltException("", 27, 0, input);
3411 
3412                 throw nvae;
3413             }
3414 
3415             switch (alt27) {
3416                 case 1 :
3417                     // CmisBaseGrammar.g:213:9: NOT NULL
3418                     {
3419                     NOT113=(Token)match(input,NOT,FOLLOW_NOT_in_null_predicate1233);  
3420                     stream_NOT.add(NOT113);
3421 
3422                     NULL114=(Token)match(input,NULL,FOLLOW_NULL_in_null_predicate1235);  
3423                     stream_NULL.add(NULL114);
3424 
3425 
3426 
3427                     // AST REWRITE
3428                     // elements: column_reference
3429                     // token labels: 
3430                     // rule labels: retval
3431                     // token list labels: 
3432                     // rule list labels: 
3433                     // wildcard labels: 
3434                     retval.tree = root_0;
3435                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
3436 
3437                     root_0 = (Object)adaptor.nil();
3438                     // 213:18: -> ^( IS_NOT_NULL column_reference )
3439                     {
3440                         // CmisBaseGrammar.g:213:21: ^( IS_NOT_NULL column_reference )
3441                         {
3442                         Object root_1 = (Object)adaptor.nil();
3443                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(IS_NOT_NULL, "IS_NOT_NULL"), root_1);
3444 
3445                         adaptor.addChild(root_1, stream_column_reference.nextTree());
3446 
3447                         adaptor.addChild(root_0, root_1);
3448                         }
3449 
3450                     }
3451 
3452                     retval.tree = root_0;
3453                     }
3454                     break;
3455                 case 2 :
3456                     // CmisBaseGrammar.g:214:9: NULL
3457                     {
3458                     NULL115=(Token)match(input,NULL,FOLLOW_NULL_in_null_predicate1253);  
3459                     stream_NULL.add(NULL115);
3460 
3461 
3462 
3463                     // AST REWRITE
3464                     // elements: column_reference
3465                     // token labels: 
3466                     // rule labels: retval
3467                     // token list labels: 
3468                     // rule list labels: 
3469                     // wildcard labels: 
3470                     retval.tree = root_0;
3471                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
3472 
3473                     root_0 = (Object)adaptor.nil();
3474                     // 214:18: -> ^( IS_NULL column_reference )
3475                     {
3476                         // CmisBaseGrammar.g:214:21: ^( IS_NULL column_reference )
3477                         {
3478                         Object root_1 = (Object)adaptor.nil();
3479                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(IS_NULL, "IS_NULL"), root_1);
3480 
3481                         adaptor.addChild(root_1, stream_column_reference.nextTree());
3482 
3483                         adaptor.addChild(root_0, root_1);
3484                         }
3485 
3486                     }
3487 
3488                     retval.tree = root_0;
3489                     }
3490                     break;
3491 
3492             }
3493 
3494 
3495             }
3496 
3497             retval.stop = input.LT(-1);
3498 
3499             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
3500             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
3501 
3502         }
3503         catch (RecognitionException re) {
3504             reportError(re);
3505             recover(input,re);
3506     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
3507 
3508         }
3509         finally {
3510         }
3511         return retval;
3512     }
3513     // $ANTLR end "null_predicate"
3514 
3515     public static class quantified_in_predicate_return extends ParserRuleReturnScope {
3516         Object tree;
3517         public Object getTree() { return tree; }
3518     };
3519 
3520     // $ANTLR start "quantified_in_predicate"
3521     // CmisBaseGrammar.g:223:1: quantified_in_predicate : ANY multi_valued_column_reference ( NOT IN LPAR in_value_list RPAR -> ^( NOT_IN_ANY multi_valued_column_reference in_value_list ) | IN LPAR in_value_list RPAR -> ^( IN_ANY multi_valued_column_reference in_value_list ) ) ;
3522     public final CmisQlExtParser_CmisBaseGrammar.quantified_in_predicate_return quantified_in_predicate() throws RecognitionException {
3523         CmisQlExtParser_CmisBaseGrammar.quantified_in_predicate_return retval = new CmisQlExtParser_CmisBaseGrammar.quantified_in_predicate_return();
3524         retval.start = input.LT(1);
3525 
3526         Object root_0 = null;
3527 
3528         Token ANY116=null;
3529         Token NOT118=null;
3530         Token IN119=null;
3531         Token LPAR120=null;
3532         Token RPAR122=null;
3533         Token IN123=null;
3534         Token LPAR124=null;
3535         Token RPAR126=null;
3536         CmisQlExtParser_CmisBaseGrammar.multi_valued_column_reference_return multi_valued_column_reference117 = null;
3537 
3538         CmisQlExtParser_CmisBaseGrammar.in_value_list_return in_value_list121 = null;
3539 
3540         CmisQlExtParser_CmisBaseGrammar.in_value_list_return in_value_list125 = null;
3541 
3542 
3543         Object ANY116_tree=null;
3544         Object NOT118_tree=null;
3545         Object IN119_tree=null;
3546         Object LPAR120_tree=null;
3547         Object RPAR122_tree=null;
3548         Object IN123_tree=null;
3549         Object LPAR124_tree=null;
3550         Object RPAR126_tree=null;
3551         RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
3552         RewriteRuleTokenStream stream_ANY=new RewriteRuleTokenStream(adaptor,"token ANY");
3553         RewriteRuleTokenStream stream_IN=new RewriteRuleTokenStream(adaptor,"token IN");
3554         RewriteRuleTokenStream stream_NOT=new RewriteRuleTokenStream(adaptor,"token NOT");
3555         RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
3556         RewriteRuleSubtreeStream stream_in_value_list=new RewriteRuleSubtreeStream(adaptor,"rule in_value_list");
3557         RewriteRuleSubtreeStream stream_multi_valued_column_reference=new RewriteRuleSubtreeStream(adaptor,"rule multi_valued_column_reference");
3558         try {
3559             // CmisBaseGrammar.g:223:24: ( ANY multi_valued_column_reference ( NOT IN LPAR in_value_list RPAR -> ^( NOT_IN_ANY multi_valued_column_reference in_value_list ) | IN LPAR in_value_list RPAR -> ^( IN_ANY multi_valued_column_reference in_value_list ) ) )
3560             // CmisBaseGrammar.g:224:5: ANY multi_valued_column_reference ( NOT IN LPAR in_value_list RPAR -> ^( NOT_IN_ANY multi_valued_column_reference in_value_list ) | IN LPAR in_value_list RPAR -> ^( IN_ANY multi_valued_column_reference in_value_list ) )
3561             {
3562             ANY116=(Token)match(input,ANY,FOLLOW_ANY_in_quantified_in_predicate1331);  
3563             stream_ANY.add(ANY116);
3564 
3565             pushFollow(FOLLOW_multi_valued_column_reference_in_quantified_in_predicate1333);
3566             multi_valued_column_reference117=multi_valued_column_reference();
3567 
3568             state._fsp--;
3569 
3570             stream_multi_valued_column_reference.add(multi_valued_column_reference117.getTree());
3571             // CmisBaseGrammar.g:225:7: ( NOT IN LPAR in_value_list RPAR -> ^( NOT_IN_ANY multi_valued_column_reference in_value_list ) | IN LPAR in_value_list RPAR -> ^( IN_ANY multi_valued_column_reference in_value_list ) )
3572             int alt28=2;
3573             switch ( input.LA(1) ) {
3574             case NOT:
3575                 {
3576                 alt28=1;
3577                 }
3578                 break;
3579             case IN:
3580                 {
3581                 alt28=2;
3582                 }
3583                 break;
3584             default:
3585                 NoViableAltException nvae =
3586                     new NoViableAltException("", 28, 0, input);
3587 
3588                 throw nvae;
3589             }
3590 
3591             switch (alt28) {
3592                 case 1 :
3593                     // CmisBaseGrammar.g:225:9: NOT IN LPAR in_value_list RPAR
3594                     {
3595                     NOT118=(Token)match(input,NOT,FOLLOW_NOT_in_quantified_in_predicate1343);  
3596                     stream_NOT.add(NOT118);
3597 
3598                     IN119=(Token)match(input,IN,FOLLOW_IN_in_quantified_in_predicate1345);  
3599                     stream_IN.add(IN119);
3600 
3601                     LPAR120=(Token)match(input,LPAR,FOLLOW_LPAR_in_quantified_in_predicate1347);  
3602                     stream_LPAR.add(LPAR120);
3603 
3604                     pushFollow(FOLLOW_in_value_list_in_quantified_in_predicate1349);
3605                     in_value_list121=in_value_list();
3606 
3607                     state._fsp--;
3608 
3609                     stream_in_value_list.add(in_value_list121.getTree());
3610                     RPAR122=(Token)match(input,RPAR,FOLLOW_RPAR_in_quantified_in_predicate1351);  
3611                     stream_RPAR.add(RPAR122);
3612 
3613 
3614 
3615                     // AST REWRITE
3616                     // elements: multi_valued_column_reference, in_value_list
3617                     // token labels: 
3618                     // rule labels: retval
3619                     // token list labels: 
3620                     // rule list labels: 
3621                     // wildcard labels: 
3622                     retval.tree = root_0;
3623                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
3624 
3625                     root_0 = (Object)adaptor.nil();
3626                     // 226:11: -> ^( NOT_IN_ANY multi_valued_column_reference in_value_list )
3627                     {
3628                         // CmisBaseGrammar.g:226:14: ^( NOT_IN_ANY multi_valued_column_reference in_value_list )
3629                         {
3630                         Object root_1 = (Object)adaptor.nil();
3631                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NOT_IN_ANY, "NOT_IN_ANY"), root_1);
3632 
3633                         adaptor.addChild(root_1, stream_multi_valued_column_reference.nextTree());
3634                         adaptor.addChild(root_1, stream_in_value_list.nextTree());
3635 
3636                         adaptor.addChild(root_0, root_1);
3637                         }
3638 
3639                     }
3640 
3641                     retval.tree = root_0;
3642                     }
3643                     break;
3644                 case 2 :
3645                     // CmisBaseGrammar.g:227:9: IN LPAR in_value_list RPAR
3646                     {
3647                     IN123=(Token)match(input,IN,FOLLOW_IN_in_quantified_in_predicate1382);  
3648                     stream_IN.add(IN123);
3649 
3650                     LPAR124=(Token)match(input,LPAR,FOLLOW_LPAR_in_quantified_in_predicate1388);  
3651                     stream_LPAR.add(LPAR124);
3652 
3653                     pushFollow(FOLLOW_in_value_list_in_quantified_in_predicate1390);
3654                     in_value_list125=in_value_list();
3655 
3656                     state._fsp--;
3657 
3658                     stream_in_value_list.add(in_value_list125.getTree());
3659                     RPAR126=(Token)match(input,RPAR,FOLLOW_RPAR_in_quantified_in_predicate1392);  
3660                     stream_RPAR.add(RPAR126);
3661 
3662 
3663 
3664                     // AST REWRITE
3665                     // elements: in_value_list, multi_valued_column_reference
3666                     // token labels: 
3667                     // rule labels: retval
3668                     // token list labels: 
3669                     // rule list labels: 
3670                     // wildcard labels: 
3671                     retval.tree = root_0;
3672                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
3673 
3674                     root_0 = (Object)adaptor.nil();
3675                     // 228:11: -> ^( IN_ANY multi_valued_column_reference in_value_list )
3676                     {
3677                         // CmisBaseGrammar.g:228:14: ^( IN_ANY multi_valued_column_reference in_value_list )
3678                         {
3679                         Object root_1 = (Object)adaptor.nil();
3680                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(IN_ANY, "IN_ANY"), root_1);
3681 
3682                         adaptor.addChild(root_1, stream_multi_valued_column_reference.nextTree());
3683                         adaptor.addChild(root_1, stream_in_value_list.nextTree());
3684 
3685                         adaptor.addChild(root_0, root_1);
3686                         }
3687 
3688                     }
3689 
3690                     retval.tree = root_0;
3691                     }
3692                     break;
3693 
3694             }
3695 
3696 
3697             }
3698 
3699             retval.stop = input.LT(-1);
3700 
3701             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
3702             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
3703 
3704         }
3705         catch (RecognitionException re) {
3706             reportError(re);
3707             recover(input,re);
3708     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
3709 
3710         }
3711         finally {
3712         }
3713         return retval;
3714     }
3715     // $ANTLR end "quantified_in_predicate"
3716 
3717     public static class text_search_predicate_return extends ParserRuleReturnScope {
3718         Object tree;
3719         public Object getTree() { return tree; }
3720     };
3721 
3722     // $ANTLR start "text_search_predicate"
3723     // CmisBaseGrammar.g:232:1: text_search_predicate : CONTAINS LPAR ( qualifier COMMA )? text_search_expression RPAR -> ^( CONTAINS ( qualifier )? text_search_expression ) ;
3724     public final CmisQlExtParser_CmisBaseGrammar.text_search_predicate_return text_search_predicate() throws RecognitionException {
3725         CmisQlExtParser_CmisBaseGrammar.text_search_predicate_return retval = new CmisQlExtParser_CmisBaseGrammar.text_search_predicate_return();
3726         retval.start = input.LT(1);
3727 
3728         Object root_0 = null;
3729 
3730         Token CONTAINS127=null;
3731         Token LPAR128=null;
3732         Token COMMA130=null;
3733         Token RPAR132=null;
3734         CmisQlExtParser_CmisBaseGrammar.qualifier_return qualifier129 = null;
3735 
3736         CmisQlExtParser_CmisBaseGrammar.text_search_expression_return text_search_expression131 = null;
3737 
3738 
3739         Object CONTAINS127_tree=null;
3740         Object LPAR128_tree=null;
3741         Object COMMA130_tree=null;
3742         Object RPAR132_tree=null;
3743         RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
3744         RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
3745         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
3746         RewriteRuleTokenStream stream_CONTAINS=new RewriteRuleTokenStream(adaptor,"token CONTAINS");
3747         RewriteRuleSubtreeStream stream_text_search_expression=new RewriteRuleSubtreeStream(adaptor,"rule text_search_expression");
3748         RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
3749         try {
3750             // CmisBaseGrammar.g:232:23: ( CONTAINS LPAR ( qualifier COMMA )? text_search_expression RPAR -> ^( CONTAINS ( qualifier )? text_search_expression ) )
3751             // CmisBaseGrammar.g:233:5: CONTAINS LPAR ( qualifier COMMA )? text_search_expression RPAR
3752             {
3753             CONTAINS127=(Token)match(input,CONTAINS,FOLLOW_CONTAINS_in_text_search_predicate1441);  
3754             stream_CONTAINS.add(CONTAINS127);
3755 
3756             LPAR128=(Token)match(input,LPAR,FOLLOW_LPAR_in_text_search_predicate1443);  
3757             stream_LPAR.add(LPAR128);
3758 
3759             // CmisBaseGrammar.g:233:19: ( qualifier COMMA )?
3760             int alt29=2;
3761             switch ( input.LA(1) ) {
3762                 case ID:
3763                     {
3764                     alt29=1;
3765                     }
3766                     break;
3767             }
3768 
3769             switch (alt29) {
3770                 case 1 :
3771                     // CmisBaseGrammar.g:233:20: qualifier COMMA
3772                     {
3773                     pushFollow(FOLLOW_qualifier_in_text_search_predicate1446);
3774                     qualifier129=qualifier();
3775 
3776                     state._fsp--;
3777 
3778                     stream_qualifier.add(qualifier129.getTree());
3779                     COMMA130=(Token)match(input,COMMA,FOLLOW_COMMA_in_text_search_predicate1448);  
3780                     stream_COMMA.add(COMMA130);
3781 
3782 
3783                     }
3784                     break;
3785 
3786             }
3787 
3788             pushFollow(FOLLOW_text_search_expression_in_text_search_predicate1452);
3789             text_search_expression131=text_search_expression();
3790 
3791             state._fsp--;
3792 
3793             stream_text_search_expression.add(text_search_expression131.getTree());
3794             RPAR132=(Token)match(input,RPAR,FOLLOW_RPAR_in_text_search_predicate1454);  
3795             stream_RPAR.add(RPAR132);
3796 
3797 
3798 
3799             // AST REWRITE
3800             // elements: qualifier, text_search_expression, CONTAINS
3801             // token labels: 
3802             // rule labels: retval
3803             // token list labels: 
3804             // rule list labels: 
3805             // wildcard labels: 
3806             retval.tree = root_0;
3807             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
3808 
3809             root_0 = (Object)adaptor.nil();
3810             // 234:7: -> ^( CONTAINS ( qualifier )? text_search_expression )
3811             {
3812                 // CmisBaseGrammar.g:234:10: ^( CONTAINS ( qualifier )? text_search_expression )
3813                 {
3814                 Object root_1 = (Object)adaptor.nil();
3815                 root_1 = (Object)adaptor.becomeRoot(stream_CONTAINS.nextNode(), root_1);
3816 
3817                 // CmisBaseGrammar.g:234:21: ( qualifier )?
3818                 if ( stream_qualifier.hasNext() ) {
3819                     adaptor.addChild(root_1, stream_qualifier.nextTree());
3820 
3821                 }
3822                 stream_qualifier.reset();
3823                 adaptor.addChild(root_1, stream_text_search_expression.nextTree());
3824 
3825                 adaptor.addChild(root_0, root_1);
3826                 }
3827 
3828             }
3829 
3830             retval.tree = root_0;
3831             }
3832 
3833             retval.stop = input.LT(-1);
3834 
3835             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
3836             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
3837 
3838         }
3839         catch (RecognitionException re) {
3840             reportError(re);
3841             recover(input,re);
3842     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
3843 
3844         }
3845         finally {
3846         }
3847         return retval;
3848     }
3849     // $ANTLR end "text_search_predicate"
3850 
3851     public static class folder_predicate_return extends ParserRuleReturnScope {
3852         Object tree;
3853         public Object getTree() { return tree; }
3854     };
3855 
3856     // $ANTLR start "folder_predicate"
3857     // CmisBaseGrammar.g:242:1: folder_predicate : (f= IN_FOLDER | f= IN_TREE ) LPAR ( qualifier COMMA )? folder_id RPAR -> ^( $f ( qualifier )? folder_id ) ;
3858     public final CmisQlExtParser_CmisBaseGrammar.folder_predicate_return folder_predicate() throws RecognitionException {
3859         CmisQlExtParser_CmisBaseGrammar.folder_predicate_return retval = new CmisQlExtParser_CmisBaseGrammar.folder_predicate_return();
3860         retval.start = input.LT(1);
3861 
3862         Object root_0 = null;
3863 
3864         Token f=null;
3865         Token LPAR133=null;
3866         Token COMMA135=null;
3867         Token RPAR137=null;
3868         CmisQlExtParser_CmisBaseGrammar.qualifier_return qualifier134 = null;
3869 
3870         CmisQlExtParser_CmisBaseGrammar.folder_id_return folder_id136 = null;
3871 
3872 
3873         Object f_tree=null;
3874         Object LPAR133_tree=null;
3875         Object COMMA135_tree=null;
3876         Object RPAR137_tree=null;
3877         RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
3878         RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
3879         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
3880         RewriteRuleTokenStream stream_IN_TREE=new RewriteRuleTokenStream(adaptor,"token IN_TREE");
3881         RewriteRuleTokenStream stream_IN_FOLDER=new RewriteRuleTokenStream(adaptor,"token IN_FOLDER");
3882         RewriteRuleSubtreeStream stream_folder_id=new RewriteRuleSubtreeStream(adaptor,"rule folder_id");
3883         RewriteRuleSubtreeStream stream_qualifier=new RewriteRuleSubtreeStream(adaptor,"rule qualifier");
3884         try {
3885             // CmisBaseGrammar.g:242:17: ( (f= IN_FOLDER | f= IN_TREE ) LPAR ( qualifier COMMA )? folder_id RPAR -> ^( $f ( qualifier )? folder_id ) )
3886             // CmisBaseGrammar.g:243:5: (f= IN_FOLDER | f= IN_TREE ) LPAR ( qualifier COMMA )? folder_id RPAR
3887             {
3888             // CmisBaseGrammar.g:243:5: (f= IN_FOLDER | f= IN_TREE )
3889             int alt30=2;
3890             switch ( input.LA(1) ) {
3891             case IN_FOLDER:
3892                 {
3893                 alt30=1;
3894                 }
3895                 break;
3896             case IN_TREE:
3897                 {
3898                 alt30=2;
3899                 }
3900                 break;
3901             default:
3902                 NoViableAltException nvae =
3903                     new NoViableAltException("", 30, 0, input);
3904 
3905                 throw nvae;
3906             }
3907 
3908             switch (alt30) {
3909                 case 1 :
3910                     // CmisBaseGrammar.g:243:7: f= IN_FOLDER
3911                     {
3912                     f=(Token)match(input,IN_FOLDER,FOLLOW_IN_FOLDER_in_folder_predicate1497);  
3913                     stream_IN_FOLDER.add(f);
3914 
3915 
3916                     }
3917                     break;
3918                 case 2 :
3919                     // CmisBaseGrammar.g:243:21: f= IN_TREE
3920                     {
3921                     f=(Token)match(input,IN_TREE,FOLLOW_IN_TREE_in_folder_predicate1503);  
3922                     stream_IN_TREE.add(f);
3923 
3924 
3925                     }
3926                     break;
3927 
3928             }
3929 
3930             LPAR133=(Token)match(input,LPAR,FOLLOW_LPAR_in_folder_predicate1507);  
3931             stream_LPAR.add(LPAR133);
3932 
3933             // CmisBaseGrammar.g:243:38: ( qualifier COMMA )?
3934             int alt31=2;
3935             switch ( input.LA(1) ) {
3936                 case ID:
3937                     {
3938                     alt31=1;
3939                     }
3940                     break;
3941             }
3942 
3943             switch (alt31) {
3944                 case 1 :
3945                     // CmisBaseGrammar.g:243:39: qualifier COMMA
3946                     {
3947                     pushFollow(FOLLOW_qualifier_in_folder_predicate1510);
3948                     qualifier134=qualifier();
3949 
3950                     state._fsp--;
3951 
3952                     stream_qualifier.add(qualifier134.getTree());
3953                     COMMA135=(Token)match(input,COMMA,FOLLOW_COMMA_in_folder_predicate1512);  
3954                     stream_COMMA.add(COMMA135);
3955 
3956 
3957                     }
3958                     break;
3959 
3960             }
3961 
3962             pushFollow(FOLLOW_folder_id_in_folder_predicate1516);
3963             folder_id136=folder_id();
3964 
3965             state._fsp--;
3966 
3967             stream_folder_id.add(folder_id136.getTree());
3968             RPAR137=(Token)match(input,RPAR,FOLLOW_RPAR_in_folder_predicate1518);  
3969             stream_RPAR.add(RPAR137);
3970 
3971 
3972 
3973             // AST REWRITE
3974             // elements: folder_id, f, qualifier
3975             // token labels: f
3976             // rule labels: retval
3977             // token list labels: 
3978             // rule list labels: 
3979             // wildcard labels: 
3980             retval.tree = root_0;
3981             RewriteRuleTokenStream stream_f=new RewriteRuleTokenStream(adaptor,"token f",f);
3982             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
3983 
3984             root_0 = (Object)adaptor.nil();
3985             // 244:7: -> ^( $f ( qualifier )? folder_id )
3986             {
3987                 // CmisBaseGrammar.g:244:10: ^( $f ( qualifier )? folder_id )
3988                 {
3989                 Object root_1 = (Object)adaptor.nil();
3990                 root_1 = (Object)adaptor.becomeRoot(stream_f.nextNode(), root_1);
3991 
3992                 // CmisBaseGrammar.g:244:15: ( qualifier )?
3993                 if ( stream_qualifier.hasNext() ) {
3994                     adaptor.addChild(root_1, stream_qualifier.nextTree());
3995 
3996                 }
3997                 stream_qualifier.reset();
3998                 adaptor.addChild(root_1, stream_folder_id.nextTree());
3999 
4000                 adaptor.addChild(root_0, root_1);
4001                 }
4002 
4003             }
4004 
4005             retval.tree = root_0;
4006             }
4007 
4008             retval.stop = input.LT(-1);
4009 
4010             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
4011             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
4012 
4013         }
4014         catch (RecognitionException re) {
4015             reportError(re);
4016             recover(input,re);
4017     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
4018 
4019         }
4020         finally {
4021         }
4022         return retval;
4023     }
4024     // $ANTLR end "folder_predicate"
4025 
4026     public static class order_by_clause_return extends ParserRuleReturnScope {
4027         Object tree;
4028         public Object getTree() { return tree; }
4029     };
4030 
4031     // $ANTLR start "order_by_clause"
4032     // CmisBaseGrammar.g:247:1: order_by_clause : ORDER BY sort_specification ( COMMA sort_specification )* -> ^( ORDER_BY ( sort_specification )+ ) ;
4033     public final CmisQlExtParser_CmisBaseGrammar.order_by_clause_return order_by_clause() throws RecognitionException {
4034         CmisQlExtParser_CmisBaseGrammar.order_by_clause_return retval = new CmisQlExtParser_CmisBaseGrammar.order_by_clause_return();
4035         retval.start = input.LT(1);
4036 
4037         Object root_0 = null;
4038 
4039         Token ORDER138=null;
4040         Token BY139=null;
4041         Token COMMA141=null;
4042         CmisQlExtParser_CmisBaseGrammar.sort_specification_return sort_specification140 = null;
4043 
4044         CmisQlExtParser_CmisBaseGrammar.sort_specification_return sort_specification142 = null;
4045 
4046 
4047         Object ORDER138_tree=null;
4048         Object BY139_tree=null;
4049         Object COMMA141_tree=null;
4050         RewriteRuleTokenStream stream_BY=new RewriteRuleTokenStream(adaptor,"token BY");
4051         RewriteRuleTokenStream stream_ORDER=new RewriteRuleTokenStream(adaptor,"token ORDER");
4052         RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
4053         RewriteRuleSubtreeStream stream_sort_specification=new RewriteRuleSubtreeStream(adaptor,"rule sort_specification");
4054         try {
4055             // CmisBaseGrammar.g:247:16: ( ORDER BY sort_specification ( COMMA sort_specification )* -> ^( ORDER_BY ( sort_specification )+ ) )
4056             // CmisBaseGrammar.g:248:5: ORDER BY sort_specification ( COMMA sort_specification )*
4057             {
4058             ORDER138=(Token)match(input,ORDER,FOLLOW_ORDER_in_order_by_clause1552);  
4059             stream_ORDER.add(ORDER138);
4060 
4061             BY139=(Token)match(input,BY,FOLLOW_BY_in_order_by_clause1554);  
4062             stream_BY.add(BY139);
4063 
4064             pushFollow(FOLLOW_sort_specification_in_order_by_clause1556);
4065             sort_specification140=sort_specification();
4066 
4067             state._fsp--;
4068 
4069             stream_sort_specification.add(sort_specification140.getTree());
4070             // CmisBaseGrammar.g:248:33: ( COMMA sort_specification )*
4071             loop32:
4072             do {
4073                 int alt32=2;
4074                 switch ( input.LA(1) ) {
4075                 case COMMA:
4076                     {
4077                     alt32=1;
4078                     }
4079                     break;
4080 
4081                 }
4082 
4083                 switch (alt32) {
4084             	case 1 :
4085             	    // CmisBaseGrammar.g:248:35: COMMA sort_specification
4086             	    {
4087             	    COMMA141=(Token)match(input,COMMA,FOLLOW_COMMA_in_order_by_clause1560);  
4088             	    stream_COMMA.add(COMMA141);
4089 
4090             	    pushFollow(FOLLOW_sort_specification_in_order_by_clause1562);
4091             	    sort_specification142=sort_specification();
4092 
4093             	    state._fsp--;
4094 
4095             	    stream_sort_specification.add(sort_specification142.getTree());
4096 
4097             	    }
4098             	    break;
4099 
4100             	default :
4101             	    break loop32;
4102                 }
4103             } while (true);
4104 
4105 
4106 
4107             // AST REWRITE
4108             // elements: sort_specification
4109             // token labels: 
4110             // rule labels: retval
4111             // token list labels: 
4112             // rule list labels: 
4113             // wildcard labels: 
4114             retval.tree = root_0;
4115             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
4116 
4117             root_0 = (Object)adaptor.nil();
4118             // 249:7: -> ^( ORDER_BY ( sort_specification )+ )
4119             {
4120                 // CmisBaseGrammar.g:249:10: ^( ORDER_BY ( sort_specification )+ )
4121                 {
4122                 Object root_1 = (Object)adaptor.nil();
4123                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ORDER_BY, "ORDER_BY"), root_1);
4124 
4125                 if ( !(stream_sort_specification.hasNext()) ) {
4126                     throw new RewriteEarlyExitException();
4127                 }
4128                 while ( stream_sort_specification.hasNext() ) {
4129                     adaptor.addChild(root_1, stream_sort_specification.nextTree());
4130 
4131                 }
4132                 stream_sort_specification.reset();
4133 
4134                 adaptor.addChild(root_0, root_1);
4135                 }
4136 
4137             }
4138 
4139             retval.tree = root_0;
4140             }
4141 
4142             retval.stop = input.LT(-1);
4143 
4144             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
4145             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
4146 
4147         }
4148         catch (RecognitionException re) {
4149             reportError(re);
4150             recover(input,re);
4151     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
4152 
4153         }
4154         finally {
4155         }
4156         return retval;
4157     }
4158     // $ANTLR end "order_by_clause"
4159 
4160     public static class sort_specification_return extends ParserRuleReturnScope {
4161         Object tree;
4162         public Object getTree() { return tree; }
4163     };
4164 
4165     // $ANTLR start "sort_specification"
4166     // CmisBaseGrammar.g:252:1: sort_specification : ( column_reference -> column_reference ASC | column_reference ( ASC | DESC ) );
4167     public final CmisQlExtParser_CmisBaseGrammar.sort_specification_return sort_specification() throws RecognitionException {
4168         CmisQlExtParser_CmisBaseGrammar.sort_specification_return retval = new CmisQlExtParser_CmisBaseGrammar.sort_specification_return();
4169         retval.start = input.LT(1);
4170 
4171         Object root_0 = null;
4172 
4173         Token set145=null;
4174         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference143 = null;
4175 
4176         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference144 = null;
4177 
4178 
4179         Object set145_tree=null;
4180         RewriteRuleSubtreeStream stream_column_reference=new RewriteRuleSubtreeStream(adaptor,"rule column_reference");
4181         try {
4182             // CmisBaseGrammar.g:252:19: ( column_reference -> column_reference ASC | column_reference ( ASC | DESC ) )
4183             int alt33=2;
4184             switch ( input.LA(1) ) {
4185             case ID:
4186                 {
4187                 switch ( input.LA(2) ) {
4188                 case DOT:
4189                     {
4190                     switch ( input.LA(3) ) {
4191                     case ID:
4192                         {
4193                         switch ( input.LA(4) ) {
4194                         case EOF:
4195                         case COMMA:
4196                             {
4197                             alt33=1;
4198                             }
4199                             break;
4200                         case ASC:
4201                         case DESC:
4202                             {
4203                             alt33=2;
4204                             }
4205                             break;
4206                         default:
4207                             NoViableAltException nvae =
4208                                 new NoViableAltException("", 33, 5, input);
4209 
4210                             throw nvae;
4211                         }
4212 
4213                         }
4214                         break;
4215                     default:
4216                         NoViableAltException nvae =
4217                             new NoViableAltException("", 33, 2, input);
4218 
4219                         throw nvae;
4220                     }
4221 
4222                     }
4223                     break;
4224                 case EOF:
4225                 case COMMA:
4226                     {
4227                     alt33=1;
4228                     }
4229                     break;
4230                 case ASC:
4231                 case DESC:
4232                     {
4233                     alt33=2;
4234                     }
4235                     break;
4236                 default:
4237                     NoViableAltException nvae =
4238                         new NoViableAltException("", 33, 1, input);
4239 
4240                     throw nvae;
4241                 }
4242 
4243                 }
4244                 break;
4245             default:
4246                 NoViableAltException nvae =
4247                     new NoViableAltException("", 33, 0, input);
4248 
4249                 throw nvae;
4250             }
4251 
4252             switch (alt33) {
4253                 case 1 :
4254                     // CmisBaseGrammar.g:253:7: column_reference
4255                     {
4256                     pushFollow(FOLLOW_column_reference_in_sort_specification1598);
4257                     column_reference143=column_reference();
4258 
4259                     state._fsp--;
4260 
4261                     stream_column_reference.add(column_reference143.getTree());
4262 
4263 
4264                     // AST REWRITE
4265                     // elements: column_reference
4266                     // token labels: 
4267                     // rule labels: retval
4268                     // token list labels: 
4269                     // rule list labels: 
4270                     // wildcard labels: 
4271                     retval.tree = root_0;
4272                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
4273 
4274                     root_0 = (Object)adaptor.nil();
4275                     // 253:24: -> column_reference ASC
4276                     {
4277                         adaptor.addChild(root_0, stream_column_reference.nextTree());
4278                         adaptor.addChild(root_0, (Object)adaptor.create(ASC, "ASC"));
4279 
4280                     }
4281 
4282                     retval.tree = root_0;
4283                     }
4284                     break;
4285                 case 2 :
4286                     // CmisBaseGrammar.g:254:7: column_reference ( ASC | DESC )
4287                     {
4288                     root_0 = (Object)adaptor.nil();
4289 
4290                     pushFollow(FOLLOW_column_reference_in_sort_specification1612);
4291                     column_reference144=column_reference();
4292 
4293                     state._fsp--;
4294 
4295                     adaptor.addChild(root_0, column_reference144.getTree());
4296                     set145=(Token)input.LT(1);
4297                     if ( (input.LA(1)>=ASC && input.LA(1)<=DESC) ) {
4298                         input.consume();
4299                         adaptor.addChild(root_0, (Object)adaptor.create(set145));
4300                         state.errorRecovery=false;
4301                     }
4302                     else {
4303                         MismatchedSetException mse = new MismatchedSetException(null,input);
4304                         throw mse;
4305                     }
4306 
4307 
4308                     }
4309                     break;
4310 
4311             }
4312             retval.stop = input.LT(-1);
4313 
4314             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
4315             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
4316 
4317         }
4318         catch (RecognitionException re) {
4319             reportError(re);
4320             recover(input,re);
4321     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
4322 
4323         }
4324         finally {
4325         }
4326         return retval;
4327     }
4328     // $ANTLR end "sort_specification"
4329 
4330     public static class correlation_name_return extends ParserRuleReturnScope {
4331         Object tree;
4332         public Object getTree() { return tree; }
4333     };
4334 
4335     // $ANTLR start "correlation_name"
4336     // CmisBaseGrammar.g:257:1: correlation_name : ID ;
4337     public final CmisQlExtParser_CmisBaseGrammar.correlation_name_return correlation_name() throws RecognitionException {
4338         CmisQlExtParser_CmisBaseGrammar.correlation_name_return retval = new CmisQlExtParser_CmisBaseGrammar.correlation_name_return();
4339         retval.start = input.LT(1);
4340 
4341         Object root_0 = null;
4342 
4343         Token ID146=null;
4344 
4345         Object ID146_tree=null;
4346 
4347         try {
4348             // CmisBaseGrammar.g:257:17: ( ID )
4349             // CmisBaseGrammar.g:258:5: ID
4350             {
4351             root_0 = (Object)adaptor.nil();
4352 
4353             ID146=(Token)match(input,ID,FOLLOW_ID_in_correlation_name1638); 
4354             ID146_tree = (Object)adaptor.create(ID146);
4355             adaptor.addChild(root_0, ID146_tree);
4356 
4357 
4358             }
4359 
4360             retval.stop = input.LT(-1);
4361 
4362             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
4363             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
4364 
4365         }
4366         catch (RecognitionException re) {
4367             reportError(re);
4368             recover(input,re);
4369     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
4370 
4371         }
4372         finally {
4373         }
4374         return retval;
4375     }
4376     // $ANTLR end "correlation_name"
4377 
4378     public static class table_name_return extends ParserRuleReturnScope {
4379         Object tree;
4380         public Object getTree() { return tree; }
4381     };
4382 
4383     // $ANTLR start "table_name"
4384     // CmisBaseGrammar.g:260:1: table_name : ID ;
4385     public final CmisQlExtParser_CmisBaseGrammar.table_name_return table_name() throws RecognitionException {
4386         CmisQlExtParser_CmisBaseGrammar.table_name_return retval = new CmisQlExtParser_CmisBaseGrammar.table_name_return();
4387         retval.start = input.LT(1);
4388 
4389         Object root_0 = null;
4390 
4391         Token ID147=null;
4392 
4393         Object ID147_tree=null;
4394 
4395         try {
4396             // CmisBaseGrammar.g:260:11: ( ID )
4397             // CmisBaseGrammar.g:261:5: ID
4398             {
4399             root_0 = (Object)adaptor.nil();
4400 
4401             ID147=(Token)match(input,ID,FOLLOW_ID_in_table_name1649); 
4402             ID147_tree = (Object)adaptor.create(ID147);
4403             adaptor.addChild(root_0, ID147_tree);
4404 
4405 
4406             }
4407 
4408             retval.stop = input.LT(-1);
4409 
4410             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
4411             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
4412 
4413         }
4414         catch (RecognitionException re) {
4415             reportError(re);
4416             recover(input,re);
4417     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
4418 
4419         }
4420         finally {
4421         }
4422         return retval;
4423     }
4424     // $ANTLR end "table_name"
4425 
4426     public static class column_name_return extends ParserRuleReturnScope {
4427         Object tree;
4428         public Object getTree() { return tree; }
4429     };
4430 
4431     // $ANTLR start "column_name"
4432     // CmisBaseGrammar.g:263:1: column_name : ID ;
4433     public final CmisQlExtParser_CmisBaseGrammar.column_name_return column_name() throws RecognitionException {
4434         CmisQlExtParser_CmisBaseGrammar.column_name_return retval = new CmisQlExtParser_CmisBaseGrammar.column_name_return();
4435         retval.start = input.LT(1);
4436 
4437         Object root_0 = null;
4438 
4439         Token ID148=null;
4440 
4441         Object ID148_tree=null;
4442 
4443         try {
4444             // CmisBaseGrammar.g:263:12: ( ID )
4445             // CmisBaseGrammar.g:264:5: ID
4446             {
4447             root_0 = (Object)adaptor.nil();
4448 
4449             ID148=(Token)match(input,ID,FOLLOW_ID_in_column_name1660); 
4450             ID148_tree = (Object)adaptor.create(ID148);
4451             adaptor.addChild(root_0, ID148_tree);
4452 
4453 
4454             }
4455 
4456             retval.stop = input.LT(-1);
4457 
4458             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
4459             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
4460 
4461         }
4462         catch (RecognitionException re) {
4463             reportError(re);
4464             recover(input,re);
4465     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
4466 
4467         }
4468         finally {
4469         }
4470         return retval;
4471     }
4472     // $ANTLR end "column_name"
4473 
4474     public static class multi_valued_column_name_return extends ParserRuleReturnScope {
4475         Object tree;
4476         public Object getTree() { return tree; }
4477     };
4478 
4479     // $ANTLR start "multi_valued_column_name"
4480     // CmisBaseGrammar.g:266:1: multi_valued_column_name : ID ;
4481     public final CmisQlExtParser_CmisBaseGrammar.multi_valued_column_name_return multi_valued_column_name() throws RecognitionException {
4482         CmisQlExtParser_CmisBaseGrammar.multi_valued_column_name_return retval = new CmisQlExtParser_CmisBaseGrammar.multi_valued_column_name_return();
4483         retval.start = input.LT(1);
4484 
4485         Object root_0 = null;
4486 
4487         Token ID149=null;
4488 
4489         Object ID149_tree=null;
4490 
4491         try {
4492             // CmisBaseGrammar.g:266:25: ( ID )
4493             // CmisBaseGrammar.g:267:5: ID
4494             {
4495             root_0 = (Object)adaptor.nil();
4496 
4497             ID149=(Token)match(input,ID,FOLLOW_ID_in_multi_valued_column_name1671); 
4498             ID149_tree = (Object)adaptor.create(ID149);
4499             adaptor.addChild(root_0, ID149_tree);
4500 
4501 
4502             }
4503 
4504             retval.stop = input.LT(-1);
4505 
4506             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
4507             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
4508 
4509         }
4510         catch (RecognitionException re) {
4511             reportError(re);
4512             recover(input,re);
4513     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
4514 
4515         }
4516         finally {
4517         }
4518         return retval;
4519     }
4520     // $ANTLR end "multi_valued_column_name"
4521 
4522     public static class folder_id_return extends ParserRuleReturnScope {
4523         Object tree;
4524         public Object getTree() { return tree; }
4525     };
4526 
4527     // $ANTLR start "folder_id"
4528     // CmisBaseGrammar.g:269:1: folder_id : STRING_LIT ;
4529     public final CmisQlExtParser_CmisBaseGrammar.folder_id_return folder_id() throws RecognitionException {
4530         CmisQlExtParser_CmisBaseGrammar.folder_id_return retval = new CmisQlExtParser_CmisBaseGrammar.folder_id_return();
4531         retval.start = input.LT(1);
4532 
4533         Object root_0 = null;
4534 
4535         Token STRING_LIT150=null;
4536 
4537         Object STRING_LIT150_tree=null;
4538 
4539         try {
4540             // CmisBaseGrammar.g:269:10: ( STRING_LIT )
4541             // CmisBaseGrammar.g:270:5: STRING_LIT
4542             {
4543             root_0 = (Object)adaptor.nil();
4544 
4545             STRING_LIT150=(Token)match(input,STRING_LIT,FOLLOW_STRING_LIT_in_folder_id1682); 
4546             STRING_LIT150_tree = (Object)adaptor.create(STRING_LIT150);
4547             adaptor.addChild(root_0, STRING_LIT150_tree);
4548 
4549 
4550             }
4551 
4552             retval.stop = input.LT(-1);
4553 
4554             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
4555             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
4556 
4557         }
4558         catch (RecognitionException re) {
4559             reportError(re);
4560             recover(input,re);
4561     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
4562 
4563         }
4564         finally {
4565         }
4566         return retval;
4567     }
4568     // $ANTLR end "folder_id"
4569 
4570     public static class text_search_expression_return extends ParserRuleReturnScope {
4571         Object tree;
4572         public Object getTree() { return tree; }
4573     };
4574 
4575     // $ANTLR start "text_search_expression"
4576     // CmisBaseGrammar.g:272:1: text_search_expression : STRING_LIT ;
4577     public final CmisQlExtParser_CmisBaseGrammar.text_search_expression_return text_search_expression() throws RecognitionException {
4578         CmisQlExtParser_CmisBaseGrammar.text_search_expression_return retval = new CmisQlExtParser_CmisBaseGrammar.text_search_expression_return();
4579         retval.start = input.LT(1);
4580 
4581         Object root_0 = null;
4582 
4583         Token STRING_LIT151=null;
4584 
4585         Object STRING_LIT151_tree=null;
4586 
4587         try {
4588             // CmisBaseGrammar.g:272:23: ( STRING_LIT )
4589             // CmisBaseGrammar.g:273:5: STRING_LIT
4590             {
4591             root_0 = (Object)adaptor.nil();
4592 
4593             STRING_LIT151=(Token)match(input,STRING_LIT,FOLLOW_STRING_LIT_in_text_search_expression1693); 
4594             STRING_LIT151_tree = (Object)adaptor.create(STRING_LIT151);
4595             adaptor.addChild(root_0, STRING_LIT151_tree);
4596 
4597 
4598             }
4599 
4600             retval.stop = input.LT(-1);
4601 
4602             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
4603             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
4604 
4605         }
4606         catch (RecognitionException re) {
4607             reportError(re);
4608             recover(input,re);
4609     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
4610 
4611         }
4612         finally {
4613         }
4614         return retval;
4615     }
4616     // $ANTLR end "text_search_expression"
4617 
4618     // Delegated rules
4619 
4620 
4621     protected DFA22 dfa22 = new DFA22(this);
4622     protected DFA23 dfa23 = new DFA23(this);
4623     static final String DFA22_eotS =
4624         "\15\uffff";
4625     static final String DFA22_eofS =
4626         "\15\uffff";
4627     static final String DFA22_minS =
4628         "\1\45\1\36\5\uffff\1\104\1\uffff\1\43\2\uffff\1\36";
4629     static final String DFA22_maxS =
4630         "\1\104\1\65\5\uffff\1\104\1\uffff\1\44\2\uffff\1\65";
4631     static final String DFA22_acceptS =
4632         "\2\uffff\1\1\1\5\1\6\1\7\1\10\1\uffff\1\2\1\uffff\1\3\1\4\1\uffff";
4633     static final String DFA22_specialS =
4634         "\15\uffff}>";
4635     static final String[] DFA22_transitionS = {
4636             "\1\4\1\5\1\2\2\6\14\uffff\1\3\4\uffff\1\3\5\uffff\1\3\1\uffff"+
4637             "\1\3\1\1",
4638             "\1\13\3\uffff\1\11\1\10\1\12\7\uffff\1\2\2\uffff\1\7\6\2",
4639             "",
4640             "",
4641             "",
4642             "",
4643             "",
4644             "\1\14",
4645             "",
4646             "\1\10\1\12",
4647             "",
4648             "",
4649             "\1\13\3\uffff\1\11\1\10\1\12\13\uffff\6\2"
4650     };
4651 
4652     static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS);
4653     static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS);
4654     static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS);
4655     static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS);
4656     static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS);
4657     static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS);
4658     static final short[][] DFA22_transition;
4659 
4660     static {
4661         int numStates = DFA22_transitionS.length;
4662         DFA22_transition = new short[numStates][];
4663         for (int i=0; i<numStates; i++) {
4664             DFA22_transition[i] = DFA.unpackEncodedString(DFA22_transitionS[i]);
4665         }
4666     }
4667 
4668     class DFA22 extends DFA {
4669 
4670         public DFA22(BaseRecognizer recognizer) {
4671             this.recognizer = recognizer;
4672             this.decisionNumber = 22;
4673             this.eot = DFA22_eot;
4674             this.eof = DFA22_eof;
4675             this.min = DFA22_min;
4676             this.max = DFA22_max;
4677             this.accept = DFA22_accept;
4678             this.special = DFA22_special;
4679             this.transition = DFA22_transition;
4680         }
4681         public String getDescription() {
4682             return "157:1: predicate : ( comparison_predicate | in_predicate | like_predicate | null_predicate | quantified_comparison_predicate | quantified_in_predicate | text_search_predicate | folder_predicate );";
4683         }
4684     }
4685     static final String DFA23_eotS =
4686         "\22\uffff";
4687     static final String DFA23_eofS =
4688         "\22\uffff";
4689     static final String DFA23_minS =
4690         "\1\47\2\54\2\104\6\uffff\2\55\2\60\1\104\1\60\1\55";
4691     static final String DFA23_maxS =
4692         "\1\104\1\65\1\54\2\104\6\uffff\1\55\1\57\2\65\1\104\1\65\1\55";
4693     static final String DFA23_acceptS =
4694         "\5\uffff\1\1\1\2\1\3\1\4\1\5\1\6\7\uffff";
4695     static final String DFA23_specialS =
4696         "\22\uffff}>";
4697     static final String[] DFA23_transitionS = {
4698             "\1\2\34\uffff\1\1",
4699             "\1\3\2\uffff\1\4\1\5\1\6\1\7\1\10\1\11\1\12",
4700             "\1\13",
4701             "\1\14",
4702             "\1\15",
4703             "",
4704             "",
4705             "",
4706             "",
4707             "",
4708             "",
4709             "\1\16",
4710             "\1\20\1\uffff\1\17",
4711             "\1\5\1\6\1\7\1\10\1\11\1\12",
4712             "\1\5\1\6\1\7\1\10\1\11\1\12",
4713             "\1\21",
4714             "\1\5\1\6\1\7\1\10\1\11\1\12",
4715             "\1\20"
4716     };
4717 
4718     static final short[] DFA23_eot = DFA.unpackEncodedString(DFA23_eotS);
4719     static final short[] DFA23_eof = DFA.unpackEncodedString(DFA23_eofS);
4720     static final char[] DFA23_min = DFA.unpackEncodedStringToUnsignedChars(DFA23_minS);
4721     static final char[] DFA23_max = DFA.unpackEncodedStringToUnsignedChars(DFA23_maxS);
4722     static final short[] DFA23_accept = DFA.unpackEncodedString(DFA23_acceptS);
4723     static final short[] DFA23_special = DFA.unpackEncodedString(DFA23_specialS);
4724     static final short[][] DFA23_transition;
4725 
4726     static {
4727         int numStates = DFA23_transitionS.length;
4728         DFA23_transition = new short[numStates][];
4729         for (int i=0; i<numStates; i++) {
4730             DFA23_transition[i] = DFA.unpackEncodedString(DFA23_transitionS[i]);
4731         }
4732     }
4733 
4734     class DFA23 extends DFA {
4735 
4736         public DFA23(BaseRecognizer recognizer) {
4737             this.recognizer = recognizer;
4738             this.decisionNumber = 23;
4739             this.eot = DFA23_eot;
4740             this.eof = DFA23_eof;
4741             this.min = DFA23_min;
4742             this.max = DFA23_max;
4743             this.accept = DFA23_accept;
4744             this.special = DFA23_special;
4745             this.transition = DFA23_transition;
4746         }
4747         public String getDescription() {
4748             return "168:1: comparison_predicate : ( value_expression EQ literal -> ^( EQ value_expression literal ) | value_expression NEQ literal -> ^( NEQ value_expression literal ) | value_expression LT literal -> ^( LT value_expression literal ) | value_expression GT literal -> ^( GT value_expression literal ) | value_expression LTEQ literal -> ^( LTEQ value_expression literal ) | value_expression GTEQ literal -> ^( GTEQ value_expression literal ) );";
4749         }
4750     }
4751  
4752 
4753     public static final BitSet FOLLOW_STAR_in_select_list99 = new BitSet(new long[]{0x0000000000000002L});
4754     public static final BitSet FOLLOW_select_sublist_in_select_list107 = new BitSet(new long[]{0x0000400000000002L});
4755     public static final BitSet FOLLOW_COMMA_in_select_list111 = new BitSet(new long[]{0x0000008000000000L,0x0000000000000010L});
4756     public static final BitSet FOLLOW_select_sublist_in_select_list113 = new BitSet(new long[]{0x0000400000000002L});
4757     public static final BitSet FOLLOW_value_expression_in_select_sublist148 = new BitSet(new long[]{0x0000000000040002L,0x0000000000000010L});
4758     public static final BitSet FOLLOW_AS_in_select_sublist152 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
4759     public static final BitSet FOLLOW_column_name_in_select_sublist156 = new BitSet(new long[]{0x0000000000000002L});
4760     public static final BitSet FOLLOW_qualifier_in_select_sublist167 = new BitSet(new long[]{0x0000800000000000L});
4761     public static final BitSet FOLLOW_DOT_in_select_sublist169 = new BitSet(new long[]{0x0000080000000000L});
4762     public static final BitSet FOLLOW_STAR_in_select_sublist171 = new BitSet(new long[]{0x0000000000000002L});
4763     public static final BitSet FOLLOW_qualifier_in_column_reference220 = new BitSet(new long[]{0x0000800000000000L});
4764     public static final BitSet FOLLOW_DOT_in_column_reference222 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
4765     public static final BitSet FOLLOW_column_name_in_column_reference227 = new BitSet(new long[]{0x0000000000000002L});
4766     public static final BitSet FOLLOW_qualifier_in_multi_valued_column_reference262 = new BitSet(new long[]{0x0000800000000000L});
4767     public static final BitSet FOLLOW_DOT_in_multi_valued_column_reference264 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
4768     public static final BitSet FOLLOW_multi_valued_column_name_in_multi_valued_column_reference269 = new BitSet(new long[]{0x0000000000000002L});
4769     public static final BitSet FOLLOW_SCORE_in_numeric_value_function302 = new BitSet(new long[]{0x0000100000000000L});
4770     public static final BitSet FOLLOW_LPAR_in_numeric_value_function304 = new BitSet(new long[]{0x0000200000000000L});
4771     public static final BitSet FOLLOW_RPAR_in_numeric_value_function306 = new BitSet(new long[]{0x0000000000000002L});
4772     public static final BitSet FOLLOW_table_name_in_qualifier325 = new BitSet(new long[]{0x0000000000000002L});
4773     public static final BitSet FOLLOW_FROM_in_from_clause342 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000010L});
4774     public static final BitSet FOLLOW_table_reference_in_from_clause345 = new BitSet(new long[]{0x0000000000000002L});
4775     public static final BitSet FOLLOW_one_table_in_table_reference356 = new BitSet(new long[]{0x0000000000D80002L});
4776     public static final BitSet FOLLOW_table_join_in_table_reference358 = new BitSet(new long[]{0x0000000000D80002L});
4777     public static final BitSet FOLLOW_join_kind_in_table_join375 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000010L});
4778     public static final BitSet FOLLOW_one_table_in_table_join377 = new BitSet(new long[]{0x0000000001000002L});
4779     public static final BitSet FOLLOW_join_specification_in_table_join379 = new BitSet(new long[]{0x0000000000000002L});
4780     public static final BitSet FOLLOW_LPAR_in_one_table415 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000010L});
4781     public static final BitSet FOLLOW_table_reference_in_one_table418 = new BitSet(new long[]{0x0000200000000000L});
4782     public static final BitSet FOLLOW_RPAR_in_one_table420 = new BitSet(new long[]{0x0000000000000002L});
4783     public static final BitSet FOLLOW_table_name_in_one_table429 = new BitSet(new long[]{0x0000000000000002L});
4784     public static final BitSet FOLLOW_table_name_in_one_table453 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000010L});
4785     public static final BitSet FOLLOW_AS_in_one_table455 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000010L});
4786     public static final BitSet FOLLOW_correlation_name_in_one_table458 = new BitSet(new long[]{0x0000000000000002L});
4787     public static final BitSet FOLLOW_JOIN_in_join_kind494 = new BitSet(new long[]{0x0000000000000002L});
4788     public static final BitSet FOLLOW_INNER_in_join_kind514 = new BitSet(new long[]{0x0000000000080000L});
4789     public static final BitSet FOLLOW_JOIN_in_join_kind516 = new BitSet(new long[]{0x0000000000000002L});
4790     public static final BitSet FOLLOW_LEFT_in_join_kind536 = new BitSet(new long[]{0x0000000000280000L});
4791     public static final BitSet FOLLOW_OUTER_in_join_kind538 = new BitSet(new long[]{0x0000000000080000L});
4792     public static final BitSet FOLLOW_JOIN_in_join_kind541 = new BitSet(new long[]{0x0000000000000002L});
4793     public static final BitSet FOLLOW_RIGHT_in_join_kind561 = new BitSet(new long[]{0x0000000000280000L});
4794     public static final BitSet FOLLOW_OUTER_in_join_kind563 = new BitSet(new long[]{0x0000000000080000L});
4795     public static final BitSet FOLLOW_JOIN_in_join_kind566 = new BitSet(new long[]{0x0000000000000002L});
4796     public static final BitSet FOLLOW_ON_in_join_specification594 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
4797     public static final BitSet FOLLOW_column_reference_in_join_specification597 = new BitSet(new long[]{0x0001000000000000L});
4798     public static final BitSet FOLLOW_EQ_in_join_specification599 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
4799     public static final BitSet FOLLOW_column_reference_in_join_specification601 = new BitSet(new long[]{0x0000000000000002L});
4800     public static final BitSet FOLLOW_WHERE_in_where_clause616 = new BitSet(new long[]{0x084013E400000000L,0x000000000000001AL});
4801     public static final BitSet FOLLOW_search_condition_in_where_clause619 = new BitSet(new long[]{0x0000000000000002L});
4802     public static final BitSet FOLLOW_boolean_term_in_search_condition630 = new BitSet(new long[]{0x0000000200000002L});
4803     public static final BitSet FOLLOW_OR_in_search_condition633 = new BitSet(new long[]{0x084013E400000000L,0x000000000000001AL});
4804     public static final BitSet FOLLOW_boolean_term_in_search_condition636 = new BitSet(new long[]{0x0000000200000002L});
4805     public static final BitSet FOLLOW_boolean_factor_in_boolean_term649 = new BitSet(new long[]{0x0000000100000002L});
4806     public static final BitSet FOLLOW_AND_in_boolean_term652 = new BitSet(new long[]{0x084013E400000000L,0x000000000000001AL});
4807     public static final BitSet FOLLOW_boolean_factor_in_boolean_term655 = new BitSet(new long[]{0x0000000100000002L});
4808     public static final BitSet FOLLOW_NOT_in_boolean_factor668 = new BitSet(new long[]{0x084013E400000000L,0x000000000000001AL});
4809     public static final BitSet FOLLOW_boolean_test_in_boolean_factor671 = new BitSet(new long[]{0x0000000000000002L});
4810     public static final BitSet FOLLOW_boolean_test_in_boolean_factor679 = new BitSet(new long[]{0x0000000000000002L});
4811     public static final BitSet FOLLOW_predicate_in_boolean_test695 = new BitSet(new long[]{0x0000000000000002L});
4812     public static final BitSet FOLLOW_LPAR_in_boolean_test703 = new BitSet(new long[]{0x084013E400000000L,0x000000000000001AL});
4813     public static final BitSet FOLLOW_search_condition_in_boolean_test705 = new BitSet(new long[]{0x0000200000000000L});
4814     public static final BitSet FOLLOW_RPAR_in_boolean_test707 = new BitSet(new long[]{0x0000000000000002L});
4815     public static final BitSet FOLLOW_comparison_predicate_in_predicate729 = new BitSet(new long[]{0x0000000000000002L});
4816     public static final BitSet FOLLOW_in_predicate_in_predicate737 = new BitSet(new long[]{0x0000000000000002L});
4817     public static final BitSet FOLLOW_like_predicate_in_predicate745 = new BitSet(new long[]{0x0000000000000002L});
4818     public static final BitSet FOLLOW_null_predicate_in_predicate753 = new BitSet(new long[]{0x0000000000000002L});
4819     public static final BitSet FOLLOW_quantified_comparison_predicate_in_predicate761 = new BitSet(new long[]{0x0000000000000002L});
4820     public static final BitSet FOLLOW_quantified_in_predicate_in_predicate769 = new BitSet(new long[]{0x0000000000000002L});
4821     public static final BitSet FOLLOW_text_search_predicate_in_predicate777 = new BitSet(new long[]{0x0000000000000002L});
4822     public static final BitSet FOLLOW_folder_predicate_in_predicate785 = new BitSet(new long[]{0x0000000000000002L});
4823     public static final BitSet FOLLOW_value_expression_in_comparison_predicate801 = new BitSet(new long[]{0x0001000000000000L});
4824     public static final BitSet FOLLOW_EQ_in_comparison_predicate803 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4825     public static final BitSet FOLLOW_literal_in_comparison_predicate805 = new BitSet(new long[]{0x0000000000000002L});
4826     public static final BitSet FOLLOW_value_expression_in_comparison_predicate829 = new BitSet(new long[]{0x0002000000000000L});
4827     public static final BitSet FOLLOW_NEQ_in_comparison_predicate831 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4828     public static final BitSet FOLLOW_literal_in_comparison_predicate833 = new BitSet(new long[]{0x0000000000000002L});
4829     public static final BitSet FOLLOW_value_expression_in_comparison_predicate857 = new BitSet(new long[]{0x0004000000000000L});
4830     public static final BitSet FOLLOW_LT_in_comparison_predicate859 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4831     public static final BitSet FOLLOW_literal_in_comparison_predicate861 = new BitSet(new long[]{0x0000000000000002L});
4832     public static final BitSet FOLLOW_value_expression_in_comparison_predicate885 = new BitSet(new long[]{0x0008000000000000L});
4833     public static final BitSet FOLLOW_GT_in_comparison_predicate887 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4834     public static final BitSet FOLLOW_literal_in_comparison_predicate889 = new BitSet(new long[]{0x0000000000000002L});
4835     public static final BitSet FOLLOW_value_expression_in_comparison_predicate913 = new BitSet(new long[]{0x0010000000000000L});
4836     public static final BitSet FOLLOW_LTEQ_in_comparison_predicate915 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4837     public static final BitSet FOLLOW_literal_in_comparison_predicate917 = new BitSet(new long[]{0x0000000000000002L});
4838     public static final BitSet FOLLOW_value_expression_in_comparison_predicate941 = new BitSet(new long[]{0x0020000000000000L});
4839     public static final BitSet FOLLOW_GTEQ_in_comparison_predicate943 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4840     public static final BitSet FOLLOW_literal_in_comparison_predicate945 = new BitSet(new long[]{0x0000000000000002L});
4841     public static final BitSet FOLLOW_set_in_literal0 = new BitSet(new long[]{0x0000000000000002L});
4842     public static final BitSet FOLLOW_column_reference_in_in_predicate1021 = new BitSet(new long[]{0x0000000800000000L});
4843     public static final BitSet FOLLOW_IN_in_in_predicate1023 = new BitSet(new long[]{0x0000100000000000L});
4844     public static final BitSet FOLLOW_LPAR_in_in_predicate1025 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4845     public static final BitSet FOLLOW_in_value_list_in_in_predicate1027 = new BitSet(new long[]{0x0000200000000000L});
4846     public static final BitSet FOLLOW_RPAR_in_in_predicate1029 = new BitSet(new long[]{0x0000000000000002L});
4847     public static final BitSet FOLLOW_column_reference_in_in_predicate1055 = new BitSet(new long[]{0x0000000400000000L});
4848     public static final BitSet FOLLOW_NOT_in_in_predicate1057 = new BitSet(new long[]{0x0000000800000000L});
4849     public static final BitSet FOLLOW_IN_in_in_predicate1059 = new BitSet(new long[]{0x0000100000000000L});
4850     public static final BitSet FOLLOW_LPAR_in_in_predicate1061 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4851     public static final BitSet FOLLOW_in_value_list_in_in_predicate1063 = new BitSet(new long[]{0x0000200000000000L});
4852     public static final BitSet FOLLOW_RPAR_in_in_predicate1065 = new BitSet(new long[]{0x0000000000000002L});
4853     public static final BitSet FOLLOW_literal_in_in_value_list1099 = new BitSet(new long[]{0x0000400000000002L});
4854     public static final BitSet FOLLOW_COMMA_in_in_value_list1103 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4855     public static final BitSet FOLLOW_literal_in_in_value_list1105 = new BitSet(new long[]{0x0000400000000002L});
4856     public static final BitSet FOLLOW_column_reference_in_like_predicate1141 = new BitSet(new long[]{0x0000001000000000L});
4857     public static final BitSet FOLLOW_LIKE_in_like_predicate1143 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
4858     public static final BitSet FOLLOW_STRING_LIT_in_like_predicate1145 = new BitSet(new long[]{0x0000000000000002L});
4859     public static final BitSet FOLLOW_column_reference_in_like_predicate1171 = new BitSet(new long[]{0x0000000400000000L});
4860     public static final BitSet FOLLOW_NOT_in_like_predicate1173 = new BitSet(new long[]{0x0000001000000000L});
4861     public static final BitSet FOLLOW_LIKE_in_like_predicate1175 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
4862     public static final BitSet FOLLOW_STRING_LIT_in_like_predicate1177 = new BitSet(new long[]{0x0000000000000002L});
4863     public static final BitSet FOLLOW_column_reference_in_null_predicate1221 = new BitSet(new long[]{0x0000000040000000L});
4864     public static final BitSet FOLLOW_IS_in_null_predicate1223 = new BitSet(new long[]{0x0000000480000000L});
4865     public static final BitSet FOLLOW_NOT_in_null_predicate1233 = new BitSet(new long[]{0x0000000080000000L});
4866     public static final BitSet FOLLOW_NULL_in_null_predicate1235 = new BitSet(new long[]{0x0000000000000002L});
4867     public static final BitSet FOLLOW_NULL_in_null_predicate1253 = new BitSet(new long[]{0x0000000000000002L});
4868     public static final BitSet FOLLOW_ANY_in_quantified_in_predicate1331 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
4869     public static final BitSet FOLLOW_multi_valued_column_reference_in_quantified_in_predicate1333 = new BitSet(new long[]{0x0000000C00000000L});
4870     public static final BitSet FOLLOW_NOT_in_quantified_in_predicate1343 = new BitSet(new long[]{0x0000000800000000L});
4871     public static final BitSet FOLLOW_IN_in_quantified_in_predicate1345 = new BitSet(new long[]{0x0000100000000000L});
4872     public static final BitSet FOLLOW_LPAR_in_quantified_in_predicate1347 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4873     public static final BitSet FOLLOW_in_value_list_in_quantified_in_predicate1349 = new BitSet(new long[]{0x0000200000000000L});
4874     public static final BitSet FOLLOW_RPAR_in_quantified_in_predicate1351 = new BitSet(new long[]{0x0000000000000002L});
4875     public static final BitSet FOLLOW_IN_in_quantified_in_predicate1382 = new BitSet(new long[]{0x0000100000000000L});
4876     public static final BitSet FOLLOW_LPAR_in_quantified_in_predicate1388 = new BitSet(new long[]{0x0840000000000000L,0x000000000000000AL});
4877     public static final BitSet FOLLOW_in_value_list_in_quantified_in_predicate1390 = new BitSet(new long[]{0x0000200000000000L});
4878     public static final BitSet FOLLOW_RPAR_in_quantified_in_predicate1392 = new BitSet(new long[]{0x0000000000000002L});
4879     public static final BitSet FOLLOW_CONTAINS_in_text_search_predicate1441 = new BitSet(new long[]{0x0000100000000000L});
4880     public static final BitSet FOLLOW_LPAR_in_text_search_predicate1443 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000012L});
4881     public static final BitSet FOLLOW_qualifier_in_text_search_predicate1446 = new BitSet(new long[]{0x0000400000000000L});
4882     public static final BitSet FOLLOW_COMMA_in_text_search_predicate1448 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000012L});
4883     public static final BitSet FOLLOW_text_search_expression_in_text_search_predicate1452 = new BitSet(new long[]{0x0000200000000000L});
4884     public static final BitSet FOLLOW_RPAR_in_text_search_predicate1454 = new BitSet(new long[]{0x0000000000000002L});
4885     public static final BitSet FOLLOW_IN_FOLDER_in_folder_predicate1497 = new BitSet(new long[]{0x0000100000000000L});
4886     public static final BitSet FOLLOW_IN_TREE_in_folder_predicate1503 = new BitSet(new long[]{0x0000100000000000L});
4887     public static final BitSet FOLLOW_LPAR_in_folder_predicate1507 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000012L});
4888     public static final BitSet FOLLOW_qualifier_in_folder_predicate1510 = new BitSet(new long[]{0x0000400000000000L});
4889     public static final BitSet FOLLOW_COMMA_in_folder_predicate1512 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000012L});
4890     public static final BitSet FOLLOW_folder_id_in_folder_predicate1516 = new BitSet(new long[]{0x0000200000000000L});
4891     public static final BitSet FOLLOW_RPAR_in_folder_predicate1518 = new BitSet(new long[]{0x0000000000000002L});
4892     public static final BitSet FOLLOW_ORDER_in_order_by_clause1552 = new BitSet(new long[]{0x0000000008000000L});
4893     public static final BitSet FOLLOW_BY_in_order_by_clause1554 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
4894     public static final BitSet FOLLOW_sort_specification_in_order_by_clause1556 = new BitSet(new long[]{0x0000400000000002L});
4895     public static final BitSet FOLLOW_COMMA_in_order_by_clause1560 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
4896     public static final BitSet FOLLOW_sort_specification_in_order_by_clause1562 = new BitSet(new long[]{0x0000400000000002L});
4897     public static final BitSet FOLLOW_column_reference_in_sort_specification1598 = new BitSet(new long[]{0x0000000000000002L});
4898     public static final BitSet FOLLOW_column_reference_in_sort_specification1612 = new BitSet(new long[]{0x0000000030000000L});
4899     public static final BitSet FOLLOW_set_in_sort_specification1614 = new BitSet(new long[]{0x0000000000000002L});
4900     public static final BitSet FOLLOW_ID_in_correlation_name1638 = new BitSet(new long[]{0x0000000000000002L});
4901     public static final BitSet FOLLOW_ID_in_table_name1649 = new BitSet(new long[]{0x0000000000000002L});
4902     public static final BitSet FOLLOW_ID_in_column_name1660 = new BitSet(new long[]{0x0000000000000002L});
4903     public static final BitSet FOLLOW_ID_in_multi_valued_column_name1671 = new BitSet(new long[]{0x0000000000000002L});
4904     public static final BitSet FOLLOW_STRING_LIT_in_folder_id1682 = new BitSet(new long[]{0x0000000000000002L});
4905     public static final BitSet FOLLOW_STRING_LIT_in_text_search_expression1693 = new BitSet(new long[]{0x0000000000000002L});
4906 
4907 }