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

1   // $ANTLR 3.3 Nov 30, 2010 12:46:29 org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.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  /**
41   * CMISQL parser.
42   */
43  public class CmisQlExtParser extends Parser {
44      public static final String[] tokenNames = new String[] {
45          "<invalid>", "<EOR>", "<DOWN>", "<UP>", "TABLE", "COL", "SEL_LIST", "IN_LIST", "IN_ANY", "NOT_IN_ANY", "EQ_ANY", "NOT_IN", "NOT_LIKE", "IS_NULL", "IS_NOT_NULL", "ORDER_BY", "SELECT", "FROM", "AS", "JOIN", "INNER", "OUTER", "LEFT", "RIGHT", "ON", "WHERE", "ORDER", "BY", "ASC", "DESC", "IS", "NULL", "AND", "OR", "NOT", "IN", "LIKE", "ANY", "CONTAINS", "SCORE", "IN_FOLDER", "IN_TREE", "TIMESTAMP", "STAR", "LPAR", "RPAR", "COMMA", "DOT", "EQ", "NEQ", "LT", "GT", "LTEQ", "GTEQ", "BOOL_LIT", "Sign", "Digits", "ExactNumLit", "ApproxNumLit", "NUM_LIT", "QUOTE", "BACKSL", "UNDERSCORE", "PERCENT", "ESC", "STRING_LIT", "WS", "TIME_LIT", "ID", "FUNC", "OP_ANY", "DISTINCT"
46      };
47      public static final int EOF=-1;
48      public static final int TABLE=4;
49      public static final int COL=5;
50      public static final int SEL_LIST=6;
51      public static final int IN_LIST=7;
52      public static final int IN_ANY=8;
53      public static final int NOT_IN_ANY=9;
54      public static final int EQ_ANY=10;
55      public static final int NOT_IN=11;
56      public static final int NOT_LIKE=12;
57      public static final int IS_NULL=13;
58      public static final int IS_NOT_NULL=14;
59      public static final int ORDER_BY=15;
60      public static final int SELECT=16;
61      public static final int FROM=17;
62      public static final int AS=18;
63      public static final int JOIN=19;
64      public static final int INNER=20;
65      public static final int OUTER=21;
66      public static final int LEFT=22;
67      public static final int RIGHT=23;
68      public static final int ON=24;
69      public static final int WHERE=25;
70      public static final int ORDER=26;
71      public static final int BY=27;
72      public static final int ASC=28;
73      public static final int DESC=29;
74      public static final int IS=30;
75      public static final int NULL=31;
76      public static final int AND=32;
77      public static final int OR=33;
78      public static final int NOT=34;
79      public static final int IN=35;
80      public static final int LIKE=36;
81      public static final int ANY=37;
82      public static final int CONTAINS=38;
83      public static final int SCORE=39;
84      public static final int IN_FOLDER=40;
85      public static final int IN_TREE=41;
86      public static final int TIMESTAMP=42;
87      public static final int STAR=43;
88      public static final int LPAR=44;
89      public static final int RPAR=45;
90      public static final int COMMA=46;
91      public static final int DOT=47;
92      public static final int EQ=48;
93      public static final int NEQ=49;
94      public static final int LT=50;
95      public static final int GT=51;
96      public static final int LTEQ=52;
97      public static final int GTEQ=53;
98      public static final int BOOL_LIT=54;
99      public static final int Sign=55;
100     public static final int Digits=56;
101     public static final int ExactNumLit=57;
102     public static final int ApproxNumLit=58;
103     public static final int NUM_LIT=59;
104     public static final int QUOTE=60;
105     public static final int BACKSL=61;
106     public static final int UNDERSCORE=62;
107     public static final int PERCENT=63;
108     public static final int ESC=64;
109     public static final int STRING_LIT=65;
110     public static final int WS=66;
111     public static final int TIME_LIT=67;
112     public static final int ID=68;
113     public static final int FUNC=111;
114     public static final int OP_ANY=112;
115     public static final int DISTINCT=113;
116 
117     // delegates
118     public CmisQlExtParser_CmisBaseGrammar gCmisBaseGrammar;
119     // delegators
120 
121 
122         public CmisQlExtParser(TokenStream input) {
123             this(input, new RecognizerSharedState());
124         }
125         public CmisQlExtParser(TokenStream input, RecognizerSharedState state) {
126             super(input, state);
127             gCmisBaseGrammar = new CmisQlExtParser_CmisBaseGrammar(input, state, this);         
128         }
129         
130     protected TreeAdaptor adaptor = new CommonTreeAdaptor();
131 
132     public void setTreeAdaptor(TreeAdaptor adaptor) {
133         this.adaptor = adaptor;
134         gCmisBaseGrammar.setTreeAdaptor(this.adaptor);
135     }
136     public TreeAdaptor getTreeAdaptor() {
137         return adaptor;
138     }
139 
140     public String[] getTokenNames() { return CmisQlExtParser.tokenNames; }
141     public String getGrammarFileName() { return "org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g"; }
142 
143 
144         public boolean hasErrors() {
145         	return gCmisBaseGrammar.hasErrors();
146         }
147 
148     	public String getErrorMessages() {
149         	return gCmisBaseGrammar.getErrorMessages();
150     	}
151 
152 
153     public static class query_return extends ParserRuleReturnScope {
154         Object tree;
155         public Object getTree() { return tree; }
156     };
157 
158     // $ANTLR start "query"
159     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:80:1: query : SELECT ( DISTINCT )? select_list from_clause ( where_clause )? ( order_by_clause )? ;
160     public final CmisQlExtParser.query_return query() throws RecognitionException {
161         CmisQlExtParser.query_return retval = new CmisQlExtParser.query_return();
162         retval.start = input.LT(1);
163 
164         Object root_0 = null;
165 
166         Token SELECT1=null;
167         Token DISTINCT2=null;
168         CmisQlExtParser_CmisBaseGrammar.select_list_return select_list3 = null;
169 
170         CmisQlExtParser_CmisBaseGrammar.from_clause_return from_clause4 = null;
171 
172         CmisQlExtParser_CmisBaseGrammar.where_clause_return where_clause5 = null;
173 
174         CmisQlExtParser_CmisBaseGrammar.order_by_clause_return order_by_clause6 = null;
175 
176 
177         Object SELECT1_tree=null;
178         Object DISTINCT2_tree=null;
179 
180         try {
181             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:80:6: ( SELECT ( DISTINCT )? select_list from_clause ( where_clause )? ( order_by_clause )? )
182             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:80:8: SELECT ( DISTINCT )? select_list from_clause ( where_clause )? ( order_by_clause )?
183             {
184             root_0 = (Object)adaptor.nil();
185 
186             SELECT1=(Token)match(input,SELECT,FOLLOW_SELECT_in_query79); 
187             SELECT1_tree = (Object)adaptor.create(SELECT1);
188             root_0 = (Object)adaptor.becomeRoot(SELECT1_tree, root_0);
189 
190             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:80:16: ( DISTINCT )?
191             int alt1=2;
192             switch ( input.LA(1) ) {
193                 case DISTINCT:
194                     {
195                     alt1=1;
196                     }
197                     break;
198             }
199 
200             switch (alt1) {
201                 case 1 :
202                     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:80:16: DISTINCT
203                     {
204                     DISTINCT2=(Token)match(input,DISTINCT,FOLLOW_DISTINCT_in_query82); 
205                     DISTINCT2_tree = (Object)adaptor.create(DISTINCT2);
206                     adaptor.addChild(root_0, DISTINCT2_tree);
207 
208 
209                     }
210                     break;
211 
212             }
213 
214             pushFollow(FOLLOW_select_list_in_query85);
215             select_list3=select_list();
216 
217             state._fsp--;
218 
219             adaptor.addChild(root_0, select_list3.getTree());
220             pushFollow(FOLLOW_from_clause_in_query87);
221             from_clause4=from_clause();
222 
223             state._fsp--;
224 
225             adaptor.addChild(root_0, from_clause4.getTree());
226             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:80:50: ( where_clause )?
227             int alt2=2;
228             switch ( input.LA(1) ) {
229                 case WHERE:
230                     {
231                     alt2=1;
232                     }
233                     break;
234             }
235 
236             switch (alt2) {
237                 case 1 :
238                     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:80:50: where_clause
239                     {
240                     pushFollow(FOLLOW_where_clause_in_query89);
241                     where_clause5=where_clause();
242 
243                     state._fsp--;
244 
245                     adaptor.addChild(root_0, where_clause5.getTree());
246 
247                     }
248                     break;
249 
250             }
251 
252             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:80:64: ( order_by_clause )?
253             int alt3=2;
254             switch ( input.LA(1) ) {
255                 case ORDER:
256                     {
257                     alt3=1;
258                     }
259                     break;
260             }
261 
262             switch (alt3) {
263                 case 1 :
264                     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:80:64: order_by_clause
265                     {
266                     pushFollow(FOLLOW_order_by_clause_in_query92);
267                     order_by_clause6=order_by_clause();
268 
269                     state._fsp--;
270 
271                     adaptor.addChild(root_0, order_by_clause6.getTree());
272 
273                     }
274                     break;
275 
276             }
277 
278 
279             }
280 
281             retval.stop = input.LT(-1);
282 
283             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
284             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
285 
286         }
287         catch (RecognitionException re) {
288             reportError(re);
289             recover(input,re);
290     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
291 
292         }
293         finally {
294         }
295         return retval;
296     }
297     // $ANTLR end "query"
298 
299     public static class value_expression_return extends ParserRuleReturnScope {
300         Object tree;
301         public Object getTree() { return tree; }
302     };
303 
304     // $ANTLR start "value_expression"
305     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:82:1: value_expression : ( column_reference | string_value_function | numeric_value_function );
306     public final CmisQlExtParser.value_expression_return value_expression() throws RecognitionException {
307         CmisQlExtParser.value_expression_return retval = new CmisQlExtParser.value_expression_return();
308         retval.start = input.LT(1);
309 
310         Object root_0 = null;
311 
312         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference7 = null;
313 
314         CmisQlExtParser.string_value_function_return string_value_function8 = null;
315 
316         CmisQlExtParser_CmisBaseGrammar.numeric_value_function_return numeric_value_function9 = null;
317 
318 
319 
320         try {
321             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:82:17: ( column_reference | string_value_function | numeric_value_function )
322             int alt4=3;
323             switch ( input.LA(1) ) {
324             case ID:
325                 {
326                 switch ( input.LA(2) ) {
327                 case LPAR:
328                     {
329                     alt4=2;
330                     }
331                     break;
332                 case FROM:
333                 case AS:
334                 case COMMA:
335                 case DOT:
336                 case EQ:
337                 case NEQ:
338                 case LT:
339                 case GT:
340                 case LTEQ:
341                 case GTEQ:
342                 case ID:
343                     {
344                     alt4=1;
345                     }
346                     break;
347                 default:
348                     NoViableAltException nvae =
349                         new NoViableAltException("", 4, 1, input);
350 
351                     throw nvae;
352                 }
353 
354                 }
355                 break;
356             case SCORE:
357                 {
358                 alt4=3;
359                 }
360                 break;
361             default:
362                 NoViableAltException nvae =
363                     new NoViableAltException("", 4, 0, input);
364 
365                 throw nvae;
366             }
367 
368             switch (alt4) {
369                 case 1 :
370                     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:83:7: column_reference
371                     {
372                     root_0 = (Object)adaptor.nil();
373 
374                     pushFollow(FOLLOW_column_reference_in_value_expression106);
375                     column_reference7=column_reference();
376 
377                     state._fsp--;
378 
379                     adaptor.addChild(root_0, column_reference7.getTree());
380 
381                     }
382                     break;
383                 case 2 :
384                     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:84:7: string_value_function
385                     {
386                     root_0 = (Object)adaptor.nil();
387 
388                     pushFollow(FOLLOW_string_value_function_in_value_expression114);
389                     string_value_function8=string_value_function();
390 
391                     state._fsp--;
392 
393                     adaptor.addChild(root_0, string_value_function8.getTree());
394 
395                     }
396                     break;
397                 case 3 :
398                     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:85:7: numeric_value_function
399                     {
400                     root_0 = (Object)adaptor.nil();
401 
402                     pushFollow(FOLLOW_numeric_value_function_in_value_expression122);
403                     numeric_value_function9=numeric_value_function();
404 
405                     state._fsp--;
406 
407                     adaptor.addChild(root_0, numeric_value_function9.getTree());
408 
409                     }
410                     break;
411 
412             }
413             retval.stop = input.LT(-1);
414 
415             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
416             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
417 
418         }
419         catch (RecognitionException re) {
420             reportError(re);
421             recover(input,re);
422     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
423 
424         }
425         finally {
426         }
427         return retval;
428     }
429     // $ANTLR end "value_expression"
430 
431     public static class quantified_comparison_predicate_return extends ParserRuleReturnScope {
432         Object tree;
433         public Object getTree() { return tree; }
434     };
435 
436     // $ANTLR start "quantified_comparison_predicate"
437     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:88:1: quantified_comparison_predicate : literal comp_op ANY multi_valued_column_reference -> ^( OP_ANY comp_op literal multi_valued_column_reference ) ;
438     public final CmisQlExtParser.quantified_comparison_predicate_return quantified_comparison_predicate() throws RecognitionException {
439         CmisQlExtParser.quantified_comparison_predicate_return retval = new CmisQlExtParser.quantified_comparison_predicate_return();
440         retval.start = input.LT(1);
441 
442         Object root_0 = null;
443 
444         Token ANY12=null;
445         CmisQlExtParser_CmisBaseGrammar.literal_return literal10 = null;
446 
447         CmisQlExtParser.comp_op_return comp_op11 = null;
448 
449         CmisQlExtParser_CmisBaseGrammar.multi_valued_column_reference_return multi_valued_column_reference13 = null;
450 
451 
452         Object ANY12_tree=null;
453         RewriteRuleTokenStream stream_ANY=new RewriteRuleTokenStream(adaptor,"token ANY");
454         RewriteRuleSubtreeStream stream_multi_valued_column_reference=new RewriteRuleSubtreeStream(adaptor,"rule multi_valued_column_reference");
455         RewriteRuleSubtreeStream stream_literal=new RewriteRuleSubtreeStream(adaptor,"rule literal");
456         RewriteRuleSubtreeStream stream_comp_op=new RewriteRuleSubtreeStream(adaptor,"rule comp_op");
457         try {
458             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:88:32: ( literal comp_op ANY multi_valued_column_reference -> ^( OP_ANY comp_op literal multi_valued_column_reference ) )
459             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:89:5: literal comp_op ANY multi_valued_column_reference
460             {
461             pushFollow(FOLLOW_literal_in_quantified_comparison_predicate138);
462             literal10=literal();
463 
464             state._fsp--;
465 
466             stream_literal.add(literal10.getTree());
467             pushFollow(FOLLOW_comp_op_in_quantified_comparison_predicate140);
468             comp_op11=comp_op();
469 
470             state._fsp--;
471 
472             stream_comp_op.add(comp_op11.getTree());
473             ANY12=(Token)match(input,ANY,FOLLOW_ANY_in_quantified_comparison_predicate142);  
474             stream_ANY.add(ANY12);
475 
476             pushFollow(FOLLOW_multi_valued_column_reference_in_quantified_comparison_predicate144);
477             multi_valued_column_reference13=multi_valued_column_reference();
478 
479             state._fsp--;
480 
481             stream_multi_valued_column_reference.add(multi_valued_column_reference13.getTree());
482 
483 
484             // AST REWRITE
485             // elements: comp_op, multi_valued_column_reference, literal
486             // token labels: 
487             // rule labels: retval
488             // token list labels: 
489             // rule list labels: 
490             // wildcard labels: 
491             retval.tree = root_0;
492             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
493 
494             root_0 = (Object)adaptor.nil();
495             // 90:7: -> ^( OP_ANY comp_op literal multi_valued_column_reference )
496             {
497                 // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:90:10: ^( OP_ANY comp_op literal multi_valued_column_reference )
498                 {
499                 Object root_1 = (Object)adaptor.nil();
500                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(OP_ANY, "OP_ANY"), root_1);
501 
502                 adaptor.addChild(root_1, stream_comp_op.nextTree());
503                 adaptor.addChild(root_1, stream_literal.nextTree());
504                 adaptor.addChild(root_1, stream_multi_valued_column_reference.nextTree());
505 
506                 adaptor.addChild(root_0, root_1);
507                 }
508 
509             }
510 
511             retval.tree = root_0;
512             }
513 
514             retval.stop = input.LT(-1);
515 
516             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
517             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
518 
519         }
520         catch (RecognitionException re) {
521             reportError(re);
522             recover(input,re);
523     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
524 
525         }
526         finally {
527         }
528         return retval;
529     }
530     // $ANTLR end "quantified_comparison_predicate"
531 
532     public static class comp_op_return extends ParserRuleReturnScope {
533         Object tree;
534         public Object getTree() { return tree; }
535     };
536 
537     // $ANTLR start "comp_op"
538     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:93:1: comp_op : ( EQ | NEQ | LT | GT | LTEQ | GTEQ );
539     public final CmisQlExtParser.comp_op_return comp_op() throws RecognitionException {
540         CmisQlExtParser.comp_op_return retval = new CmisQlExtParser.comp_op_return();
541         retval.start = input.LT(1);
542 
543         Object root_0 = null;
544 
545         Token set14=null;
546 
547         Object set14_tree=null;
548 
549         try {
550             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:93:8: ( EQ | NEQ | LT | GT | LTEQ | GTEQ )
551             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:
552             {
553             root_0 = (Object)adaptor.nil();
554 
555             set14=(Token)input.LT(1);
556             if ( (input.LA(1)>=EQ && input.LA(1)<=GTEQ) ) {
557                 input.consume();
558                 adaptor.addChild(root_0, (Object)adaptor.create(set14));
559                 state.errorRecovery=false;
560             }
561             else {
562                 MismatchedSetException mse = new MismatchedSetException(null,input);
563                 throw mse;
564             }
565 
566 
567             }
568 
569             retval.stop = input.LT(-1);
570 
571             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
572             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
573 
574         }
575         catch (RecognitionException re) {
576             reportError(re);
577             recover(input,re);
578     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
579 
580         }
581         finally {
582         }
583         return retval;
584     }
585     // $ANTLR end "comp_op"
586 
587     public static class string_value_function_return extends ParserRuleReturnScope {
588         Object tree;
589         public Object getTree() { return tree; }
590     };
591 
592     // $ANTLR start "string_value_function"
593     // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:97:1: string_value_function : ID LPAR column_reference RPAR -> ^( FUNC ID column_reference ) ;
594     public final CmisQlExtParser.string_value_function_return string_value_function() throws RecognitionException {
595         CmisQlExtParser.string_value_function_return retval = new CmisQlExtParser.string_value_function_return();
596         retval.start = input.LT(1);
597 
598         Object root_0 = null;
599 
600         Token ID15=null;
601         Token LPAR16=null;
602         Token RPAR18=null;
603         CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference17 = null;
604 
605 
606         Object ID15_tree=null;
607         Object LPAR16_tree=null;
608         Object RPAR18_tree=null;
609         RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
610         RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
611         RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
612         RewriteRuleSubtreeStream stream_column_reference=new RewriteRuleSubtreeStream(adaptor,"rule column_reference");
613         try {
614             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:97:22: ( ID LPAR column_reference RPAR -> ^( FUNC ID column_reference ) )
615             // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:98:5: ID LPAR column_reference RPAR
616             {
617             ID15=(Token)match(input,ID,FOLLOW_ID_in_string_value_function214);  
618             stream_ID.add(ID15);
619 
620             LPAR16=(Token)match(input,LPAR,FOLLOW_LPAR_in_string_value_function216);  
621             stream_LPAR.add(LPAR16);
622 
623             pushFollow(FOLLOW_column_reference_in_string_value_function218);
624             column_reference17=column_reference();
625 
626             state._fsp--;
627 
628             stream_column_reference.add(column_reference17.getTree());
629             RPAR18=(Token)match(input,RPAR,FOLLOW_RPAR_in_string_value_function220);  
630             stream_RPAR.add(RPAR18);
631 
632 
633 
634             // AST REWRITE
635             // elements: ID, column_reference
636             // token labels: 
637             // rule labels: retval
638             // token list labels: 
639             // rule list labels: 
640             // wildcard labels: 
641             retval.tree = root_0;
642             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
643 
644             root_0 = (Object)adaptor.nil();
645             // 99:7: -> ^( FUNC ID column_reference )
646             {
647                 // org/apache/chemistry/opencmis/server/support/query/CmisQlExtParser.g:99:10: ^( FUNC ID column_reference )
648                 {
649                 Object root_1 = (Object)adaptor.nil();
650                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FUNC, "FUNC"), root_1);
651 
652                 adaptor.addChild(root_1, stream_ID.nextNode());
653                 adaptor.addChild(root_1, stream_column_reference.nextTree());
654 
655                 adaptor.addChild(root_0, root_1);
656                 }
657 
658             }
659 
660             retval.tree = root_0;
661             }
662 
663             retval.stop = input.LT(-1);
664 
665             retval.tree = (Object)adaptor.rulePostProcessing(root_0);
666             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
667 
668         }
669         catch (RecognitionException re) {
670             reportError(re);
671             recover(input,re);
672     	retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
673 
674         }
675         finally {
676         }
677         return retval;
678     }
679     // $ANTLR end "string_value_function"
680 
681     // Delegated rules
682     public CmisQlExtParser_CmisBaseGrammar.order_by_clause_return order_by_clause() throws RecognitionException { return gCmisBaseGrammar.order_by_clause(); }
683     public CmisQlExtParser_CmisBaseGrammar.in_value_list_return in_value_list() throws RecognitionException { return gCmisBaseGrammar.in_value_list(); }
684     public CmisQlExtParser_CmisBaseGrammar.folder_predicate_return folder_predicate() throws RecognitionException { return gCmisBaseGrammar.folder_predicate(); }
685     public CmisQlExtParser_CmisBaseGrammar.select_sublist_return select_sublist() throws RecognitionException { return gCmisBaseGrammar.select_sublist(); }
686     public CmisQlExtParser_CmisBaseGrammar.where_clause_return where_clause() throws RecognitionException { return gCmisBaseGrammar.where_clause(); }
687     public CmisQlExtParser_CmisBaseGrammar.boolean_factor_return boolean_factor() throws RecognitionException { return gCmisBaseGrammar.boolean_factor(); }
688     public CmisQlExtParser_CmisBaseGrammar.from_clause_return from_clause() throws RecognitionException { return gCmisBaseGrammar.from_clause(); }
689     public CmisQlExtParser_CmisBaseGrammar.table_join_return table_join() throws RecognitionException { return gCmisBaseGrammar.table_join(); }
690     public CmisQlExtParser_CmisBaseGrammar.text_search_predicate_return text_search_predicate() throws RecognitionException { return gCmisBaseGrammar.text_search_predicate(); }
691     public CmisQlExtParser_CmisBaseGrammar.column_reference_return column_reference() throws RecognitionException { return gCmisBaseGrammar.column_reference(); }
692     public CmisQlExtParser_CmisBaseGrammar.join_kind_return join_kind() throws RecognitionException { return gCmisBaseGrammar.join_kind(); }
693     public CmisQlExtParser_CmisBaseGrammar.table_name_return table_name() throws RecognitionException { return gCmisBaseGrammar.table_name(); }
694     public CmisQlExtParser_CmisBaseGrammar.qualifier_return qualifier() throws RecognitionException { return gCmisBaseGrammar.qualifier(); }
695     public CmisQlExtParser_CmisBaseGrammar.boolean_term_return boolean_term() throws RecognitionException { return gCmisBaseGrammar.boolean_term(); }
696     public CmisQlExtParser_CmisBaseGrammar.in_predicate_return in_predicate() throws RecognitionException { return gCmisBaseGrammar.in_predicate(); }
697     public CmisQlExtParser_CmisBaseGrammar.table_reference_return table_reference() throws RecognitionException { return gCmisBaseGrammar.table_reference(); }
698     public CmisQlExtParser_CmisBaseGrammar.text_search_expression_return text_search_expression() throws RecognitionException { return gCmisBaseGrammar.text_search_expression(); }
699     public CmisQlExtParser_CmisBaseGrammar.comparison_predicate_return comparison_predicate() throws RecognitionException { return gCmisBaseGrammar.comparison_predicate(); }
700     public CmisQlExtParser_CmisBaseGrammar.predicate_return predicate() throws RecognitionException { return gCmisBaseGrammar.predicate(); }
701     public CmisQlExtParser_CmisBaseGrammar.search_condition_return search_condition() throws RecognitionException { return gCmisBaseGrammar.search_condition(); }
702     public CmisQlExtParser_CmisBaseGrammar.folder_id_return folder_id() throws RecognitionException { return gCmisBaseGrammar.folder_id(); }
703     public CmisQlExtParser_CmisBaseGrammar.quantified_in_predicate_return quantified_in_predicate() throws RecognitionException { return gCmisBaseGrammar.quantified_in_predicate(); }
704     public CmisQlExtParser_CmisBaseGrammar.like_predicate_return like_predicate() throws RecognitionException { return gCmisBaseGrammar.like_predicate(); }
705     public CmisQlExtParser_CmisBaseGrammar.boolean_test_return boolean_test() throws RecognitionException { return gCmisBaseGrammar.boolean_test(); }
706     public CmisQlExtParser_CmisBaseGrammar.literal_return literal() throws RecognitionException { return gCmisBaseGrammar.literal(); }
707     public CmisQlExtParser_CmisBaseGrammar.null_predicate_return null_predicate() throws RecognitionException { return gCmisBaseGrammar.null_predicate(); }
708     public CmisQlExtParser_CmisBaseGrammar.column_name_return column_name() throws RecognitionException { return gCmisBaseGrammar.column_name(); }
709     public CmisQlExtParser_CmisBaseGrammar.join_specification_return join_specification() throws RecognitionException { return gCmisBaseGrammar.join_specification(); }
710     public CmisQlExtParser_CmisBaseGrammar.sort_specification_return sort_specification() throws RecognitionException { return gCmisBaseGrammar.sort_specification(); }
711     public CmisQlExtParser_CmisBaseGrammar.select_list_return select_list() throws RecognitionException { return gCmisBaseGrammar.select_list(); }
712     public CmisQlExtParser_CmisBaseGrammar.one_table_return one_table() throws RecognitionException { return gCmisBaseGrammar.one_table(); }
713     public CmisQlExtParser_CmisBaseGrammar.correlation_name_return correlation_name() throws RecognitionException { return gCmisBaseGrammar.correlation_name(); }
714     public CmisQlExtParser_CmisBaseGrammar.multi_valued_column_reference_return multi_valued_column_reference() throws RecognitionException { return gCmisBaseGrammar.multi_valued_column_reference(); }
715     public CmisQlExtParser_CmisBaseGrammar.numeric_value_function_return numeric_value_function() throws RecognitionException { return gCmisBaseGrammar.numeric_value_function(); }
716     public CmisQlExtParser_CmisBaseGrammar.multi_valued_column_name_return multi_valued_column_name() throws RecognitionException { return gCmisBaseGrammar.multi_valued_column_name(); }
717 
718 
719  
720 
721     public static final BitSet FOLLOW_SELECT_in_query79 = new BitSet(new long[]{0x0000088000000000L,0x0002000000000010L});
722     public static final BitSet FOLLOW_DISTINCT_in_query82 = new BitSet(new long[]{0x0000088000000000L,0x0002000000000010L});
723     public static final BitSet FOLLOW_select_list_in_query85 = new BitSet(new long[]{0x0000000000020000L});
724     public static final BitSet FOLLOW_from_clause_in_query87 = new BitSet(new long[]{0x0000000006000002L});
725     public static final BitSet FOLLOW_where_clause_in_query89 = new BitSet(new long[]{0x0000000004000002L});
726     public static final BitSet FOLLOW_order_by_clause_in_query92 = new BitSet(new long[]{0x0000000000000002L});
727     public static final BitSet FOLLOW_column_reference_in_value_expression106 = new BitSet(new long[]{0x0000000000000002L});
728     public static final BitSet FOLLOW_string_value_function_in_value_expression114 = new BitSet(new long[]{0x0000000000000002L});
729     public static final BitSet FOLLOW_numeric_value_function_in_value_expression122 = new BitSet(new long[]{0x0000000000000002L});
730     public static final BitSet FOLLOW_literal_in_quantified_comparison_predicate138 = new BitSet(new long[]{0x003F000000000000L});
731     public static final BitSet FOLLOW_comp_op_in_quantified_comparison_predicate140 = new BitSet(new long[]{0x0000002000000000L});
732     public static final BitSet FOLLOW_ANY_in_quantified_comparison_predicate142 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
733     public static final BitSet FOLLOW_multi_valued_column_reference_in_quantified_comparison_predicate144 = new BitSet(new long[]{0x0000000000000002L});
734     public static final BitSet FOLLOW_set_in_comp_op0 = new BitSet(new long[]{0x0000000000000002L});
735     public static final BitSet FOLLOW_ID_in_string_value_function214 = new BitSet(new long[]{0x0000100000000000L});
736     public static final BitSet FOLLOW_LPAR_in_string_value_function216 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
737     public static final BitSet FOLLOW_column_reference_in_string_value_function218 = new BitSet(new long[]{0x0000200000000000L});
738     public static final BitSet FOLLOW_RPAR_in_string_value_function220 = new BitSet(new long[]{0x0000000000000002L});
739 
740 }