1 // $ANTLR 3.1.3 Mar 17, 2009 19:23:44 LensQuery.g 2009-08-06 15:20:40
\r
3 /*--------------------------------------------------------------------------
\r
4 * Copyright 2009 Taro L. Saito
\r
6 * Licensed under the Apache License, Version 2.0 (the "License");
\r
7 * you may not use this file except in compliance with the License.
\r
8 * You may obtain a copy of the License at
\r
10 * http://www.apache.org/licenses/LICENSE-2.0
\r
12 * Unless required by applicable law or agreed to in writing, software
\r
13 * distributed under the License is distributed on an "AS IS" BASIS,
\r
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
15 * See the License for the specific language governing permissions and
\r
16 * limitations under the License.
\r
17 *--------------------------------------------------------------------------*/
\r
18 //--------------------------------------
\r
21 // LensQueryParser.g
\r
22 // Since: Aug 6, 2009 08:30:02 AM
\r
24 //--------------------------------------
\r
25 package org.xerial.lens.relation.query.impl;
\r
27 import org.xerial.lens.relation.TupleIndex;
\r
30 import org.antlr.runtime.*;
\r
31 import java.util.Stack;
\r
32 import java.util.List;
\r
33 import java.util.ArrayList;
\r
36 import org.antlr.runtime.tree.*;
\r
38 public class LensQueryParser extends Parser {
\r
39 public static final String[] tokenNames = new String[] {
\r
40 "<invalid>", "<EOR>", "<DOWN>", "<UP>", "QUERY", "RELATION", "COMPARE", "OPERATOR", "OPERAND", "PATTERNMATCH", "NODE", "ALIAS", "NODEVALUE", "NAME", "VALUE", "INDEX", "LineBreakChar", "LineComment", "LineBreak", "Digit", "Letter", "HexDigit", "UnicodeChar", "EscapeSequence", "StringChar", "StringChar_s", "String", "Integer", "Frac", "Exp", "Double", "True", "False", "Null", "LBrace", "RBrace", "LBracket", "RBracket", "Lt", "Gt", "Leq", "Geq", "Eq", "Neq", "Match", "Regex", "Dot", "Comma", "Colon", "As", "LParen", "RParen", "Star", "UnsafeUnicodeChar", "SafeFirstLetter", "SafeLetter", "WhiteSpace", "QNameChar", "QName", "WhiteSpaces"
\r
42 public static final int INDEX=15;
\r
43 public static final int PATTERNMATCH=9;
\r
44 public static final int Match=44;
\r
45 public static final int RBrace=35;
\r
46 public static final int Regex=45;
\r
47 public static final int LBracket=36;
\r
48 public static final int Digit=19;
\r
49 public static final int Frac=28;
\r
50 public static final int HexDigit=21;
\r
51 public static final int QUERY=4;
\r
52 public static final int ALIAS=11;
\r
53 public static final int VALUE=14;
\r
54 public static final int Letter=20;
\r
55 public static final int Comma=47;
\r
56 public static final int Dot=46;
\r
57 public static final int EscapeSequence=23;
\r
58 public static final int Integer=27;
\r
59 public static final int WhiteSpace=56;
\r
60 public static final int OPERATOR=7;
\r
61 public static final int False=32;
\r
62 public static final int Colon=48;
\r
63 public static final int LineComment=17;
\r
64 public static final int NODEVALUE=12;
\r
65 public static final int As=49;
\r
66 public static final int SafeFirstLetter=54;
\r
67 public static final int Null=33;
\r
68 public static final int Star=52;
\r
69 public static final int Eq=42;
\r
70 public static final int Exp=29;
\r
71 public static final int QNameChar=57;
\r
72 public static final int RELATION=5;
\r
73 public static final int Gt=39;
\r
74 public static final int RParen=51;
\r
75 public static final int UnicodeChar=22;
\r
76 public static final int StringChar=24;
\r
77 public static final int True=31;
\r
78 public static final int OPERAND=8;
\r
79 public static final int LineBreak=18;
\r
80 public static final int LParen=50;
\r
81 public static final int String=26;
\r
82 public static final int SafeLetter=55;
\r
83 public static final int LineBreakChar=16;
\r
84 public static final int COMPARE=6;
\r
85 public static final int QName=58;
\r
86 public static final int EOF=-1;
\r
87 public static final int Geq=41;
\r
88 public static final int NODE=10;
\r
89 public static final int StringChar_s=25;
\r
90 public static final int Neq=43;
\r
91 public static final int UnsafeUnicodeChar=53;
\r
92 public static final int Double=30;
\r
93 public static final int LBrace=34;
\r
94 public static final int RBracket=37;
\r
95 public static final int Lt=38;
\r
96 public static final int NAME=13;
\r
97 public static final int Leq=40;
\r
98 public static final int WhiteSpaces=59;
\r
104 public LensQueryParser(TokenStream input) {
\r
105 this(input, new RecognizerSharedState());
\r
107 public LensQueryParser(TokenStream input, RecognizerSharedState state) {
\r
108 super(input, state);
\r
112 protected TreeAdaptor adaptor = new CommonTreeAdaptor();
\r
114 public void setTreeAdaptor(TreeAdaptor adaptor) {
\r
115 this.adaptor = adaptor;
\r
117 public TreeAdaptor getTreeAdaptor() {
\r
121 public String[] getTokenNames() { return LensQueryParser.tokenNames; }
\r
122 public String getGrammarFileName() { return "LensQuery.g"; }
\r
125 private TupleIndex currentIndex = null;
\r
128 public static class expr_return extends ParserRuleReturnScope {
\r
130 public Object getTree() { return tree; }
\r
133 // $ANTLR start "expr"
\r
134 // LensQuery.g:191:1: expr : relation ;
\r
135 public final LensQueryParser.expr_return expr() throws RecognitionException {
\r
136 LensQueryParser.expr_return retval = new LensQueryParser.expr_return();
\r
137 retval.start = input.LT(1);
\r
139 Object root_0 = null;
\r
141 LensQueryParser.relation_return relation1 = null;
\r
146 // LensQuery.g:191:5: ( relation )
\r
147 // LensQuery.g:192:3: relation
\r
149 root_0 = (Object)adaptor.nil();
\r
151 pushFollow(FOLLOW_relation_in_expr806);
\r
152 relation1=relation();
\r
156 adaptor.addChild(root_0, relation1.getTree());
\r
160 retval.stop = input.LT(-1);
\r
162 retval.tree = (Object)adaptor.rulePostProcessing(root_0);
\r
163 adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
\r
166 catch (RecognitionException re) {
\r
169 retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
\r
176 // $ANTLR end "expr"
\r
178 protected static class relation_scope {
\r
180 TupleIndex relationIndex;
\r
182 protected Stack relation_stack = new Stack();
\r
184 public static class relation_return extends ParserRuleReturnScope {
\r
186 public Object getTree() { return tree; }
\r
189 // $ANTLR start "relation"
\r
190 // LensQuery.g:195:1: relation : relation_i -> ^( RELATION relation_i INDEX[currentIndex.toString()] ) ;
\r
191 public final LensQueryParser.relation_return relation() throws RecognitionException {
\r
192 relation_stack.push(new relation_scope());
\r
193 LensQueryParser.relation_return retval = new LensQueryParser.relation_return();
\r
194 retval.start = input.LT(1);
\r
196 Object root_0 = null;
\r
198 LensQueryParser.relation_i_return relation_i2 = null;
\r
201 RewriteRuleSubtreeStream stream_relation_i=new RewriteRuleSubtreeStream(adaptor,"rule relation_i");
\r
203 ((relation_scope)relation_stack.peek()).nodeItemIndex = 1;
\r
204 if(currentIndex == null)
\r
205 currentIndex = new TupleIndex(1);
\r
207 currentIndex = new TupleIndex(currentIndex, 1);
\r
210 // LensQuery.g:213:4: ( relation_i -> ^( RELATION relation_i INDEX[currentIndex.toString()] ) )
\r
211 // LensQuery.g:213:6: relation_i
\r
213 pushFollow(FOLLOW_relation_i_in_relation840);
\r
214 relation_i2=relation_i();
\r
218 stream_relation_i.add(relation_i2.getTree());
\r
222 // elements: relation_i
\r
224 // rule labels: retval
\r
225 // token list labels:
\r
226 // rule list labels:
\r
227 // wildcard labels:
\r
228 retval.tree = root_0;
\r
229 RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
\r
231 root_0 = (Object)adaptor.nil();
\r
232 // 213:17: -> ^( RELATION relation_i INDEX[currentIndex.toString()] )
\r
234 // LensQuery.g:213:20: ^( RELATION relation_i INDEX[currentIndex.toString()] )
\r
236 Object root_1 = (Object)adaptor.nil();
\r
237 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RELATION, "RELATION"), root_1);
\r
239 adaptor.addChild(root_1, stream_relation_i.nextTree());
\r
240 adaptor.addChild(root_1, (Object)adaptor.create(INDEX, currentIndex.toString()));
\r
242 adaptor.addChild(root_0, root_1);
\r
247 retval.tree = root_0;
\r
250 retval.stop = input.LT(-1);
\r
252 retval.tree = (Object)adaptor.rulePostProcessing(root_0);
\r
253 adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
\r
256 currentIndex = currentIndex.parent();
\r
259 catch (RecognitionException re) {
\r
262 retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
\r
266 relation_stack.pop();
\r
270 // $ANTLR end "relation"
\r
272 public static class relation_i_return extends ParserRuleReturnScope {
\r
274 public Object getTree() { return tree; }
\r
277 // $ANTLR start "relation_i"
\r
278 // LensQuery.g:216:1: relation_i : nodeName ( alias )? LParen nodeItem ( Comma nodeItem )* RParen ;
\r
279 public final LensQueryParser.relation_i_return relation_i() throws RecognitionException {
\r
280 LensQueryParser.relation_i_return retval = new LensQueryParser.relation_i_return();
\r
281 retval.start = input.LT(1);
\r
283 Object root_0 = null;
\r
285 Token LParen5=null;
\r
287 Token RParen9=null;
\r
288 LensQueryParser.nodeName_return nodeName3 = null;
\r
290 LensQueryParser.alias_return alias4 = null;
\r
292 LensQueryParser.nodeItem_return nodeItem6 = null;
\r
294 LensQueryParser.nodeItem_return nodeItem8 = null;
\r
297 Object LParen5_tree=null;
\r
298 Object Comma7_tree=null;
\r
299 Object RParen9_tree=null;
\r
302 // LensQuery.g:216:11: ( nodeName ( alias )? LParen nodeItem ( Comma nodeItem )* RParen )
\r
303 // LensQuery.g:216:13: nodeName ( alias )? LParen nodeItem ( Comma nodeItem )* RParen
\r
305 root_0 = (Object)adaptor.nil();
\r
307 pushFollow(FOLLOW_nodeName_in_relation_i859);
\r
308 nodeName3=nodeName();
\r
312 adaptor.addChild(root_0, nodeName3.getTree());
\r
313 // LensQuery.g:216:22: ( alias )?
\r
315 int LA1_0 = input.LA(1);
\r
317 if ( (LA1_0==As) ) {
\r
322 // LensQuery.g:216:22: alias
\r
324 pushFollow(FOLLOW_alias_in_relation_i861);
\r
329 adaptor.addChild(root_0, alias4.getTree());
\r
336 LParen5=(Token)match(input,LParen,FOLLOW_LParen_in_relation_i864);
\r
337 pushFollow(FOLLOW_nodeItem_in_relation_i867);
\r
338 nodeItem6=nodeItem();
\r
342 adaptor.addChild(root_0, nodeItem6.getTree());
\r
343 // LensQuery.g:216:46: ( Comma nodeItem )*
\r
347 int LA2_0 = input.LA(1);
\r
349 if ( (LA2_0==Comma) ) {
\r
356 // LensQuery.g:216:47: Comma nodeItem
\r
358 Comma7=(Token)match(input,Comma,FOLLOW_Comma_in_relation_i870);
\r
359 pushFollow(FOLLOW_nodeItem_in_relation_i873);
\r
360 nodeItem8=nodeItem();
\r
364 adaptor.addChild(root_0, nodeItem8.getTree());
\r
374 RParen9=(Token)match(input,RParen,FOLLOW_RParen_in_relation_i877);
\r
378 retval.stop = input.LT(-1);
\r
380 retval.tree = (Object)adaptor.rulePostProcessing(root_0);
\r
381 adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
\r
384 catch (RecognitionException re) {
\r
387 retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
\r
394 // $ANTLR end "relation_i"
\r
396 public static class nodeName_return extends ParserRuleReturnScope {
\r
398 public Object getTree() { return tree; }
\r
401 // $ANTLR start "nodeName"
\r
402 // LensQuery.g:218:1: fragment nodeName : ( QName -> NAME[$QName.text] | String -> NAME[$String.text] );
\r
403 public final LensQueryParser.nodeName_return nodeName() throws RecognitionException {
\r
404 LensQueryParser.nodeName_return retval = new LensQueryParser.nodeName_return();
\r
405 retval.start = input.LT(1);
\r
407 Object root_0 = null;
\r
409 Token QName10=null;
\r
410 Token String11=null;
\r
412 Object QName10_tree=null;
\r
413 Object String11_tree=null;
\r
414 RewriteRuleTokenStream stream_String=new RewriteRuleTokenStream(adaptor,"token String");
\r
415 RewriteRuleTokenStream stream_QName=new RewriteRuleTokenStream(adaptor,"token QName");
\r
418 // LensQuery.g:220:3: ( QName -> NAME[$QName.text] | String -> NAME[$String.text] )
\r
420 int LA3_0 = input.LA(1);
\r
422 if ( (LA3_0==QName) ) {
\r
425 else if ( (LA3_0==String) ) {
\r
429 NoViableAltException nvae =
\r
430 new NoViableAltException("", 3, 0, input);
\r
436 // LensQuery.g:220:5: QName
\r
438 QName10=(Token)match(input,QName,FOLLOW_QName_in_nodeName890);
\r
439 stream_QName.add(QName10);
\r
446 // rule labels: retval
\r
447 // token list labels:
\r
448 // rule list labels:
\r
449 // wildcard labels:
\r
450 retval.tree = root_0;
\r
451 RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
\r
453 root_0 = (Object)adaptor.nil();
\r
454 // 220:11: -> NAME[$QName.text]
\r
456 adaptor.addChild(root_0, (Object)adaptor.create(NAME, (QName10!=null?QName10.getText():null)));
\r
460 retval.tree = root_0;
\r
464 // LensQuery.g:221:5: String
\r
466 String11=(Token)match(input,String,FOLLOW_String_in_nodeName901);
\r
467 stream_String.add(String11);
\r
474 // rule labels: retval
\r
475 // token list labels:
\r
476 // rule list labels:
\r
477 // wildcard labels:
\r
478 retval.tree = root_0;
\r
479 RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
\r
481 root_0 = (Object)adaptor.nil();
\r
482 // 221:12: -> NAME[$String.text]
\r
484 adaptor.addChild(root_0, (Object)adaptor.create(NAME, (String11!=null?String11.getText():null)));
\r
488 retval.tree = root_0;
\r
493 retval.stop = input.LT(-1);
\r
495 retval.tree = (Object)adaptor.rulePostProcessing(root_0);
\r
496 adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
\r
499 catch (RecognitionException re) {
\r
502 retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
\r
509 // $ANTLR end "nodeName"
\r
511 public static class alias_return extends ParserRuleReturnScope {
\r
513 public Object getTree() { return tree; }
\r
516 // $ANTLR start "alias"
\r
517 // LensQuery.g:224:1: fragment alias : As QName -> ALIAS[$QName.text] ;
\r
518 public final LensQueryParser.alias_return alias() throws RecognitionException {
\r
519 LensQueryParser.alias_return retval = new LensQueryParser.alias_return();
\r
520 retval.start = input.LT(1);
\r
522 Object root_0 = null;
\r
525 Token QName13=null;
\r
527 Object As12_tree=null;
\r
528 Object QName13_tree=null;
\r
529 RewriteRuleTokenStream stream_As=new RewriteRuleTokenStream(adaptor,"token As");
\r
530 RewriteRuleTokenStream stream_QName=new RewriteRuleTokenStream(adaptor,"token QName");
\r
533 // LensQuery.g:225:6: ( As QName -> ALIAS[$QName.text] )
\r
534 // LensQuery.g:225:8: As QName
\r
536 As12=(Token)match(input,As,FOLLOW_As_in_alias918);
\r
537 stream_As.add(As12);
\r
539 QName13=(Token)match(input,QName,FOLLOW_QName_in_alias920);
\r
540 stream_QName.add(QName13);
\r
547 // rule labels: retval
\r
548 // token list labels:
\r
549 // rule list labels:
\r
550 // wildcard labels:
\r
551 retval.tree = root_0;
\r
552 RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
\r
554 root_0 = (Object)adaptor.nil();
\r
555 // 225:17: -> ALIAS[$QName.text]
\r
557 adaptor.addChild(root_0, (Object)adaptor.create(ALIAS, (QName13!=null?QName13.getText():null)));
\r
561 retval.tree = root_0;
\r
564 retval.stop = input.LT(-1);
\r
566 retval.tree = (Object)adaptor.rulePostProcessing(root_0);
\r
567 adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
\r
570 catch (RecognitionException re) {
\r
573 retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
\r
580 // $ANTLR end "alias"
\r
582 public static class nodeItem_return extends ParserRuleReturnScope {
\r
584 public Object getTree() { return tree; }
\r
587 // $ANTLR start "nodeItem"
\r
588 // LensQuery.g:228:1: fragment nodeItem : ( nodeName ( alias )? ( nodeValue )? -> ^( NODE nodeName ( alias )? ( nodeValue )? INDEX[new TupleIndex(currentIndex, index).toString()] ) | relation );
\r
589 public final LensQueryParser.nodeItem_return nodeItem() throws RecognitionException {
\r
590 LensQueryParser.nodeItem_return retval = new LensQueryParser.nodeItem_return();
\r
591 retval.start = input.LT(1);
\r
593 Object root_0 = null;
\r
595 LensQueryParser.nodeName_return nodeName14 = null;
\r
597 LensQueryParser.alias_return alias15 = null;
\r
599 LensQueryParser.nodeValue_return nodeValue16 = null;
\r
601 LensQueryParser.relation_return relation17 = null;
\r
604 RewriteRuleSubtreeStream stream_nodeName=new RewriteRuleSubtreeStream(adaptor,"rule nodeName");
\r
605 RewriteRuleSubtreeStream stream_nodeValue=new RewriteRuleSubtreeStream(adaptor,"rule nodeValue");
\r
606 RewriteRuleSubtreeStream stream_alias=new RewriteRuleSubtreeStream(adaptor,"rule alias");
\r
608 int index = ((relation_scope)relation_stack.peek()).nodeItemIndex++;
\r
611 // LensQuery.g:233:3: ( nodeName ( alias )? ( nodeValue )? -> ^( NODE nodeName ( alias )? ( nodeValue )? INDEX[new TupleIndex(currentIndex, index).toString()] ) | relation )
\r
613 int LA6_0 = input.LA(1);
\r
615 if ( (LA6_0==QName) ) {
\r
616 switch ( input.LA(2) ) {
\r
619 int LA6_3 = input.LA(3);
\r
621 if ( (LA6_3==QName) ) {
\r
622 int LA6_6 = input.LA(4);
\r
624 if ( ((LA6_6>=Lt && LA6_6<=Match)||(LA6_6>=Comma && LA6_6<=Colon)||LA6_6==RParen) ) {
\r
627 else if ( (LA6_6==LParen) ) {
\r
631 NoViableAltException nvae =
\r
632 new NoViableAltException("", 6, 6, input);
\r
638 NoViableAltException nvae =
\r
639 new NoViableAltException("", 6, 3, input);
\r
665 NoViableAltException nvae =
\r
666 new NoViableAltException("", 6, 1, input);
\r
672 else if ( (LA6_0==String) ) {
\r
673 switch ( input.LA(2) ) {
\r
676 int LA6_3 = input.LA(3);
\r
678 if ( (LA6_3==QName) ) {
\r
679 int LA6_6 = input.LA(4);
\r
681 if ( ((LA6_6>=Lt && LA6_6<=Match)||(LA6_6>=Comma && LA6_6<=Colon)||LA6_6==RParen) ) {
\r
684 else if ( (LA6_6==LParen) ) {
\r
688 NoViableAltException nvae =
\r
689 new NoViableAltException("", 6, 6, input);
\r
695 NoViableAltException nvae =
\r
696 new NoViableAltException("", 6, 3, input);
\r
722 NoViableAltException nvae =
\r
723 new NoViableAltException("", 6, 2, input);
\r
730 NoViableAltException nvae =
\r
731 new NoViableAltException("", 6, 0, input);
\r
737 // LensQuery.g:233:5: nodeName ( alias )? ( nodeValue )?
\r
739 pushFollow(FOLLOW_nodeName_in_nodeItem945);
\r
740 nodeName14=nodeName();
\r
744 stream_nodeName.add(nodeName14.getTree());
\r
745 // LensQuery.g:233:14: ( alias )?
\r
747 int LA4_0 = input.LA(1);
\r
749 if ( (LA4_0==As) ) {
\r
754 // LensQuery.g:233:14: alias
\r
756 pushFollow(FOLLOW_alias_in_nodeItem947);
\r
761 stream_alias.add(alias15.getTree());
\r
768 // LensQuery.g:233:21: ( nodeValue )?
\r
770 int LA5_0 = input.LA(1);
\r
772 if ( ((LA5_0>=Lt && LA5_0<=Match)||LA5_0==Colon) ) {
\r
777 // LensQuery.g:233:21: nodeValue
\r
779 pushFollow(FOLLOW_nodeValue_in_nodeItem950);
\r
780 nodeValue16=nodeValue();
\r
784 stream_nodeValue.add(nodeValue16.getTree());
\r
794 // elements: alias, nodeValue, nodeName
\r
796 // rule labels: retval
\r
797 // token list labels:
\r
798 // rule list labels:
\r
799 // wildcard labels:
\r
800 retval.tree = root_0;
\r
801 RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
\r
803 root_0 = (Object)adaptor.nil();
\r
804 // 234:5: -> ^( NODE nodeName ( alias )? ( nodeValue )? INDEX[new TupleIndex(currentIndex, index).toString()] )
\r
806 // LensQuery.g:234:8: ^( NODE nodeName ( alias )? ( nodeValue )? INDEX[new TupleIndex(currentIndex, index).toString()] )
\r
808 Object root_1 = (Object)adaptor.nil();
\r
809 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(NODE, "NODE"), root_1);
\r
811 adaptor.addChild(root_1, stream_nodeName.nextTree());
\r
812 // LensQuery.g:234:24: ( alias )?
\r
813 if ( stream_alias.hasNext() ) {
\r
814 adaptor.addChild(root_1, stream_alias.nextTree());
\r
817 stream_alias.reset();
\r
818 // LensQuery.g:234:31: ( nodeValue )?
\r
819 if ( stream_nodeValue.hasNext() ) {
\r
820 adaptor.addChild(root_1, stream_nodeValue.nextTree());
\r
823 stream_nodeValue.reset();
\r
824 adaptor.addChild(root_1, (Object)adaptor.create(INDEX, new TupleIndex(currentIndex, index).toString()));
\r
826 adaptor.addChild(root_0, root_1);
\r
831 retval.tree = root_0;
\r
835 // LensQuery.g:235:5: relation
\r
837 root_0 = (Object)adaptor.nil();
\r
839 pushFollow(FOLLOW_relation_in_nodeItem979);
\r
840 relation17=relation();
\r
844 adaptor.addChild(root_0, relation17.getTree());
\r
850 retval.stop = input.LT(-1);
\r
852 retval.tree = (Object)adaptor.rulePostProcessing(root_0);
\r
853 adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
\r
856 catch (RecognitionException re) {
\r
859 retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
\r
866 // $ANTLR end "nodeItem"
\r
868 public static class value_return extends ParserRuleReturnScope {
\r
870 public Object getTree() { return tree; }
\r
873 // $ANTLR start "value"
\r
874 // LensQuery.g:238:1: fragment value : ( String | Integer | Double | QName );
\r
875 public final LensQueryParser.value_return value() throws RecognitionException {
\r
876 LensQueryParser.value_return retval = new LensQueryParser.value_return();
\r
877 retval.start = input.LT(1);
\r
879 Object root_0 = null;
\r
883 Object set18_tree=null;
\r
886 // LensQuery.g:240:3: ( String | Integer | Double | QName )
\r
889 root_0 = (Object)adaptor.nil();
\r
891 set18=(Token)input.LT(1);
\r
892 if ( (input.LA(1)>=String && input.LA(1)<=Integer)||input.LA(1)==Double||input.LA(1)==QName ) {
\r
894 adaptor.addChild(root_0, (Object)adaptor.create(set18));
\r
895 state.errorRecovery=false;
\r
898 MismatchedSetException mse = new MismatchedSetException(null,input);
\r
905 retval.stop = input.LT(-1);
\r
907 retval.tree = (Object)adaptor.rulePostProcessing(root_0);
\r
908 adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
\r
911 catch (RecognitionException re) {
\r
914 retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
\r
921 // $ANTLR end "value"
\r
923 public static class nodeValue_return extends ParserRuleReturnScope {
\r
925 public Object getTree() { return tree; }
\r
928 // $ANTLR start "nodeValue"
\r
929 // LensQuery.g:243:1: fragment nodeValue : ( Colon value -> NODEVALUE[$value.text] | nodeCmp );
\r
930 public final LensQueryParser.nodeValue_return nodeValue() throws RecognitionException {
\r
931 LensQueryParser.nodeValue_return retval = new LensQueryParser.nodeValue_return();
\r
932 retval.start = input.LT(1);
\r
934 Object root_0 = null;
\r
936 Token Colon19=null;
\r
937 LensQueryParser.value_return value20 = null;
\r
939 LensQueryParser.nodeCmp_return nodeCmp21 = null;
\r
942 Object Colon19_tree=null;
\r
943 RewriteRuleTokenStream stream_Colon=new RewriteRuleTokenStream(adaptor,"token Colon");
\r
944 RewriteRuleSubtreeStream stream_value=new RewriteRuleSubtreeStream(adaptor,"rule value");
\r
946 // LensQuery.g:245:3: ( Colon value -> NODEVALUE[$value.text] | nodeCmp )
\r
948 int LA7_0 = input.LA(1);
\r
950 if ( (LA7_0==Colon) ) {
\r
953 else if ( ((LA7_0>=Lt && LA7_0<=Match)) ) {
\r
957 NoViableAltException nvae =
\r
958 new NoViableAltException("", 7, 0, input);
\r
964 // LensQuery.g:245:5: Colon value
\r
966 Colon19=(Token)match(input,Colon,FOLLOW_Colon_in_nodeValue1028);
\r
967 stream_Colon.add(Colon19);
\r
969 pushFollow(FOLLOW_value_in_nodeValue1030);
\r
974 stream_value.add(value20.getTree());
\r
980 // rule labels: retval
\r
981 // token list labels:
\r
982 // rule list labels:
\r
983 // wildcard labels:
\r
984 retval.tree = root_0;
\r
985 RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
\r
987 root_0 = (Object)adaptor.nil();
\r
988 // 245:17: -> NODEVALUE[$value.text]
\r
990 adaptor.addChild(root_0, (Object)adaptor.create(NODEVALUE, (value20!=null?input.toString(value20.start,value20.stop):null)));
\r
994 retval.tree = root_0;
\r
998 // LensQuery.g:246:5: nodeCmp
\r
1000 root_0 = (Object)adaptor.nil();
\r
1002 pushFollow(FOLLOW_nodeCmp_in_nodeValue1041);
\r
1003 nodeCmp21=nodeCmp();
\r
1007 adaptor.addChild(root_0, nodeCmp21.getTree());
\r
1013 retval.stop = input.LT(-1);
\r
1015 retval.tree = (Object)adaptor.rulePostProcessing(root_0);
\r
1016 adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
\r
1019 catch (RecognitionException re) {
\r
1021 recover(input,re);
\r
1022 retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
\r
1029 // $ANTLR end "nodeValue"
\r
1031 public static class nodeCmp_return extends ParserRuleReturnScope {
\r
1033 public Object getTree() { return tree; }
\r
1036 // $ANTLR start "nodeCmp"
\r
1037 // LensQuery.g:249:1: fragment nodeCmp : ( cmpOp value -> ^( COMPARE OPERATOR[$cmpOp.text] OPERAND[$value.text] ) | Match Regex -> ^( PATTERNMATCH OPERAND[$Regex.text] ) );
\r
1038 public final LensQueryParser.nodeCmp_return nodeCmp() throws RecognitionException {
\r
1039 LensQueryParser.nodeCmp_return retval = new LensQueryParser.nodeCmp_return();
\r
1040 retval.start = input.LT(1);
\r
1042 Object root_0 = null;
\r
1044 Token Match24=null;
\r
1045 Token Regex25=null;
\r
1046 LensQueryParser.cmpOp_return cmpOp22 = null;
\r
1048 LensQueryParser.value_return value23 = null;
\r
1051 Object Match24_tree=null;
\r
1052 Object Regex25_tree=null;
\r
1053 RewriteRuleTokenStream stream_Match=new RewriteRuleTokenStream(adaptor,"token Match");
\r
1054 RewriteRuleTokenStream stream_Regex=new RewriteRuleTokenStream(adaptor,"token Regex");
\r
1055 RewriteRuleSubtreeStream stream_value=new RewriteRuleSubtreeStream(adaptor,"rule value");
\r
1056 RewriteRuleSubtreeStream stream_cmpOp=new RewriteRuleSubtreeStream(adaptor,"rule cmpOp");
\r
1058 // LensQuery.g:251:3: ( cmpOp value -> ^( COMPARE OPERATOR[$cmpOp.text] OPERAND[$value.text] ) | Match Regex -> ^( PATTERNMATCH OPERAND[$Regex.text] ) )
\r
1060 int LA8_0 = input.LA(1);
\r
1062 if ( ((LA8_0>=Lt && LA8_0<=Neq)) ) {
\r
1065 else if ( (LA8_0==Match) ) {
\r
1069 NoViableAltException nvae =
\r
1070 new NoViableAltException("", 8, 0, input);
\r
1076 // LensQuery.g:251:5: cmpOp value
\r
1078 pushFollow(FOLLOW_cmpOp_in_nodeCmp1061);
\r
1083 stream_cmpOp.add(cmpOp22.getTree());
\r
1084 pushFollow(FOLLOW_value_in_nodeCmp1063);
\r
1089 stream_value.add(value23.getTree());
\r
1095 // rule labels: retval
\r
1096 // token list labels:
\r
1097 // rule list labels:
\r
1098 // wildcard labels:
\r
1099 retval.tree = root_0;
\r
1100 RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
\r
1102 root_0 = (Object)adaptor.nil();
\r
1103 // 251:17: -> ^( COMPARE OPERATOR[$cmpOp.text] OPERAND[$value.text] )
\r
1105 // LensQuery.g:251:20: ^( COMPARE OPERATOR[$cmpOp.text] OPERAND[$value.text] )
\r
1107 Object root_1 = (Object)adaptor.nil();
\r
1108 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMPARE, "COMPARE"), root_1);
\r
1110 adaptor.addChild(root_1, (Object)adaptor.create(OPERATOR, (cmpOp22!=null?input.toString(cmpOp22.start,cmpOp22.stop):null)));
\r
1111 adaptor.addChild(root_1, (Object)adaptor.create(OPERAND, (value23!=null?input.toString(value23.start,value23.stop):null)));
\r
1113 adaptor.addChild(root_0, root_1);
\r
1118 retval.tree = root_0;
\r
1122 // LensQuery.g:252:5: Match Regex
\r
1124 Match24=(Token)match(input,Match,FOLLOW_Match_in_nodeCmp1081);
\r
1125 stream_Match.add(Match24);
\r
1127 Regex25=(Token)match(input,Regex,FOLLOW_Regex_in_nodeCmp1083);
\r
1128 stream_Regex.add(Regex25);
\r
1135 // rule labels: retval
\r
1136 // token list labels:
\r
1137 // rule list labels:
\r
1138 // wildcard labels:
\r
1139 retval.tree = root_0;
\r
1140 RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
\r
1142 root_0 = (Object)adaptor.nil();
\r
1143 // 252:17: -> ^( PATTERNMATCH OPERAND[$Regex.text] )
\r
1145 // LensQuery.g:252:20: ^( PATTERNMATCH OPERAND[$Regex.text] )
\r
1147 Object root_1 = (Object)adaptor.nil();
\r
1148 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PATTERNMATCH, "PATTERNMATCH"), root_1);
\r
1150 adaptor.addChild(root_1, (Object)adaptor.create(OPERAND, (Regex25!=null?Regex25.getText():null)));
\r
1152 adaptor.addChild(root_0, root_1);
\r
1157 retval.tree = root_0;
\r
1162 retval.stop = input.LT(-1);
\r
1164 retval.tree = (Object)adaptor.rulePostProcessing(root_0);
\r
1165 adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
\r
1168 catch (RecognitionException re) {
\r
1170 recover(input,re);
\r
1171 retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
\r
1178 // $ANTLR end "nodeCmp"
\r
1180 public static class cmpOp_return extends ParserRuleReturnScope {
\r
1182 public Object getTree() { return tree; }
\r
1185 // $ANTLR start "cmpOp"
\r
1186 // LensQuery.g:255:1: fragment cmpOp : ( Lt | Gt | Eq | Leq | Geq | Neq ) ;
\r
1187 public final LensQueryParser.cmpOp_return cmpOp() throws RecognitionException {
\r
1188 LensQueryParser.cmpOp_return retval = new LensQueryParser.cmpOp_return();
\r
1189 retval.start = input.LT(1);
\r
1191 Object root_0 = null;
\r
1195 Object set26_tree=null;
\r
1198 // LensQuery.g:256:6: ( ( Lt | Gt | Eq | Leq | Geq | Neq ) )
\r
1199 // LensQuery.g:256:8: ( Lt | Gt | Eq | Leq | Geq | Neq )
\r
1201 root_0 = (Object)adaptor.nil();
\r
1203 set26=(Token)input.LT(1);
\r
1204 if ( (input.LA(1)>=Lt && input.LA(1)<=Neq) ) {
\r
1206 adaptor.addChild(root_0, (Object)adaptor.create(set26));
\r
1207 state.errorRecovery=false;
\r
1210 MismatchedSetException mse = new MismatchedSetException(null,input);
\r
1217 retval.stop = input.LT(-1);
\r
1219 retval.tree = (Object)adaptor.rulePostProcessing(root_0);
\r
1220 adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
\r
1223 catch (RecognitionException re) {
\r
1225 recover(input,re);
\r
1226 retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
\r
1233 // $ANTLR end "cmpOp"
\r
1235 // Delegated rules
\r
1240 public static final BitSet FOLLOW_relation_in_expr806 = new BitSet(new long[]{0x0000000000000002L});
\r
1241 public static final BitSet FOLLOW_relation_i_in_relation840 = new BitSet(new long[]{0x0000000000000002L});
\r
1242 public static final BitSet FOLLOW_nodeName_in_relation_i859 = new BitSet(new long[]{0x0006000000000000L});
\r
1243 public static final BitSet FOLLOW_alias_in_relation_i861 = new BitSet(new long[]{0x0004000000000000L});
\r
1244 public static final BitSet FOLLOW_LParen_in_relation_i864 = new BitSet(new long[]{0x0400000004000000L});
\r
1245 public static final BitSet FOLLOW_nodeItem_in_relation_i867 = new BitSet(new long[]{0x0008800000000000L});
\r
1246 public static final BitSet FOLLOW_Comma_in_relation_i870 = new BitSet(new long[]{0x0400000004000000L});
\r
1247 public static final BitSet FOLLOW_nodeItem_in_relation_i873 = new BitSet(new long[]{0x0008800000000000L});
\r
1248 public static final BitSet FOLLOW_RParen_in_relation_i877 = new BitSet(new long[]{0x0000000000000002L});
\r
1249 public static final BitSet FOLLOW_QName_in_nodeName890 = new BitSet(new long[]{0x0000000000000002L});
\r
1250 public static final BitSet FOLLOW_String_in_nodeName901 = new BitSet(new long[]{0x0000000000000002L});
\r
1251 public static final BitSet FOLLOW_As_in_alias918 = new BitSet(new long[]{0x0400000000000000L});
\r
1252 public static final BitSet FOLLOW_QName_in_alias920 = new BitSet(new long[]{0x0000000000000002L});
\r
1253 public static final BitSet FOLLOW_nodeName_in_nodeItem945 = new BitSet(new long[]{0x00031FC000000002L});
\r
1254 public static final BitSet FOLLOW_alias_in_nodeItem947 = new BitSet(new long[]{0x00011FC000000002L});
\r
1255 public static final BitSet FOLLOW_nodeValue_in_nodeItem950 = new BitSet(new long[]{0x0000000000000002L});
\r
1256 public static final BitSet FOLLOW_relation_in_nodeItem979 = new BitSet(new long[]{0x0000000000000002L});
\r
1257 public static final BitSet FOLLOW_set_in_value0 = new BitSet(new long[]{0x0000000000000002L});
\r
1258 public static final BitSet FOLLOW_Colon_in_nodeValue1028 = new BitSet(new long[]{0x040000004C000000L});
\r
1259 public static final BitSet FOLLOW_value_in_nodeValue1030 = new BitSet(new long[]{0x0000000000000002L});
\r
1260 public static final BitSet FOLLOW_nodeCmp_in_nodeValue1041 = new BitSet(new long[]{0x0000000000000002L});
\r
1261 public static final BitSet FOLLOW_cmpOp_in_nodeCmp1061 = new BitSet(new long[]{0x040000004C000000L});
\r
1262 public static final BitSet FOLLOW_value_in_nodeCmp1063 = new BitSet(new long[]{0x0000000000000002L});
\r
1263 public static final BitSet FOLLOW_Match_in_nodeCmp1081 = new BitSet(new long[]{0x0000200000000000L});
\r
1264 public static final BitSet FOLLOW_Regex_in_nodeCmp1083 = new BitSet(new long[]{0x0000000000000002L});
\r
1265 public static final BitSet FOLLOW_set_in_cmpOp1108 = new BitSet(new long[]{0x0000000000000002L});
\r