View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  /* Generated By:JavaCC: Do not edit this line. XPathParser.java */
18  
19  package org.apache.commons.jxpath.ri.parser;
20  
21  import java.util.ArrayList;
22  
23  import org.apache.commons.jxpath.ri.Compiler;
24  
25  public class XPathParser implements XPathParserConstants {
26  
27      static final class JJCalls {
28  
29          int gen;
30          Token first;
31          int arg;
32          JJCalls next;
33      }
34  
35      static private final class LookaheadSuccess extends Error {
36  
37          /**
38           *
39           */
40          private static final long serialVersionUID = 1L;
41      }
42  
43      static private int[] jj_la1_0;
44      static private int[] jj_la1_1;
45      static private int[] jj_la1_2;
46      static {
47          jj_la1_0();
48          jj_la1_1();
49          jj_la1_2();
50      }
51  
52      private static void jj_la1_0() {
53          jj_la1_0 = new int[] { 0xf8000000, 0x78000000, 0x0, 0x0, 0x78000000, 0xf80000c0, 0xc0, 0x40, 0xc0, 0xc0, 0xf8000000, 0xf8000000, 0x0, 0x0, 0x0, 0x0,
54                  0x160000, 0xf8000000, 0x0, 0xf81604c0, 0x100, 0xf80000c0, 0x0, 0xc0, 0x8000000, 0x10000000, 0x1800, 0x1800, 0x1e000, 0x1e000, 0x200, 0x400,
55                  0x60000000, 0x60000000, 0xf81604c0, 0xf8000000, 0xf8000000, 0x0, 0x80000000, };
56      }
57  
58      private static void jj_la1_1() {
59          jj_la1_1 = new int[] { 0xffff0007, 0x0, 0xffff0000, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffff0007, 0xffffffff, 0x0, 0xfff8, 0xfff8, 0x0, 0x0,
60                  0xffff0007, 0x0, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffff0007, 0xffff0007,
61                  0x0, 0x7, };
62      }
63  
64      private static void jj_la1_2() {
65          jj_la1_2 = new int[] { 0xffff, 0x8000, 0x7fff, 0x10000, 0x8000, 0x298ffff, 0x0, 0x0, 0x0, 0x0, 0x200ffff, 0x298ffff, 0x200000, 0x0, 0x0, 0x800000,
66                  0x20000, 0xffff, 0x1000000, 0x29affff, 0x0, 0x298ffff, 0x200000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000000, 0x2000000, 0x29affff,
67                  0x200ffff, 0x200ffff, 0x10000, 0x0, };
68      }
69      /* ################################################################################### */
70      /* XSLT Patterns (http://www.w3.org/1999/08/WD-xslt-19990813) */
71      /* ################################################################################### */
72      /* [XSLT1] Pattern ::= LocationPathPattern | Pattern '|' LocationPathPattern */
73  //void Pattern() :
74  //{}
75  //{
76  //        LocationPathPattern() ( <UNION> LocationPathPattern() )* <EOF>
77  //}
78  //
79  //
80  // /* [XSLT2] LocationPathPattern ::=
81  //   '/' RelativePathPattern? | IdKeyPattern (('/' | '//' RelativePathPattern)? | '//'? RelativePathPattern
82  //*/
83  //
84  //void LocationPathPattern() :
85  //{}
86  //{
87  //        <SLASH> ( RelativePathPattern() )?
88  //    |    (
89  //        LOOKAHEAD(IdKeyPattern())
90  //            IdKeyPattern() ( ( <SLASH> | <SLASHSLASH>) RelativePathPattern() )?
91  //        |    ( <SLASHSLASH> )? RelativePathPattern()
92  //        )
93  //}
94  //
95  //
96  //
97  // /* [XSLT3] IdKeyPattern    ::=    'id' '(' Literal ')' | 'key' '(' Literal ',' Literal ')'  */
98  //
99  //void IdKeyPattern() :
100 //{}
101 //{
102 //        <ID> "(" <Literal> ")"
103 //    |    <KEY>  "(" <Literal> "," <Literal> ")"
104 //}
105 //
106 //
107 // /* [XSLT4] RelativePathPattern    ::=    StepPattern | RelativePathPattern '/' StepPattern
108 //                           | RelativePathPattern '//' StepPattern
109 //*/
110 //void RelativePathPattern() :
111 //{}
112 //{
113 //        StepPattern() ( ( <SLASH>| <SLASHSLASH> ) StepPattern()    )*
114 //}
115 //
116 //
117 // /* [XSLT5]    StepPattern    ::=    AbbreviatedAxisSpecifier NodeTest Predicate*   */
118 //void StepPattern() :
119 //{}
120 //{
121 //        AbbreviatedAxisSpecifier() NodeTest() (Predicate())*
122 //}
123 // See XPath Syntax (http://www.w3.org/TR/xpath )
124 //void XPath() :
125 //{}
126 //{
127 //    LocationPath()
128 //    <EOF>
129 //}
130 
131     private Compiler compiler;
132     public XPathParserTokenManager token_source;
133     SimpleCharStream jj_input_stream;
134     /* [3] RelativeLocationPath ::= Step | RelativeLocationPath '/' Step | AbbreviatedRelativeLocationPath */
135     /* [11] AbbreviatedRelativeLocationPath ::= RelativeLocationPath '//' Step */
136     /*--------------------*/
137     /* 2.1 Location Steps */
138     /*--------------------*/
139     public Token token, jj_nt;
140     private Token jj_scanpos, jj_lastpos;
141     private int jj_la;
142     /*----------*/
143     /* 2.2 Axes */
144     /*----------*/
145     public boolean lookingAhead = false;
146     /*----------------*/
147     /* 2.3 Node Tests */
148     /*----------------*/
149     /*----------------*/
150     /* 2.4 Predicates */
151     /*----------------*/
152     private boolean jj_semLA;
153     /* [12] AbbreviatedStep ::= '.' | '..' */
154     private int jj_gen;
155     /*---------------*/
156     /* 3 Expressions */
157     /*---------------*/
158     /*------------*/
159     /* 3.1 Basics */
160     /*------------*/
161     /*
162      * The effect of the grammar is that the order of precedence is (lowest precedence first): or and =, != <=, <, >=, > and all operators are left associative.
163      * For example, 3 > 2 > 1 is equivalent to (3 > 2) > 1, which evaluates to false.
164      */
165     final private int[] jj_la1 = new int[39];
166     final private JJCalls[] jj_2_rtns = new JJCalls[6];
167     /*--------------------*/
168     /* 3.2 Function Calls */
169     /*--------------------*/
170     private boolean jj_rescan = false;
171     private int jj_gc = 0;
172     final private LookaheadSuccess jj_ls = new LookaheadSuccess();
173     private final java.util.Vector jj_expentries = new java.util.Vector();
174     /*---------------*/
175     /* 3.3 Node-sets */
176     /*---------------*/
177     private int[] jj_expentry;
178     private int jj_kind = -1;
179     private final int[] jj_lasttokens = new int[100];
180     /*--------------*/
181     /* 3.4 Booleans */
182     /*--------------*/
183     private int jj_endpos;
184 
185     public XPathParser(final java.io.InputStream stream) {
186         jj_input_stream = new SimpleCharStream(stream, 1, 1);
187         token_source = new XPathParserTokenManager(jj_input_stream);
188         token = new Token();
189         token.next = jj_nt = token_source.getNextToken();
190         jj_gen = 0;
191         for (int i = 0; i < 39; i++) {
192             jj_la1[i] = -1;
193         }
194         for (int i = 0; i < jj_2_rtns.length; i++) {
195             jj_2_rtns[i] = new JJCalls();
196         }
197     }
198 
199     public XPathParser(final java.io.Reader stream) {
200         jj_input_stream = new SimpleCharStream(stream, 1, 1);
201         token_source = new XPathParserTokenManager(jj_input_stream);
202         token = new Token();
203         token.next = jj_nt = token_source.getNextToken();
204         jj_gen = 0;
205         for (int i = 0; i < 39; i++) {
206             jj_la1[i] = -1;
207         }
208         for (int i = 0; i < jj_2_rtns.length; i++) {
209             jj_2_rtns[i] = new JJCalls();
210         }
211     }
212 
213     public XPathParser(final XPathParserTokenManager tm) {
214         token_source = tm;
215         token = new Token();
216         token.next = jj_nt = token_source.getNextToken();
217         jj_gen = 0;
218         for (int i = 0; i < 39; i++) {
219             jj_la1[i] = -1;
220         }
221         for (int i = 0; i < jj_2_rtns.length; i++) {
222             jj_2_rtns[i] = new JJCalls();
223         }
224     }
225     /*-------------*/
226     /* 3.5 Numbers */
227     /*-------------*/
228 
229     /* [13] AbbreviatedAxisSpecifier ::= '@'? */
230     final public int AbbreviatedAxisSpecifier() throws ParseException {
231         int axis = Compiler.AXIS_CHILD;
232         switch (jj_nt.kind) {
233         case 87:
234             jj_consume_token(87);
235             axis = Compiler.AXIS_ATTRIBUTE;
236             break;
237         default:
238             jj_la1[15] = jj_gen;
239             ;
240         }
241         {
242             if (true) {
243                 return axis;
244             }
245         }
246         throw new Error("Missing return statement in function");
247     }
248 
249     /* [2] AbsoluteLocationPath ::= '/' RelativeLocationPath? | AbbreviatedAbsoluteLocationPath */
250     /* [10] AbbreviatedAbsoluteLocationPath ::= '//' RelativeLocationPath */
251     final public Object AbsoluteLocationPath() throws ParseException {
252         final ArrayList steps = new ArrayList();
253         if (jj_2_2(2147483647)) {
254             LocationStep(steps);
255             label_1: while (true) {
256                 switch (jj_nt.kind) {
257                 case SLASH:
258                 case SLASHSLASH:
259                     ;
260                     break;
261                 default:
262                     jj_la1[6] = jj_gen;
263                     break label_1;
264                 }
265                 LocationStep(steps);
266             }
267         } else {
268             switch (jj_nt.kind) {
269             case SLASH:
270                 jj_consume_token(SLASH);
271                 break;
272             default:
273                 jj_la1[7] = jj_gen;
274                 jj_consume_token(-1);
275                 throw new ParseException();
276             }
277         }
278         {
279             if (true) {
280                 return compiler.locationPath(true, steps.toArray());
281             }
282         }
283         throw new Error("Missing return statement in function");
284     }
285 
286     /* [25] AdditiveExpr ::= MultiplicativeExpr | AdditiveExpr '+' MultiplicativeExpr | AdditiveExpr '-' MultiplicativeExpr */
287     final public Object AdditiveExpr() throws ParseException {
288         Object ex, r;
289         ArrayList list = null;
290         ex = SubtractiveExpr();
291         label_12: while (true) {
292             switch (jj_nt.kind) {
293             case PLUS:
294                 ;
295                 break;
296             default:
297                 jj_la1[30] = jj_gen;
298                 break label_12;
299             }
300             jj_consume_token(PLUS);
301             r = SubtractiveExpr();
302             if (list == null) {
303                 list = new ArrayList();
304                 list.add(ex);
305             }
306             list.add(r);
307         }
308         if (list != null) {
309             ex = compiler.sum(list.toArray());
310         }
311         {
312             if (true) {
313                 return ex;
314             }
315         }
316         throw new Error("Missing return statement in function");
317     }
318 
319     /* [22] AndExpr ::= EqualityExpr | AndExpr 'and' EqualityExpr */
320     final public Object AndExpr() throws ParseException {
321         Object ex, r;
322         ArrayList list = null;
323         ex = EqualityExpr();
324         label_9: while (true) {
325             switch (jj_nt.kind) {
326             case AND:
327                 ;
328                 break;
329             default:
330                 jj_la1[25] = jj_gen;
331                 break label_9;
332             }
333             jj_consume_token(AND);
334             r = EqualityExpr();
335             if (list == null) {
336                 list = new ArrayList();
337                 list.add(ex);
338             }
339             list.add(r);
340         }
341         if (list != null) {
342             ex = compiler.and(list.toArray());
343         }
344         {
345             if (true) {
346                 return ex;
347             }
348         }
349         throw new Error("Missing return statement in function");
350     }
351     /*-------------*/
352     /* 3.6 Strings */
353     /*-------------*/
354     /*----------------------------------*/
355     /* 3.7 Expression Lexical Structure */
356     /*----------------------------------*/
357     /*
358      * The following special tokenization rules must be applied in the order specified to disambiguate the grammar:
359      *
360      * 1. If there is a preceding token and the preceding token is not one of
361      *
362      * @, ::, (, [, , or an Operator, then a * must be recognized as a MultiplyOperator and an NCName must be recognized as an OperatorName.
363      *
364      * 2. If the character following an NCName (possibly after intervening ExprWhitespace) is (, then the token must be recognized as a NodeType or a
365      * FunctionName.
366      *
367      * 3. If the two characters following an NCName (possibly after intervening ExprWhitespace) are ::, then the token must be recognized as an AxisName.
368      *
369      * 4. Otherwise, the token must not be recognized as a MultiplyOperator, an OperatorName, a NodeType, a FunctionName, or an AxisName.
370      */
371     /*
372      * [28] ExprToken ::= '(' | ')' | '[' | ']' | '.' | '..' | '@' | ',' | '::' | WildcardName | NodeType | Operator | FunctionName | AxisName | Literal |
373      * Number | VariableReference
374      */
375     /* [34] MultiplyOperator ::= '*' */
376 
377     /* [17] Argument ::= Expr */
378     final public Object Argument() throws ParseException {
379         Object ex;
380         ex = Expression();
381         {
382             if (true) {
383                 return ex;
384             }
385         }
386         throw new Error("Missing return statement in function");
387     }
388 
389     final public ArrayList ArgumentList() throws ParseException {
390         ArrayList args = null;
391         Object arg;
392         jj_consume_token(81);
393         switch (jj_nt.kind) {
394         case SLASH:
395         case SLASHSLASH:
396         case MINUS:
397         case VARIABLE:
398         case Literal:
399         case Number:
400         case OR:
401         case AND:
402         case MOD:
403         case DIV:
404         case NODE:
405         case TEXT:
406         case COMMENT:
407         case PI:
408         case AXIS_SELF:
409         case AXIS_CHILD:
410         case AXIS_PARENT:
411         case AXIS_ANCESTOR:
412         case AXIS_ATTRIBUTE:
413         case AXIS_NAMESPACE:
414         case AXIS_PRECEDING:
415         case AXIS_FOLLOWING:
416         case AXIS_DESCENDANT:
417         case AXIS_ANCESTOR_OR_SELF:
418         case AXIS_FOLLOWING_SIBLING:
419         case AXIS_PRECEDING_SIBLING:
420         case AXIS_DESCENDANT_OR_SELF:
421         case FUNCTION_LAST:
422         case FUNCTION_POSITION:
423         case FUNCTION_COUNT:
424         case FUNCTION_ID:
425         case FUNCTION_KEY:
426         case FUNCTION_LOCAL_NAME:
427         case FUNCTION_NAMESPACE_URI:
428         case FUNCTION_NAME:
429         case FUNCTION_STRING:
430         case FUNCTION_CONCAT:
431         case FUNCTION_STARTS_WITH:
432         case FUNCTION_ENDS_WITH:
433         case FUNCTION_CONTAINS:
434         case FUNCTION_SUBSTRING_BEFORE:
435         case FUNCTION_SUBSTRING_AFTER:
436         case FUNCTION_SUBSTRING:
437         case FUNCTION_STRING_LENGTH:
438         case FUNCTION_NORMALIZE_SPACE:
439         case FUNCTION_TRANSLATE:
440         case FUNCTION_BOOLEAN:
441         case FUNCTION_NOT:
442         case FUNCTION_TRUE:
443         case FUNCTION_FALSE:
444         case FUNCTION_NULL:
445         case FUNCTION_LANG:
446         case FUNCTION_NUMBER:
447         case FUNCTION_SUM:
448         case FUNCTION_FLOOR:
449         case FUNCTION_CEILING:
450         case FUNCTION_ROUND:
451         case FUNCTION_FORMAT_NUMBER:
452         case NCName:
453         case 81:
454         case 83:
455         case 84:
456         case 87:
457         case 89:
458             arg = Argument();
459             args = new ArrayList();
460             args.add(arg);
461             label_4: while (true) {
462                 switch (jj_nt.kind) {
463                 case 88:
464                     ;
465                     break;
466                 default:
467                     jj_la1[18] = jj_gen;
468                     break label_4;
469                 }
470                 jj_consume_token(88);
471                 arg = Argument();
472                 args.add(arg);
473             }
474             break;
475         default:
476             jj_la1[19] = jj_gen;
477             ;
478         }
479         jj_consume_token(82);
480         {
481             if (true) {
482                 return args;
483             }
484         }
485         throw new Error("Missing return statement in function");
486     }
487 
488     /*
489      * [6] AxisName ::= 'ancestor' | 'ancestor-or-self' | 'attribute' | 'child' | 'descendant' | 'descendant-or-self' | 'following' | 'following-sibling' |
490      * 'namespace' | 'parent' | 'preceding' | 'preceding-sibling' | 'self'
491      */
492     final public int AxisName() throws ParseException {
493         int axis = 0;
494         switch (jj_nt.kind) {
495         case AXIS_SELF:
496             jj_consume_token(AXIS_SELF);
497             axis = Compiler.AXIS_SELF;
498             break;
499         case AXIS_CHILD:
500             jj_consume_token(AXIS_CHILD);
501             axis = Compiler.AXIS_CHILD;
502             break;
503         case AXIS_PARENT:
504             jj_consume_token(AXIS_PARENT);
505             axis = Compiler.AXIS_PARENT;
506             break;
507         case AXIS_ANCESTOR:
508             jj_consume_token(AXIS_ANCESTOR);
509             axis = Compiler.AXIS_ANCESTOR;
510             break;
511         case AXIS_ATTRIBUTE:
512             jj_consume_token(AXIS_ATTRIBUTE);
513             axis = Compiler.AXIS_ATTRIBUTE;
514             break;
515         case AXIS_NAMESPACE:
516             jj_consume_token(AXIS_NAMESPACE);
517             axis = Compiler.AXIS_NAMESPACE;
518             break;
519         case AXIS_PRECEDING:
520             jj_consume_token(AXIS_PRECEDING);
521             axis = Compiler.AXIS_PRECEDING;
522             break;
523         case AXIS_FOLLOWING:
524             jj_consume_token(AXIS_FOLLOWING);
525             axis = Compiler.AXIS_FOLLOWING;
526             break;
527         case AXIS_DESCENDANT:
528             jj_consume_token(AXIS_DESCENDANT);
529             axis = Compiler.AXIS_DESCENDANT;
530             break;
531         case AXIS_ANCESTOR_OR_SELF:
532             jj_consume_token(AXIS_ANCESTOR_OR_SELF);
533             axis = Compiler.AXIS_ANCESTOR_OR_SELF;
534             break;
535         case AXIS_FOLLOWING_SIBLING:
536             jj_consume_token(AXIS_FOLLOWING_SIBLING);
537             axis = Compiler.AXIS_FOLLOWING_SIBLING;
538             break;
539         case AXIS_PRECEDING_SIBLING:
540             jj_consume_token(AXIS_PRECEDING_SIBLING);
541             axis = Compiler.AXIS_PRECEDING_SIBLING;
542             break;
543         case AXIS_DESCENDANT_OR_SELF:
544             jj_consume_token(AXIS_DESCENDANT_OR_SELF);
545             axis = Compiler.AXIS_DESCENDANT_OR_SELF;
546             break;
547         default:
548             jj_la1[14] = jj_gen;
549             jj_consume_token(-1);
550             throw new ParseException();
551         }
552         {
553             if (true) {
554                 return axis;
555             }
556         }
557         throw new Error("Missing return statement in function");
558     }
559 
560     /* [5] AxisSpecifier ::= AxisName '::' | AbbreviatedAxisSpecifier */
561     final public int AxisSpecifier() throws ParseException {
562         int axis;
563         switch (jj_nt.kind) {
564         case AXIS_SELF:
565         case AXIS_CHILD:
566         case AXIS_PARENT:
567         case AXIS_ANCESTOR:
568         case AXIS_ATTRIBUTE:
569         case AXIS_NAMESPACE:
570         case AXIS_PRECEDING:
571         case AXIS_FOLLOWING:
572         case AXIS_DESCENDANT:
573         case AXIS_ANCESTOR_OR_SELF:
574         case AXIS_FOLLOWING_SIBLING:
575         case AXIS_PRECEDING_SIBLING:
576         case AXIS_DESCENDANT_OR_SELF:
577             axis = AxisName();
578             break;
579         default:
580             jj_la1[13] = jj_gen;
581             axis = AbbreviatedAxisSpecifier();
582         }
583         {
584             if (true) {
585                 return axis;
586             }
587         }
588         throw new Error("Missing return statement in function");
589     }
590 
591     final public Object CoreFunctionCall() throws ParseException {
592         int code = 0;
593         ArrayList args;
594         code = CoreFunctionName();
595         args = ArgumentList();
596         if (args == null) {
597             {
598                 if (true) {
599                     return compiler.function(code, null);
600                 }
601             }
602         } else {
603             {
604                 if (true) {
605                     return compiler.function(code, args.toArray());
606                 }
607             }
608         }
609         throw new Error("Missing return statement in function");
610     }
611 
612     final public int CoreFunctionName() throws ParseException {
613         int code;
614         switch (jj_nt.kind) {
615         case FUNCTION_LAST:
616             jj_consume_token(FUNCTION_LAST);
617             code = Compiler.FUNCTION_LAST;
618             break;
619         case FUNCTION_POSITION:
620             jj_consume_token(FUNCTION_POSITION);
621             code = Compiler.FUNCTION_POSITION;
622             break;
623         case FUNCTION_COUNT:
624             jj_consume_token(FUNCTION_COUNT);
625             code = Compiler.FUNCTION_COUNT;
626             break;
627         case FUNCTION_ID:
628             jj_consume_token(FUNCTION_ID);
629             code = Compiler.FUNCTION_ID;
630             break;
631         case FUNCTION_LOCAL_NAME:
632             jj_consume_token(FUNCTION_LOCAL_NAME);
633             code = Compiler.FUNCTION_LOCAL_NAME;
634             break;
635         case FUNCTION_NAMESPACE_URI:
636             jj_consume_token(FUNCTION_NAMESPACE_URI);
637             code = Compiler.FUNCTION_NAMESPACE_URI;
638             break;
639         case FUNCTION_NAME:
640             jj_consume_token(FUNCTION_NAME);
641             code = Compiler.FUNCTION_NAME;
642             break;
643         case FUNCTION_STRING:
644             jj_consume_token(FUNCTION_STRING);
645             code = Compiler.FUNCTION_STRING;
646             break;
647         case FUNCTION_CONCAT:
648             jj_consume_token(FUNCTION_CONCAT);
649             code = Compiler.FUNCTION_CONCAT;
650             break;
651         case FUNCTION_STARTS_WITH:
652             jj_consume_token(FUNCTION_STARTS_WITH);
653             code = Compiler.FUNCTION_STARTS_WITH;
654             break;
655         case FUNCTION_ENDS_WITH:
656             jj_consume_token(FUNCTION_ENDS_WITH);
657             code = Compiler.FUNCTION_ENDS_WITH;
658             break;
659         case FUNCTION_CONTAINS:
660             jj_consume_token(FUNCTION_CONTAINS);
661             code = Compiler.FUNCTION_CONTAINS;
662             break;
663         case FUNCTION_SUBSTRING_BEFORE:
664             jj_consume_token(FUNCTION_SUBSTRING_BEFORE);
665             code = Compiler.FUNCTION_SUBSTRING_BEFORE;
666             break;
667         case FUNCTION_SUBSTRING_AFTER:
668             jj_consume_token(FUNCTION_SUBSTRING_AFTER);
669             code = Compiler.FUNCTION_SUBSTRING_AFTER;
670             break;
671         case FUNCTION_SUBSTRING:
672             jj_consume_token(FUNCTION_SUBSTRING);
673             code = Compiler.FUNCTION_SUBSTRING;
674             break;
675         case FUNCTION_STRING_LENGTH:
676             jj_consume_token(FUNCTION_STRING_LENGTH);
677             code = Compiler.FUNCTION_STRING_LENGTH;
678             break;
679         case FUNCTION_NORMALIZE_SPACE:
680             jj_consume_token(FUNCTION_NORMALIZE_SPACE);
681             code = Compiler.FUNCTION_NORMALIZE_SPACE;
682             break;
683         case FUNCTION_TRANSLATE:
684             jj_consume_token(FUNCTION_TRANSLATE);
685             code = Compiler.FUNCTION_TRANSLATE;
686             break;
687         case FUNCTION_BOOLEAN:
688             jj_consume_token(FUNCTION_BOOLEAN);
689             code = Compiler.FUNCTION_BOOLEAN;
690             break;
691         case FUNCTION_NOT:
692             jj_consume_token(FUNCTION_NOT);
693             code = Compiler.FUNCTION_NOT;
694             break;
695         case FUNCTION_TRUE:
696             jj_consume_token(FUNCTION_TRUE);
697             code = Compiler.FUNCTION_TRUE;
698             break;
699         case FUNCTION_FALSE:
700             jj_consume_token(FUNCTION_FALSE);
701             code = Compiler.FUNCTION_FALSE;
702             break;
703         case FUNCTION_NULL:
704             jj_consume_token(FUNCTION_NULL);
705             code = Compiler.FUNCTION_NULL;
706             break;
707         case FUNCTION_LANG:
708             jj_consume_token(FUNCTION_LANG);
709             code = Compiler.FUNCTION_LANG;
710             break;
711         case FUNCTION_NUMBER:
712             jj_consume_token(FUNCTION_NUMBER);
713             code = Compiler.FUNCTION_NUMBER;
714             break;
715         case FUNCTION_SUM:
716             jj_consume_token(FUNCTION_SUM);
717             code = Compiler.FUNCTION_SUM;
718             break;
719         case FUNCTION_FLOOR:
720             jj_consume_token(FUNCTION_FLOOR);
721             code = Compiler.FUNCTION_FLOOR;
722             break;
723         case FUNCTION_CEILING:
724             jj_consume_token(FUNCTION_CEILING);
725             code = Compiler.FUNCTION_CEILING;
726             break;
727         case FUNCTION_ROUND:
728             jj_consume_token(FUNCTION_ROUND);
729             code = Compiler.FUNCTION_ROUND;
730             break;
731         case FUNCTION_KEY:
732             jj_consume_token(FUNCTION_KEY);
733             code = Compiler.FUNCTION_KEY;
734             break;
735         case FUNCTION_FORMAT_NUMBER:
736             jj_consume_token(FUNCTION_FORMAT_NUMBER);
737             code = Compiler.FUNCTION_FORMAT_NUMBER;
738             break;
739         default:
740             jj_la1[2] = jj_gen;
741             jj_consume_token(-1);
742             throw new ParseException();
743         }
744         {
745             if (true) {
746                 return code;
747             }
748         }
749         throw new Error("Missing return statement in function");
750     }
751 
752     final public void disable_tracing() {
753     }
754 
755     final public void enable_tracing() {
756     }
757 
758     /* [23] EqualityExpr ::= RelationalExpr | EqualityExpr '=' RelationalExpr | EqualityExpr '!=' RelationalExpr */
759     final public Object EqualityExpr() throws ParseException {
760         Object ex, r;
761         ex = RelationalExpr();
762         label_10: while (true) {
763             switch (jj_nt.kind) {
764             case EQ:
765             case NEQ:
766                 ;
767                 break;
768             default:
769                 jj_la1[26] = jj_gen;
770                 break label_10;
771             }
772             switch (jj_nt.kind) {
773             case EQ:
774                 jj_consume_token(EQ);
775                 r = RelationalExpr();
776                 ex = compiler.equal(ex, r);
777                 break;
778             case NEQ:
779                 jj_consume_token(NEQ);
780                 r = RelationalExpr();
781                 ex = compiler.notEqual(ex, r);
782                 break;
783             default:
784                 jj_la1[27] = jj_gen;
785                 jj_consume_token(-1);
786                 throw new ParseException();
787             }
788         }
789         {
790             if (true) {
791                 return ex;
792             }
793         }
794         throw new Error("Missing return statement in function");
795     }
796 
797     /* [14] Expr ::= OrExpr */
798     final public Object Expression() throws ParseException {
799         Object ex;
800         ex = OrExpr();
801         {
802             if (true) {
803                 return ex;
804             }
805         }
806         throw new Error("Missing return statement in function");
807     }
808 
809     /* [20] FilterExpr ::= PrimaryExpr | FilterExpr Predicate */
810     final public Object FilterExpr() throws ParseException {
811         Object ex, p;
812         final ArrayList ps = new ArrayList();
813         boolean path = false;
814         final ArrayList steps = new ArrayList();
815         ex = PrimaryExpr();
816         label_6: while (true) {
817             switch (jj_nt.kind) {
818             case 85:
819                 ;
820                 break;
821             default:
822                 jj_la1[22] = jj_gen;
823                 break label_6;
824             }
825             p = Predicate();
826             path = true;
827             ps.add(p);
828         }
829         label_7: while (true) {
830             switch (jj_nt.kind) {
831             case SLASH:
832             case SLASHSLASH:
833                 ;
834                 break;
835             default:
836                 jj_la1[23] = jj_gen;
837                 break label_7;
838             }
839             LocationStep(steps);
840             path = true;
841         }
842         if (path) {
843             {
844                 if (true) {
845                     return compiler.expressionPath(ex, ps.toArray(), steps.toArray());
846                 }
847             }
848         } else {
849             {
850                 if (true) {
851                     return ex;
852                 }
853             }
854         }
855         throw new Error("Missing return statement in function");
856     }
857 
858     /* [16] FunctionCall ::= FunctionName '(' ( Argument ( ',' Argument)*)? ')' */
859     final public Object FunctionCall() throws ParseException {
860         Object name;
861         ArrayList args;
862         name = FunctionName();
863         args = ArgumentList();
864         if (args == null) {
865             {
866                 if (true) {
867                     return compiler.function(name, null);
868                 }
869             }
870         } else {
871             {
872                 if (true) {
873                     return compiler.function(name, args.toArray());
874                 }
875             }
876         }
877         throw new Error("Missing return statement in function");
878     }
879 
880     /* [35] FunctionName ::= QName - NodeType */
881     final public Object FunctionName() throws ParseException {
882         Object qname;
883         qname = QName_Without_CoreFunctions();
884         {
885             if (true) {
886                 return qname;
887             }
888         }
889         throw new Error("Missing return statement in function");
890     }
891 
892     public ParseException generateParseException() {
893         jj_expentries.removeAllElements();
894         final boolean[] la1tokens = new boolean[90];
895         for (int i = 0; i < 90; i++) {
896             la1tokens[i] = false;
897         }
898         if (jj_kind >= 0) {
899             la1tokens[jj_kind] = true;
900             jj_kind = -1;
901         }
902         for (int i = 0; i < 39; i++) {
903             if (jj_la1[i] == jj_gen) {
904                 for (int j = 0; j < 32; j++) {
905                     if ((jj_la1_0[i] & 1 << j) != 0) {
906                         la1tokens[j] = true;
907                     }
908                     if ((jj_la1_1[i] & 1 << j) != 0) {
909                         la1tokens[32 + j] = true;
910                     }
911                     if ((jj_la1_2[i] & 1 << j) != 0) {
912                         la1tokens[64 + j] = true;
913                     }
914                 }
915             }
916         }
917         for (int i = 0; i < 90; i++) {
918             if (la1tokens[i]) {
919                 jj_expentry = new int[1];
920                 jj_expentry[0] = i;
921                 jj_expentries.addElement(jj_expentry);
922             }
923         }
924         jj_endpos = 0;
925         jj_rescan_token();
926         jj_add_error_token(0, 0);
927         final int[][] exptokseq = new int[jj_expentries.size()][];
928         for (int i = 0; i < jj_expentries.size(); i++) {
929             exptokseq[i] = (int[]) jj_expentries.elementAt(i);
930         }
931         return new ParseException(token, exptokseq, tokenImage);
932     }
933 
934     final public Token getNextToken() {
935         if ((token = jj_nt).next != null) {
936             jj_nt = jj_nt.next;
937         } else {
938             jj_nt = jj_nt.next = token_source.getNextToken();
939         }
940         jj_gen++;
941         return token;
942     }
943 
944     final public Token getToken(final int index) {
945         Token t = lookingAhead ? jj_scanpos : token;
946         for (int i = 0; i < index; i++) {
947             if (t.next != null) {
948                 t = t.next;
949             } else {
950                 t = t.next = token_source.getNextToken();
951             }
952         }
953         return t;
954     }
955 
956     private boolean jj_2_1(final int xla) {
957         jj_la = xla;
958         jj_lastpos = jj_scanpos = token;
959         try {
960             return !jj_3_1();
961         } catch (final LookaheadSuccess ls) {
962             return true;
963         } finally {
964             jj_save(0, xla);
965         }
966     }
967 
968     private boolean jj_2_2(final int xla) {
969         jj_la = xla;
970         jj_lastpos = jj_scanpos = token;
971         try {
972             return !jj_3_2();
973         } catch (final LookaheadSuccess ls) {
974             return true;
975         } finally {
976             jj_save(1, xla);
977         }
978     }
979 
980     private boolean jj_2_3(final int xla) {
981         jj_la = xla;
982         jj_lastpos = jj_scanpos = token;
983         try {
984             return !jj_3_3();
985         } catch (final LookaheadSuccess ls) {
986             return true;
987         } finally {
988             jj_save(2, xla);
989         }
990     }
991 
992     private boolean jj_2_4(final int xla) {
993         jj_la = xla;
994         jj_lastpos = jj_scanpos = token;
995         try {
996             return !jj_3_4();
997         } catch (final LookaheadSuccess ls) {
998             return true;
999         } finally {
1000             jj_save(3, xla);
1001         }
1002     }
1003 
1004     private boolean jj_2_5(final int xla) {
1005         jj_la = xla;
1006         jj_lastpos = jj_scanpos = token;
1007         try {
1008             return !jj_3_5();
1009         } catch (final LookaheadSuccess ls) {
1010             return true;
1011         } finally {
1012             jj_save(4, xla);
1013         }
1014     }
1015 
1016     private boolean jj_2_6(final int xla) {
1017         jj_la = xla;
1018         jj_lastpos = jj_scanpos = token;
1019         try {
1020             return !jj_3_6();
1021         } catch (final LookaheadSuccess ls) {
1022             return true;
1023         } finally {
1024             jj_save(5, xla);
1025         }
1026     }
1027 
1028     private boolean jj_3_1() {
1029         if (jj_3R_15()) {
1030             return true;
1031         }
1032         if (jj_scan_token(80)) {
1033             return true;
1034         }
1035         return false;
1036     }
1037 
1038     private boolean jj_3_2() {
1039         if (jj_3R_16()) {
1040             return true;
1041         }
1042         return false;
1043     }
1044 
1045     private boolean jj_3_3() {
1046         if (jj_3R_17()) {
1047             return true;
1048         }
1049         if (jj_scan_token(81)) {
1050             return true;
1051         }
1052         if (jj_scan_token(82)) {
1053             return true;
1054         }
1055         return false;
1056     }
1057 
1058     private boolean jj_3_4() {
1059         if (jj_scan_token(PI)) {
1060             return true;
1061         }
1062         return false;
1063     }
1064 
1065     private boolean jj_3_5() {
1066         if (jj_3R_18()) {
1067             return true;
1068         }
1069         if (jj_scan_token(81)) {
1070             return true;
1071         }
1072         return false;
1073     }
1074 
1075     private boolean jj_3_6() {
1076         if (jj_3R_19()) {
1077             return true;
1078         }
1079         return false;
1080     }
1081 
1082     private boolean jj_3R_100() {
1083         if (jj_scan_token(AXIS_SELF)) {
1084             return true;
1085         }
1086         return false;
1087     }
1088 
1089     private boolean jj_3R_101() {
1090         if (jj_scan_token(AXIS_CHILD)) {
1091             return true;
1092         }
1093         return false;
1094     }
1095 
1096     private boolean jj_3R_102() {
1097         if (jj_scan_token(AXIS_PARENT)) {
1098             return true;
1099         }
1100         return false;
1101     }
1102 
1103     private boolean jj_3R_103() {
1104         if (jj_scan_token(AXIS_ANCESTOR)) {
1105             return true;
1106         }
1107         return false;
1108     }
1109 
1110     private boolean jj_3R_104() {
1111         if (jj_scan_token(AXIS_ATTRIBUTE)) {
1112             return true;
1113         }
1114         return false;
1115     }
1116 
1117     private boolean jj_3R_105() {
1118         if (jj_scan_token(AXIS_NAMESPACE)) {
1119             return true;
1120         }
1121         return false;
1122     }
1123 
1124     private boolean jj_3R_106() {
1125         if (jj_scan_token(AXIS_PRECEDING)) {
1126             return true;
1127         }
1128         return false;
1129     }
1130 
1131     private boolean jj_3R_107() {
1132         if (jj_scan_token(AXIS_FOLLOWING)) {
1133             return true;
1134         }
1135         return false;
1136     }
1137 
1138     private boolean jj_3R_108() {
1139         if (jj_scan_token(AXIS_DESCENDANT)) {
1140             return true;
1141         }
1142         return false;
1143     }
1144 
1145     private boolean jj_3R_109() {
1146         if (jj_scan_token(AXIS_ANCESTOR_OR_SELF)) {
1147             return true;
1148         }
1149         return false;
1150     }
1151 
1152     private boolean jj_3R_110() {
1153         if (jj_scan_token(AXIS_FOLLOWING_SIBLING)) {
1154             return true;
1155         }
1156         return false;
1157     }
1158 
1159     private boolean jj_3R_111() {
1160         if (jj_scan_token(AXIS_PRECEDING_SIBLING)) {
1161             return true;
1162         }
1163         return false;
1164     }
1165 
1166     private boolean jj_3R_112() {
1167         if (jj_scan_token(AXIS_DESCENDANT_OR_SELF)) {
1168             return true;
1169         }
1170         return false;
1171     }
1172 
1173     private boolean jj_3R_113() {
1174         if (jj_scan_token(87)) {
1175             return true;
1176         }
1177         return false;
1178     }
1179 
1180     private boolean jj_3R_114() {
1181         if (jj_3R_15()) {
1182             return true;
1183         }
1184         return false;
1185     }
1186 
1187     private boolean jj_3R_115() {
1188         if (jj_3R_117()) {
1189             return true;
1190         }
1191         Token xsp;
1192         while (true) {
1193             xsp = jj_scanpos;
1194             if (jj_3R_118()) {
1195                 jj_scanpos = xsp;
1196                 break;
1197             }
1198         }
1199         return false;
1200     }
1201 
1202     private boolean jj_3R_116() {
1203         Token xsp;
1204         xsp = jj_scanpos;
1205         if (jj_3R_119()) {
1206             jj_scanpos = xsp;
1207             if (jj_3R_120()) {
1208                 return true;
1209             }
1210         }
1211         return false;
1212     }
1213 
1214     private boolean jj_3R_117() {
1215         if (jj_3R_121()) {
1216             return true;
1217         }
1218         Token xsp;
1219         while (true) {
1220             xsp = jj_scanpos;
1221             if (jj_3R_122()) {
1222                 jj_scanpos = xsp;
1223                 break;
1224             }
1225         }
1226         return false;
1227     }
1228 
1229     private boolean jj_3R_118() {
1230         Token xsp;
1231         xsp = jj_scanpos;
1232         if (jj_3R_123()) {
1233             jj_scanpos = xsp;
1234             if (jj_3R_124()) {
1235                 jj_scanpos = xsp;
1236                 if (jj_3R_125()) {
1237                     jj_scanpos = xsp;
1238                     if (jj_3R_126()) {
1239                         return true;
1240                     }
1241                 }
1242             }
1243         }
1244         return false;
1245     }
1246 
1247     private boolean jj_3R_119() {
1248         if (jj_scan_token(EQ)) {
1249             return true;
1250         }
1251         if (jj_3R_115()) {
1252             return true;
1253         }
1254         return false;
1255     }
1256 
1257     private boolean jj_3R_120() {
1258         if (jj_scan_token(NEQ)) {
1259             return true;
1260         }
1261         if (jj_3R_115()) {
1262             return true;
1263         }
1264         return false;
1265     }
1266 
1267     private boolean jj_3R_121() {
1268         if (jj_3R_127()) {
1269             return true;
1270         }
1271         Token xsp;
1272         while (true) {
1273             xsp = jj_scanpos;
1274             if (jj_3R_128()) {
1275                 jj_scanpos = xsp;
1276                 break;
1277             }
1278         }
1279         return false;
1280     }
1281 
1282     private boolean jj_3R_122() {
1283         if (jj_scan_token(PLUS)) {
1284             return true;
1285         }
1286         if (jj_3R_121()) {
1287             return true;
1288         }
1289         return false;
1290     }
1291 
1292     private boolean jj_3R_123() {
1293         if (jj_scan_token(LT)) {
1294             return true;
1295         }
1296         if (jj_3R_117()) {
1297             return true;
1298         }
1299         return false;
1300     }
1301 
1302     private boolean jj_3R_124() {
1303         if (jj_scan_token(GT)) {
1304             return true;
1305         }
1306         if (jj_3R_117()) {
1307             return true;
1308         }
1309         return false;
1310     }
1311 
1312     private boolean jj_3R_125() {
1313         if (jj_scan_token(LTE)) {
1314             return true;
1315         }
1316         if (jj_3R_117()) {
1317             return true;
1318         }
1319         return false;
1320     }
1321 
1322     private boolean jj_3R_126() {
1323         if (jj_scan_token(GTE)) {
1324             return true;
1325         }
1326         if (jj_3R_117()) {
1327             return true;
1328         }
1329         return false;
1330     }
1331 
1332     private boolean jj_3R_127() {
1333         if (jj_3R_129()) {
1334             return true;
1335         }
1336         Token xsp;
1337         while (true) {
1338             xsp = jj_scanpos;
1339             if (jj_3R_130()) {
1340                 jj_scanpos = xsp;
1341                 break;
1342             }
1343         }
1344         return false;
1345     }
1346 
1347     private boolean jj_3R_128() {
1348         if (jj_scan_token(MINUS)) {
1349             return true;
1350         }
1351         if (jj_3R_127()) {
1352             return true;
1353         }
1354         return false;
1355     }
1356 
1357     private boolean jj_3R_129() {
1358         Token xsp;
1359         xsp = jj_scanpos;
1360         if (jj_3R_131()) {
1361             jj_scanpos = xsp;
1362             if (jj_3R_132()) {
1363                 return true;
1364             }
1365         }
1366         return false;
1367     }
1368 
1369     private boolean jj_3R_130() {
1370         Token xsp;
1371         xsp = jj_scanpos;
1372         if (jj_3R_133()) {
1373             jj_scanpos = xsp;
1374             if (jj_3R_134()) {
1375                 jj_scanpos = xsp;
1376                 if (jj_3R_135()) {
1377                     return true;
1378                 }
1379             }
1380         }
1381         return false;
1382     }
1383 
1384     private boolean jj_3R_131() {
1385         if (jj_3R_136()) {
1386             return true;
1387         }
1388         return false;
1389     }
1390 
1391     private boolean jj_3R_132() {
1392         if (jj_scan_token(MINUS)) {
1393             return true;
1394         }
1395         if (jj_3R_129()) {
1396             return true;
1397         }
1398         return false;
1399     }
1400 
1401     private boolean jj_3R_133() {
1402         if (jj_scan_token(89)) {
1403             return true;
1404         }
1405         if (jj_3R_129()) {
1406             return true;
1407         }
1408         return false;
1409     }
1410 
1411     private boolean jj_3R_134() {
1412         if (jj_scan_token(DIV)) {
1413             return true;
1414         }
1415         if (jj_3R_129()) {
1416             return true;
1417         }
1418         return false;
1419     }
1420 
1421     private boolean jj_3R_135() {
1422         if (jj_scan_token(MOD)) {
1423             return true;
1424         }
1425         if (jj_3R_129()) {
1426             return true;
1427         }
1428         return false;
1429     }
1430 
1431     private boolean jj_3R_136() {
1432         if (jj_3R_137()) {
1433             return true;
1434         }
1435         Token xsp;
1436         while (true) {
1437             xsp = jj_scanpos;
1438             if (jj_3R_138()) {
1439                 jj_scanpos = xsp;
1440                 break;
1441             }
1442         }
1443         return false;
1444     }
1445 
1446     private boolean jj_3R_137() {
1447         Token xsp;
1448         xsp = jj_scanpos;
1449         if (jj_3R_139()) {
1450             jj_scanpos = xsp;
1451             if (jj_3R_140()) {
1452                 return true;
1453             }
1454         }
1455         return false;
1456     }
1457 
1458     private boolean jj_3R_138() {
1459         if (jj_scan_token(UNION)) {
1460             return true;
1461         }
1462         if (jj_3R_137()) {
1463             return true;
1464         }
1465         return false;
1466     }
1467 
1468     private boolean jj_3R_139() {
1469         if (jj_3R_141()) {
1470             return true;
1471         }
1472         return false;
1473     }
1474 
1475     private boolean jj_3R_140() {
1476         if (jj_3R_142()) {
1477             return true;
1478         }
1479         return false;
1480     }
1481 
1482     private boolean jj_3R_141() {
1483         if (jj_3R_19()) {
1484             return true;
1485         }
1486         Token xsp;
1487         while (true) {
1488             xsp = jj_scanpos;
1489             if (jj_3R_143()) {
1490                 jj_scanpos = xsp;
1491                 break;
1492             }
1493         }
1494         while (true) {
1495             xsp = jj_scanpos;
1496             if (jj_3R_144()) {
1497                 jj_scanpos = xsp;
1498                 break;
1499             }
1500         }
1501         return false;
1502     }
1503 
1504     private boolean jj_3R_142() {
1505         Token xsp;
1506         xsp = jj_scanpos;
1507         if (jj_3R_145()) {
1508             jj_scanpos = xsp;
1509             if (jj_3R_146()) {
1510                 return true;
1511             }
1512         }
1513         return false;
1514     }
1515 
1516     private boolean jj_3R_143() {
1517         if (jj_3R_77()) {
1518             return true;
1519         }
1520         return false;
1521     }
1522 
1523     private boolean jj_3R_144() {
1524         if (jj_3R_16()) {
1525             return true;
1526         }
1527         return false;
1528     }
1529 
1530     private boolean jj_3R_145() {
1531         if (jj_3R_147()) {
1532             return true;
1533         }
1534         return false;
1535     }
1536 
1537     private boolean jj_3R_146() {
1538         if (jj_3R_148()) {
1539             return true;
1540         }
1541         return false;
1542     }
1543 
1544     private boolean jj_3R_147() {
1545         if (jj_3R_22()) {
1546             return true;
1547         }
1548         Token xsp;
1549         while (true) {
1550             xsp = jj_scanpos;
1551             if (jj_3R_149()) {
1552                 jj_scanpos = xsp;
1553                 break;
1554             }
1555         }
1556         return false;
1557     }
1558 
1559     private boolean jj_3R_148() {
1560         Token xsp;
1561         xsp = jj_scanpos;
1562         if (jj_3R_150()) {
1563             jj_scanpos = xsp;
1564             if (jj_scan_token(6)) {
1565                 return true;
1566             }
1567         }
1568         return false;
1569     }
1570 
1571     private boolean jj_3R_149() {
1572         if (jj_3R_16()) {
1573             return true;
1574         }
1575         return false;
1576     }
1577 
1578     private boolean jj_3R_15() {
1579         Token xsp;
1580         xsp = jj_scanpos;
1581         if (jj_3R_20()) {
1582             jj_scanpos = xsp;
1583             if (jj_scan_token(31)) {
1584                 jj_scanpos = xsp;
1585                 if (jj_scan_token(32)) {
1586                     jj_scanpos = xsp;
1587                     if (jj_scan_token(33)) {
1588                         jj_scanpos = xsp;
1589                         if (jj_scan_token(34)) {
1590                             jj_scanpos = xsp;
1591                             if (jj_scan_token(48)) {
1592                                 jj_scanpos = xsp;
1593                                 if (jj_scan_token(49)) {
1594                                     jj_scanpos = xsp;
1595                                     if (jj_scan_token(50)) {
1596                                         jj_scanpos = xsp;
1597                                         if (jj_scan_token(51)) {
1598                                             jj_scanpos = xsp;
1599                                             if (jj_scan_token(53)) {
1600                                                 jj_scanpos = xsp;
1601                                                 if (jj_scan_token(54)) {
1602                                                     jj_scanpos = xsp;
1603                                                     if (jj_scan_token(55)) {
1604                                                         jj_scanpos = xsp;
1605                                                         if (jj_scan_token(56)) {
1606                                                             jj_scanpos = xsp;
1607                                                             if (jj_scan_token(57)) {
1608                                                                 jj_scanpos = xsp;
1609                                                                 if (jj_scan_token(58)) {
1610                                                                     jj_scanpos = xsp;
1611                                                                     if (jj_scan_token(59)) {
1612                                                                         jj_scanpos = xsp;
1613                                                                         if (jj_scan_token(60)) {
1614                                                                             jj_scanpos = xsp;
1615                                                                             if (jj_scan_token(61)) {
1616                                                                                 jj_scanpos = xsp;
1617                                                                                 if (jj_scan_token(62)) {
1618                                                                                     jj_scanpos = xsp;
1619                                                                                     if (jj_scan_token(63)) {
1620                                                                                         jj_scanpos = xsp;
1621                                                                                         if (jj_scan_token(64)) {
1622                                                                                             jj_scanpos = xsp;
1623                                                                                             if (jj_scan_token(65)) {
1624                                                                                                 jj_scanpos = xsp;
1625                                                                                                 if (jj_scan_token(66)) {
1626                                                                                                     jj_scanpos = xsp;
1627                                                                                                     if (jj_scan_token(67)) {
1628                                                                                                         jj_scanpos = xsp;
1629                                                                                                         if (jj_scan_token(68)) {
1630                                                                                                             jj_scanpos = xsp;
1631                                                                                                             if (jj_scan_token(69)) {
1632                                                                                                                 jj_scanpos = xsp;
1633                                                                                                                 if (jj_scan_token(70)) {
1634                                                                                                                     jj_scanpos = xsp;
1635                                                                                                                     if (jj_scan_token(71)) {
1636                                                                                                                         jj_scanpos = xsp;
1637                                                                                                                         if (jj_scan_token(72)) {
1638                                                                                                                             jj_scanpos = xsp;
1639                                                                                                                             if (jj_scan_token(73)) {
1640                                                                                                                                 jj_scanpos = xsp;
1641                                                                                                                                 if (jj_scan_token(74)) {
1642                                                                                                                                     jj_scanpos = xsp;
1643                                                                                                                                     if (jj_scan_token(75)) {
1644                                                                                                                                         jj_scanpos = xsp;
1645                                                                                                                                         if (jj_scan_token(76)) {
1646                                                                                                                                             jj_scanpos = xsp;
1647                                                                                                                                             if (jj_scan_token(
1648                                                                                                                                                     77)) {
1649                                                                                                                                                 jj_scanpos = xsp;
1650                                                                                                                                                 if (jj_scan_token(
1651                                                                                                                                                         52)) {
1652                                                                                                                                                     jj_scanpos = xsp;
1653                                                                                                                                                     if (jj_scan_token(
1654                                                                                                                                                             78)) {
1655                                                                                                                                                         return true;
1656                                                                                                                                                     }
1657                                                                                                                                                 }
1658                                                                                                                                             }
1659                                                                                                                                         }
1660                                                                                                                                     }
1661                                                                                                                                 }
1662                                                                                                                             }
1663                                                                                                                         }
1664                                                                                                                     }
1665                                                                                                                 }
1666                                                                                                             }
1667                                                                                                         }
1668                                                                                                     }
1669                                                                                                 }
1670                                                                                             }
1671                                                                                         }
1672                                                                                     }
1673                                                                                 }
1674                                                                             }
1675                                                                         }
1676                                                                     }
1677                                                                 }
1678                                                             }
1679                                                         }
1680                                                     }
1681                                                 }
1682                                             }
1683                                         }
1684                                     }
1685                                 }
1686                             }
1687                         }
1688                     }
1689                 }
1690             }
1691         }
1692         return false;
1693     }
1694 
1695     private boolean jj_3R_150() {
1696         if (jj_3R_16()) {
1697             return true;
1698         }
1699         Token xsp;
1700         while (true) {
1701             xsp = jj_scanpos;
1702             if (jj_3R_151()) {
1703                 jj_scanpos = xsp;
1704                 break;
1705             }
1706         }
1707         return false;
1708     }
1709 
1710     private boolean jj_3R_151() {
1711         if (jj_3R_16()) {
1712             return true;
1713         }
1714         return false;
1715     }
1716 
1717     private boolean jj_3R_16() {
1718         Token xsp;
1719         xsp = jj_scanpos;
1720         if (jj_scan_token(6)) {
1721             jj_scanpos = xsp;
1722             if (jj_3R_21()) {
1723                 return true;
1724             }
1725         }
1726         if (jj_3R_22()) {
1727             return true;
1728         }
1729         return false;
1730     }
1731 
1732     private boolean jj_3R_17() {
1733         Token xsp;
1734         xsp = jj_scanpos;
1735         if (jj_3R_23()) {
1736             jj_scanpos = xsp;
1737             if (jj_3R_24()) {
1738                 jj_scanpos = xsp;
1739                 if (jj_3R_25()) {
1740                     jj_scanpos = xsp;
1741                     if (jj_3R_26()) {
1742                         return true;
1743                     }
1744                 }
1745             }
1746         }
1747         return false;
1748     }
1749 
1750     private boolean jj_3R_18() {
1751         Token xsp;
1752         xsp = jj_scanpos;
1753         if (jj_3R_27()) {
1754             jj_scanpos = xsp;
1755             if (jj_3R_28()) {
1756                 jj_scanpos = xsp;
1757                 if (jj_3R_29()) {
1758                     jj_scanpos = xsp;
1759                     if (jj_3R_30()) {
1760                         jj_scanpos = xsp;
1761                         if (jj_3R_31()) {
1762                             jj_scanpos = xsp;
1763                             if (jj_3R_32()) {
1764                                 jj_scanpos = xsp;
1765                                 if (jj_3R_33()) {
1766                                     jj_scanpos = xsp;
1767                                     if (jj_3R_34()) {
1768                                         jj_scanpos = xsp;
1769                                         if (jj_3R_35()) {
1770                                             jj_scanpos = xsp;
1771                                             if (jj_3R_36()) {
1772                                                 jj_scanpos = xsp;
1773                                                 if (jj_3R_37()) {
1774                                                     jj_scanpos = xsp;
1775                                                     if (jj_3R_38()) {
1776                                                         jj_scanpos = xsp;
1777                                                         if (jj_3R_39()) {
1778                                                             jj_scanpos = xsp;
1779                                                             if (jj_3R_40()) {
1780                                                                 jj_scanpos = xsp;
1781                                                                 if (jj_3R_41()) {
1782                                                                     jj_scanpos = xsp;
1783                                                                     if (jj_3R_42()) {
1784                                                                         jj_scanpos = xsp;
1785                                                                         if (jj_3R_43()) {
1786                                                                             jj_scanpos = xsp;
1787                                                                             if (jj_3R_44()) {
1788                                                                                 jj_scanpos = xsp;
1789                                                                                 if (jj_3R_45()) {
1790                                                                                     jj_scanpos = xsp;
1791                                                                                     if (jj_3R_46()) {
1792                                                                                         jj_scanpos = xsp;
1793                                                                                         if (jj_3R_47()) {
1794                                                                                             jj_scanpos = xsp;
1795                                                                                             if (jj_3R_48()) {
1796                                                                                                 jj_scanpos = xsp;
1797                                                                                                 if (jj_3R_49()) {
1798                                                                                                     jj_scanpos = xsp;
1799                                                                                                     if (jj_3R_50()) {
1800                                                                                                         jj_scanpos = xsp;
1801                                                                                                         if (jj_3R_51()) {
1802                                                                                                             jj_scanpos = xsp;
1803                                                                                                             if (jj_3R_52()) {
1804                                                                                                                 jj_scanpos = xsp;
1805                                                                                                                 if (jj_3R_53()) {
1806                                                                                                                     jj_scanpos = xsp;
1807                                                                                                                     if (jj_3R_54()) {
1808                                                                                                                         jj_scanpos = xsp;
1809                                                                                                                         if (jj_3R_55()) {
1810                                                                                                                             jj_scanpos = xsp;
1811                                                                                                                             if (jj_3R_56()) {
1812                                                                                                                                 jj_scanpos = xsp;
1813                                                                                                                                 if (jj_3R_57()) {
1814                                                                                                                                     return true;
1815                                                                                                                                 }
1816                                                                                                                             }
1817                                                                                                                         }
1818                                                                                                                     }
1819                                                                                                                 }
1820                                                                                                             }
1821                                                                                                         }
1822                                                                                                     }
1823                                                                                                 }
1824                                                                                             }
1825                                                                                         }
1826                                                                                     }
1827                                                                                 }
1828                                                                             }
1829                                                                         }
1830                                                                     }
1831                                                                 }
1832                                                             }
1833                                                         }
1834                                                     }
1835                                                 }
1836                                             }
1837                                         }
1838                                     }
1839                                 }
1840                             }
1841                         }
1842                     }
1843                 }
1844             }
1845         }
1846         return false;
1847     }
1848 
1849     private boolean jj_3R_19() {
1850         Token xsp;
1851         xsp = jj_scanpos;
1852         if (jj_3R_58()) {
1853             jj_scanpos = xsp;
1854             if (jj_3R_59()) {
1855                 jj_scanpos = xsp;
1856                 if (jj_3R_60()) {
1857                     jj_scanpos = xsp;
1858                     if (jj_3R_61()) {
1859                         jj_scanpos = xsp;
1860                         if (jj_3R_62()) {
1861                             jj_scanpos = xsp;
1862                             if (jj_3R_63()) {
1863                                 return true;
1864                             }
1865                         }
1866                     }
1867                 }
1868             }
1869         }
1870         return false;
1871     }
1872 
1873     private boolean jj_3R_20() {
1874         if (jj_3R_64()) {
1875             return true;
1876         }
1877         return false;
1878     }
1879 
1880     private boolean jj_3R_21() {
1881         if (jj_scan_token(SLASHSLASH)) {
1882             return true;
1883         }
1884         return false;
1885     }
1886 
1887     private boolean jj_3R_22() {
1888         Token xsp;
1889         xsp = jj_scanpos;
1890         if (jj_3R_65()) {
1891             jj_scanpos = xsp;
1892             if (jj_3R_66()) {
1893                 jj_scanpos = xsp;
1894                 if (jj_3R_67()) {
1895                     return true;
1896                 }
1897             }
1898         }
1899         while (true) {
1900             xsp = jj_scanpos;
1901             if (jj_3R_68()) {
1902                 jj_scanpos = xsp;
1903                 break;
1904             }
1905         }
1906         return false;
1907     }
1908 
1909     private boolean jj_3R_23() {
1910         if (jj_scan_token(TEXT)) {
1911             return true;
1912         }
1913         return false;
1914     }
1915 
1916     private boolean jj_3R_24() {
1917         if (jj_scan_token(NODE)) {
1918             return true;
1919         }
1920         return false;
1921     }
1922 
1923     private boolean jj_3R_25() {
1924         if (jj_scan_token(COMMENT)) {
1925             return true;
1926         }
1927         return false;
1928     }
1929 
1930     private boolean jj_3R_26() {
1931         if (jj_scan_token(PI)) {
1932             return true;
1933         }
1934         return false;
1935     }
1936 
1937     private boolean jj_3R_27() {
1938         if (jj_scan_token(FUNCTION_LAST)) {
1939             return true;
1940         }
1941         return false;
1942     }
1943 
1944     private boolean jj_3R_28() {
1945         if (jj_scan_token(FUNCTION_POSITION)) {
1946             return true;
1947         }
1948         return false;
1949     }
1950 
1951     private boolean jj_3R_29() {
1952         if (jj_scan_token(FUNCTION_COUNT)) {
1953             return true;
1954         }
1955         return false;
1956     }
1957 
1958     private boolean jj_3R_30() {
1959         if (jj_scan_token(FUNCTION_ID)) {
1960             return true;
1961         }
1962         return false;
1963     }
1964 
1965     private boolean jj_3R_31() {
1966         if (jj_scan_token(FUNCTION_LOCAL_NAME)) {
1967             return true;
1968         }
1969         return false;
1970     }
1971 
1972     private boolean jj_3R_32() {
1973         if (jj_scan_token(FUNCTION_NAMESPACE_URI)) {
1974             return true;
1975         }
1976         return false;
1977     }
1978 
1979     private boolean jj_3R_33() {
1980         if (jj_scan_token(FUNCTION_NAME)) {
1981             return true;
1982         }
1983         return false;
1984     }
1985 
1986     private boolean jj_3R_34() {
1987         if (jj_scan_token(FUNCTION_STRING)) {
1988             return true;
1989         }
1990         return false;
1991     }
1992 
1993     private boolean jj_3R_35() {
1994         if (jj_scan_token(FUNCTION_CONCAT)) {
1995             return true;
1996         }
1997         return false;
1998     }
1999 
2000     private boolean jj_3R_36() {
2001         if (jj_scan_token(FUNCTION_STARTS_WITH)) {
2002             return true;
2003         }
2004         return false;
2005     }
2006 
2007     private boolean jj_3R_37() {
2008         if (jj_scan_token(FUNCTION_ENDS_WITH)) {
2009             return true;
2010         }
2011         return false;
2012     }
2013 
2014     private boolean jj_3R_38() {
2015         if (jj_scan_token(FUNCTION_CONTAINS)) {
2016             return true;
2017         }
2018         return false;
2019     }
2020 
2021     private boolean jj_3R_39() {
2022         if (jj_scan_token(FUNCTION_SUBSTRING_BEFORE)) {
2023             return true;
2024         }
2025         return false;
2026     }
2027 
2028     private boolean jj_3R_40() {
2029         if (jj_scan_token(FUNCTION_SUBSTRING_AFTER)) {
2030             return true;
2031         }
2032         return false;
2033     }
2034 
2035     private boolean jj_3R_41() {
2036         if (jj_scan_token(FUNCTION_SUBSTRING)) {
2037             return true;
2038         }
2039         return false;
2040     }
2041 
2042     private boolean jj_3R_42() {
2043         if (jj_scan_token(FUNCTION_STRING_LENGTH)) {
2044             return true;
2045         }
2046         return false;
2047     }
2048 
2049     private boolean jj_3R_43() {
2050         if (jj_scan_token(FUNCTION_NORMALIZE_SPACE)) {
2051             return true;
2052         }
2053         return false;
2054     }
2055 
2056     private boolean jj_3R_44() {
2057         if (jj_scan_token(FUNCTION_TRANSLATE)) {
2058             return true;
2059         }
2060         return false;
2061     }
2062 
2063     private boolean jj_3R_45() {
2064         if (jj_scan_token(FUNCTION_BOOLEAN)) {
2065             return true;
2066         }
2067         return false;
2068     }
2069 
2070     private boolean jj_3R_46() {
2071         if (jj_scan_token(FUNCTION_NOT)) {
2072             return true;
2073         }
2074         return false;
2075     }
2076 
2077     private boolean jj_3R_47() {
2078         if (jj_scan_token(FUNCTION_TRUE)) {
2079             return true;
2080         }
2081         return false;
2082     }
2083 
2084     private boolean jj_3R_48() {
2085         if (jj_scan_token(FUNCTION_FALSE)) {
2086             return true;
2087         }
2088         return false;
2089     }
2090 
2091     private boolean jj_3R_49() {
2092         if (jj_scan_token(FUNCTION_NULL)) {
2093             return true;
2094         }
2095         return false;
2096     }
2097 
2098     private boolean jj_3R_50() {
2099         if (jj_scan_token(FUNCTION_LANG)) {
2100             return true;
2101         }
2102         return false;
2103     }
2104 
2105     private boolean jj_3R_51() {
2106         if (jj_scan_token(FUNCTION_NUMBER)) {
2107             return true;
2108         }
2109         return false;
2110     }
2111 
2112     private boolean jj_3R_52() {
2113         if (jj_scan_token(FUNCTION_SUM)) {
2114             return true;
2115         }
2116         return false;
2117     }
2118 
2119     private boolean jj_3R_53() {
2120         if (jj_scan_token(FUNCTION_FLOOR)) {
2121             return true;
2122         }
2123         return false;
2124     }
2125 
2126     private boolean jj_3R_54() {
2127         if (jj_scan_token(FUNCTION_CEILING)) {
2128             return true;
2129         }
2130         return false;
2131     }
2132 
2133     private boolean jj_3R_55() {
2134         if (jj_scan_token(FUNCTION_ROUND)) {
2135             return true;
2136         }
2137         return false;
2138     }
2139 
2140     private boolean jj_3R_56() {
2141         if (jj_scan_token(FUNCTION_KEY)) {
2142             return true;
2143         }
2144         return false;
2145     }
2146 
2147     private boolean jj_3R_57() {
2148         if (jj_scan_token(FUNCTION_FORMAT_NUMBER)) {
2149             return true;
2150         }
2151         return false;
2152     }
2153 
2154     private boolean jj_3R_58() {
2155         if (jj_3R_69()) {
2156             return true;
2157         }
2158         return false;
2159     }
2160 
2161     private boolean jj_3R_59() {
2162         if (jj_scan_token(81)) {
2163             return true;
2164         }
2165         if (jj_3R_70()) {
2166             return true;
2167         }
2168         if (jj_scan_token(82)) {
2169             return true;
2170         }
2171         return false;
2172     }
2173 
2174     private boolean jj_3R_60() {
2175         if (jj_scan_token(Literal)) {
2176             return true;
2177         }
2178         return false;
2179     }
2180 
2181     private boolean jj_3R_61() {
2182         if (jj_scan_token(Number)) {
2183             return true;
2184         }
2185         return false;
2186     }
2187 
2188     private boolean jj_3R_62() {
2189         if (jj_3R_71()) {
2190             return true;
2191         }
2192         return false;
2193     }
2194 
2195     private boolean jj_3R_63() {
2196         if (jj_3R_72()) {
2197             return true;
2198         }
2199         return false;
2200     }
2201 
2202     private boolean jj_3R_64() {
2203         Token xsp;
2204         xsp = jj_scanpos;
2205         if (jj_scan_token(79)) {
2206             jj_scanpos = xsp;
2207             if (jj_scan_token(27)) {
2208                 jj_scanpos = xsp;
2209                 if (jj_scan_token(28)) {
2210                     jj_scanpos = xsp;
2211                     if (jj_scan_token(29)) {
2212                         jj_scanpos = xsp;
2213                         if (jj_scan_token(30)) {
2214                             return true;
2215                         }
2216                     }
2217                 }
2218             }
2219         }
2220         return false;
2221     }
2222 
2223     private boolean jj_3R_65() {
2224         if (jj_3R_73()) {
2225             return true;
2226         }
2227         Token xsp;
2228         xsp = jj_scanpos;
2229         if (jj_3R_74()) {
2230             jj_scanpos = xsp;
2231             if (jj_3R_75()) {
2232                 jj_scanpos = xsp;
2233                 if (jj_3R_76()) {
2234                     return true;
2235                 }
2236             }
2237         }
2238         return false;
2239     }
2240 
2241     private boolean jj_3R_66() {
2242         if (jj_scan_token(83)) {
2243             return true;
2244         }
2245         return false;
2246     }
2247 
2248     private boolean jj_3R_67() {
2249         if (jj_scan_token(84)) {
2250             return true;
2251         }
2252         return false;
2253     }
2254 
2255     private boolean jj_3R_68() {
2256         if (jj_3R_77()) {
2257             return true;
2258         }
2259         return false;
2260     }
2261 
2262     private boolean jj_3R_69() {
2263         if (jj_scan_token(VARIABLE)) {
2264             return true;
2265         }
2266         if (jj_3R_78()) {
2267             return true;
2268         }
2269         return false;
2270     }
2271 
2272     private boolean jj_3R_70() {
2273         if (jj_3R_79()) {
2274             return true;
2275         }
2276         return false;
2277     }
2278 
2279     private boolean jj_3R_71() {
2280         if (jj_3R_18()) {
2281             return true;
2282         }
2283         if (jj_3R_80()) {
2284             return true;
2285         }
2286         return false;
2287     }
2288 
2289     private boolean jj_3R_72() {
2290         if (jj_3R_81()) {
2291             return true;
2292         }
2293         if (jj_3R_80()) {
2294             return true;
2295         }
2296         return false;
2297     }
2298 
2299     private boolean jj_3R_73() {
2300         Token xsp;
2301         xsp = jj_scanpos;
2302         if (jj_3R_82()) {
2303             jj_scanpos = xsp;
2304             if (jj_3R_83()) {
2305                 return true;
2306             }
2307         }
2308         return false;
2309     }
2310 
2311     private boolean jj_3R_74() {
2312         if (jj_3R_17()) {
2313             return true;
2314         }
2315         if (jj_scan_token(81)) {
2316             return true;
2317         }
2318         if (jj_scan_token(82)) {
2319             return true;
2320         }
2321         return false;
2322     }
2323 
2324     private boolean jj_3R_75() {
2325         if (jj_scan_token(PI)) {
2326             return true;
2327         }
2328         if (jj_scan_token(81)) {
2329             return true;
2330         }
2331         if (jj_scan_token(Literal)) {
2332             return true;
2333         }
2334         if (jj_scan_token(82)) {
2335             return true;
2336         }
2337         return false;
2338     }
2339 
2340     private boolean jj_3R_76() {
2341         if (jj_3R_84()) {
2342             return true;
2343         }
2344         return false;
2345     }
2346 
2347     private boolean jj_3R_77() {
2348         if (jj_scan_token(85)) {
2349             return true;
2350         }
2351         if (jj_3R_70()) {
2352             return true;
2353         }
2354         if (jj_scan_token(86)) {
2355             return true;
2356         }
2357         return false;
2358     }
2359 
2360     private boolean jj_3R_78() {
2361         if (jj_3R_15()) {
2362             return true;
2363         }
2364         Token xsp;
2365         xsp = jj_scanpos;
2366         if (jj_3R_85()) {
2367             jj_scanpos = xsp;
2368         }
2369         return false;
2370     }
2371 
2372     private boolean jj_3R_79() {
2373         if (jj_3R_86()) {
2374             return true;
2375         }
2376         Token xsp;
2377         while (true) {
2378             xsp = jj_scanpos;
2379             if (jj_3R_87()) {
2380                 jj_scanpos = xsp;
2381                 break;
2382             }
2383         }
2384         return false;
2385     }
2386 
2387     private boolean jj_3R_80() {
2388         if (jj_scan_token(81)) {
2389             return true;
2390         }
2391         Token xsp;
2392         xsp = jj_scanpos;
2393         if (jj_3R_88()) {
2394             jj_scanpos = xsp;
2395         }
2396         if (jj_scan_token(82)) {
2397             return true;
2398         }
2399         return false;
2400     }
2401 
2402     private boolean jj_3R_81() {
2403         if (jj_3R_89()) {
2404             return true;
2405         }
2406         return false;
2407     }
2408 
2409     private boolean jj_3R_82() {
2410         if (jj_3R_90()) {
2411             return true;
2412         }
2413         return false;
2414     }
2415 
2416     private boolean jj_3R_83() {
2417         if (jj_3R_91()) {
2418             return true;
2419         }
2420         return false;
2421     }
2422 
2423     private boolean jj_3R_84() {
2424         Token xsp;
2425         xsp = jj_scanpos;
2426         if (jj_scan_token(89)) {
2427             jj_scanpos = xsp;
2428             if (jj_3R_92()) {
2429                 return true;
2430             }
2431         }
2432         xsp = jj_scanpos;
2433         if (jj_3R_93()) {
2434             jj_scanpos = xsp;
2435         }
2436         return false;
2437     }
2438 
2439     private boolean jj_3R_85() {
2440         if (jj_scan_token(80)) {
2441             return true;
2442         }
2443         if (jj_3R_15()) {
2444             return true;
2445         }
2446         return false;
2447     }
2448 
2449     private boolean jj_3R_86() {
2450         if (jj_3R_94()) {
2451             return true;
2452         }
2453         Token xsp;
2454         while (true) {
2455             xsp = jj_scanpos;
2456             if (jj_3R_95()) {
2457                 jj_scanpos = xsp;
2458                 break;
2459             }
2460         }
2461         return false;
2462     }
2463 
2464     private boolean jj_3R_87() {
2465         if (jj_scan_token(OR)) {
2466             return true;
2467         }
2468         if (jj_3R_86()) {
2469             return true;
2470         }
2471         return false;
2472     }
2473 
2474     private boolean jj_3R_88() {
2475         if (jj_3R_96()) {
2476             return true;
2477         }
2478         Token xsp;
2479         while (true) {
2480             xsp = jj_scanpos;
2481             if (jj_3R_97()) {
2482                 jj_scanpos = xsp;
2483                 break;
2484             }
2485         }
2486         return false;
2487     }
2488 
2489     private boolean jj_3R_89() {
2490         Token xsp;
2491         xsp = jj_scanpos;
2492         if (jj_3R_98()) {
2493             jj_scanpos = xsp;
2494             if (jj_3R_99()) {
2495                 return true;
2496             }
2497         }
2498         return false;
2499     }
2500 
2501     private boolean jj_3R_90() {
2502         Token xsp;
2503         xsp = jj_scanpos;
2504         if (jj_3R_100()) {
2505             jj_scanpos = xsp;
2506             if (jj_3R_101()) {
2507                 jj_scanpos = xsp;
2508                 if (jj_3R_102()) {
2509                     jj_scanpos = xsp;
2510                     if (jj_3R_103()) {
2511                         jj_scanpos = xsp;
2512                         if (jj_3R_104()) {
2513                             jj_scanpos = xsp;
2514                             if (jj_3R_105()) {
2515                                 jj_scanpos = xsp;
2516                                 if (jj_3R_106()) {
2517                                     jj_scanpos = xsp;
2518                                     if (jj_3R_107()) {
2519                                         jj_scanpos = xsp;
2520                                         if (jj_3R_108()) {
2521                                             jj_scanpos = xsp;
2522                                             if (jj_3R_109()) {
2523                                                 jj_scanpos = xsp;
2524                                                 if (jj_3R_110()) {
2525                                                     jj_scanpos = xsp;
2526                                                     if (jj_3R_111()) {
2527                                                         jj_scanpos = xsp;
2528                                                         if (jj_3R_112()) {
2529                                                             return true;
2530                                                         }
2531                                                     }
2532                                                 }
2533                                             }
2534                                         }
2535                                     }
2536                                 }
2537                             }
2538                         }
2539                     }
2540                 }
2541             }
2542         }
2543         return false;
2544     }
2545 
2546     private boolean jj_3R_91() {
2547         Token xsp;
2548         xsp = jj_scanpos;
2549         if (jj_3R_113()) {
2550             jj_scanpos = xsp;
2551         }
2552         return false;
2553     }
2554 
2555     private boolean jj_3R_92() {
2556         if (jj_3R_15()) {
2557             return true;
2558         }
2559         return false;
2560     }
2561 
2562     private boolean jj_3R_93() {
2563         if (jj_scan_token(80)) {
2564             return true;
2565         }
2566         Token xsp;
2567         xsp = jj_scanpos;
2568         if (jj_scan_token(89)) {
2569             jj_scanpos = xsp;
2570             if (jj_3R_114()) {
2571                 return true;
2572             }
2573         }
2574         return false;
2575     }
2576 
2577     private boolean jj_3R_94() {
2578         if (jj_3R_115()) {
2579             return true;
2580         }
2581         Token xsp;
2582         while (true) {
2583             xsp = jj_scanpos;
2584             if (jj_3R_116()) {
2585                 jj_scanpos = xsp;
2586                 break;
2587             }
2588         }
2589         return false;
2590     }
2591 
2592     private boolean jj_3R_95() {
2593         if (jj_scan_token(AND)) {
2594             return true;
2595         }
2596         if (jj_3R_94()) {
2597             return true;
2598         }
2599         return false;
2600     }
2601 
2602     private boolean jj_3R_96() {
2603         if (jj_3R_70()) {
2604             return true;
2605         }
2606         return false;
2607     }
2608 
2609     private boolean jj_3R_97() {
2610         if (jj_scan_token(88)) {
2611             return true;
2612         }
2613         if (jj_3R_96()) {
2614             return true;
2615         }
2616         return false;
2617     }
2618 
2619     private boolean jj_3R_98() {
2620         if (jj_3R_15()) {
2621             return true;
2622         }
2623         if (jj_scan_token(80)) {
2624             return true;
2625         }
2626         if (jj_3R_15()) {
2627             return true;
2628         }
2629         return false;
2630     }
2631 
2632     private boolean jj_3R_99() {
2633         if (jj_3R_64()) {
2634             return true;
2635         }
2636         return false;
2637     }
2638 
2639     private void jj_add_error_token(final int kind, final int pos) {
2640         if (pos >= 100) {
2641             return;
2642         }
2643         if (pos == jj_endpos + 1) {
2644             jj_lasttokens[jj_endpos++] = kind;
2645         } else if (jj_endpos != 0) {
2646             jj_expentry = new int[jj_endpos];
2647             for (int i = 0; i < jj_endpos; i++) {
2648                 jj_expentry[i] = jj_lasttokens[i];
2649             }
2650             boolean exists = false;
2651             for (final java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
2652                 final int[] oldentry = (int[]) e.nextElement();
2653                 if (oldentry.length == jj_expentry.length) {
2654                     exists = true;
2655                     for (int i = 0; i < jj_expentry.length; i++) {
2656                         if (oldentry[i] != jj_expentry[i]) {
2657                             exists = false;
2658                             break;
2659                         }
2660                     }
2661                     if (exists) {
2662                         break;
2663                     }
2664                 }
2665             }
2666             if (!exists) {
2667                 jj_expentries.addElement(jj_expentry);
2668             }
2669             if (pos != 0) {
2670                 jj_lasttokens[(jj_endpos = pos) - 1] = kind;
2671             }
2672         }
2673     }
2674 
2675     private Token jj_consume_token(final int kind) throws ParseException {
2676         final Token oldToken = token;
2677         if ((token = jj_nt).next != null) {
2678             jj_nt = jj_nt.next;
2679         } else {
2680             jj_nt = jj_nt.next = token_source.getNextToken();
2681         }
2682         if (token.kind == kind) {
2683             jj_gen++;
2684             if (++jj_gc > 100) {
2685                 jj_gc = 0;
2686                 for (final JJCalls jj_2_rtn : jj_2_rtns) {
2687                     JJCalls c = jj_2_rtn;
2688                     while (c != null) {
2689                         if (c.gen < jj_gen) {
2690                             c.first = null;
2691                         }
2692                         c = c.next;
2693                     }
2694                 }
2695             }
2696             return token;
2697         }
2698         jj_nt = token;
2699         token = oldToken;
2700         jj_kind = kind;
2701         throw generateParseException();
2702     }
2703 
2704     private void jj_rescan_token() {
2705         jj_rescan = true;
2706         for (int i = 0; i < 6; i++) {
2707             JJCalls p = jj_2_rtns[i];
2708             do {
2709                 if (p.gen > jj_gen) {
2710                     jj_la = p.arg;
2711                     jj_lastpos = jj_scanpos = p.first;
2712                     switch (i) {
2713                     case 0:
2714                         jj_3_1();
2715                         break;
2716                     case 1:
2717                         jj_3_2();
2718                         break;
2719                     case 2:
2720                         jj_3_3();
2721                         break;
2722                     case 3:
2723                         jj_3_4();
2724                         break;
2725                     case 4:
2726                         jj_3_5();
2727                         break;
2728                     case 5:
2729                         jj_3_6();
2730                         break;
2731                     }
2732                 }
2733                 p = p.next;
2734             } while (p != null);
2735         }
2736         jj_rescan = false;
2737     }
2738 
2739     private void jj_save(final int index, final int xla) {
2740         JJCalls p = jj_2_rtns[index];
2741         while (p.gen > jj_gen) {
2742             if (p.next == null) {
2743                 p = p.next = new JJCalls();
2744                 break;
2745             }
2746             p = p.next;
2747         }
2748         p.gen = jj_gen + xla - jj_la;
2749         p.first = token;
2750         p.arg = xla;
2751     }
2752 
2753     private boolean jj_scan_token(final int kind) {
2754         if (jj_scanpos == jj_lastpos) {
2755             jj_la--;
2756             if (jj_scanpos.next == null) {
2757                 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
2758             } else {
2759                 jj_lastpos = jj_scanpos = jj_scanpos.next;
2760             }
2761         } else {
2762             jj_scanpos = jj_scanpos.next;
2763         }
2764         if (jj_rescan) {
2765             int i = 0;
2766             Token tok = token;
2767             while (tok != null && tok != jj_scanpos) {
2768                 i++;
2769                 tok = tok.next;
2770             }
2771             if (tok != null) {
2772                 jj_add_error_token(kind, i);
2773             }
2774         }
2775         if (jj_scanpos.kind != kind) {
2776             return true;
2777         }
2778         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
2779             throw jj_ls;
2780         }
2781         return false;
2782     }
2783 
2784     /* [1] LocationPath ::= RelativeLocationPath | AbsoluteLocationPath */
2785     final public Object LocationPath() throws ParseException {
2786         Object ex = null;
2787         switch (jj_nt.kind) {
2788         case OR:
2789         case AND:
2790         case MOD:
2791         case DIV:
2792         case NODE:
2793         case TEXT:
2794         case COMMENT:
2795         case PI:
2796         case AXIS_SELF:
2797         case AXIS_CHILD:
2798         case AXIS_PARENT:
2799         case AXIS_ANCESTOR:
2800         case AXIS_ATTRIBUTE:
2801         case AXIS_NAMESPACE:
2802         case AXIS_PRECEDING:
2803         case AXIS_FOLLOWING:
2804         case AXIS_DESCENDANT:
2805         case AXIS_ANCESTOR_OR_SELF:
2806         case AXIS_FOLLOWING_SIBLING:
2807         case AXIS_PRECEDING_SIBLING:
2808         case AXIS_DESCENDANT_OR_SELF:
2809         case FUNCTION_LAST:
2810         case FUNCTION_POSITION:
2811         case FUNCTION_COUNT:
2812         case FUNCTION_ID:
2813         case FUNCTION_KEY:
2814         case FUNCTION_LOCAL_NAME:
2815         case FUNCTION_NAMESPACE_URI:
2816         case FUNCTION_NAME:
2817         case FUNCTION_STRING:
2818         case FUNCTION_CONCAT:
2819         case FUNCTION_STARTS_WITH:
2820         case FUNCTION_ENDS_WITH:
2821         case FUNCTION_CONTAINS:
2822         case FUNCTION_SUBSTRING_BEFORE:
2823         case FUNCTION_SUBSTRING_AFTER:
2824         case FUNCTION_SUBSTRING:
2825         case FUNCTION_STRING_LENGTH:
2826         case FUNCTION_NORMALIZE_SPACE:
2827         case FUNCTION_TRANSLATE:
2828         case FUNCTION_BOOLEAN:
2829         case FUNCTION_NOT:
2830         case FUNCTION_TRUE:
2831         case FUNCTION_FALSE:
2832         case FUNCTION_NULL:
2833         case FUNCTION_LANG:
2834         case FUNCTION_NUMBER:
2835         case FUNCTION_SUM:
2836         case FUNCTION_FLOOR:
2837         case FUNCTION_CEILING:
2838         case FUNCTION_ROUND:
2839         case FUNCTION_FORMAT_NUMBER:
2840         case NCName:
2841         case 83:
2842         case 84:
2843         case 87:
2844         case 89:
2845             ex = RelativeLocationPath();
2846             break;
2847         case SLASH:
2848         case SLASHSLASH:
2849             ex = AbsoluteLocationPath();
2850             break;
2851         default:
2852             jj_la1[5] = jj_gen;
2853             jj_consume_token(-1);
2854             throw new ParseException();
2855         }
2856         {
2857             if (true) {
2858                 return ex;
2859             }
2860         }
2861         throw new Error("Missing return statement in function");
2862     }
2863 
2864     /* [4] Step ::= AxisSpecifier NodeTest Predicate* | AbbreviatedStep */
2865     final public void LocationStep(final ArrayList steps) throws ParseException {
2866         Object t;
2867         final Object s;
2868         switch (jj_nt.kind) {
2869         case SLASH:
2870             jj_consume_token(SLASH);
2871             break;
2872         case SLASHSLASH:
2873             jj_consume_token(SLASHSLASH);
2874             // Abbreviated step: descendant-or-self::node()
2875             t = compiler.nodeTypeTest(Compiler.NODE_TYPE_NODE);
2876             steps.add(compiler.step(Compiler.AXIS_DESCENDANT_OR_SELF, t, null));
2877             break;
2878         default:
2879             jj_la1[9] = jj_gen;
2880             jj_consume_token(-1);
2881             throw new ParseException();
2882         }
2883         NodeTest(steps);
2884     }
2885 
2886     /*
2887      * [26] MultiplicativeExpr ::= UnaryExpr | MultiplicativeExpr MultiplyOperator UnaryExpr | MultiplicativeExpr 'div' UnaryExpr | MultiplicativeExpr 'mod'
2888      * UnaryExpr
2889      */
2890     final public Object MultiplicativeExpr() throws ParseException {
2891         Object ex, r;
2892         ex = UnaryExpr();
2893         label_14: while (true) {
2894             switch (jj_nt.kind) {
2895             case MOD:
2896             case DIV:
2897             case 89:
2898                 ;
2899                 break;
2900             default:
2901                 jj_la1[32] = jj_gen;
2902                 break label_14;
2903             }
2904             switch (jj_nt.kind) {
2905             case 89:
2906                 jj_consume_token(89);
2907                 r = UnaryExpr();
2908                 ex = compiler.multiply(ex, r);
2909                 break;
2910             case DIV:
2911                 jj_consume_token(DIV);
2912                 r = UnaryExpr();
2913                 ex = compiler.divide(ex, r);
2914                 break;
2915             case MOD:
2916                 jj_consume_token(MOD);
2917                 r = UnaryExpr();
2918                 ex = compiler.mod(ex, r);
2919                 break;
2920             default:
2921                 jj_la1[33] = jj_gen;
2922                 jj_consume_token(-1);
2923                 throw new ParseException();
2924             }
2925         }
2926         {
2927             if (true) {
2928                 return ex;
2929             }
2930         }
2931         throw new Error("Missing return statement in function");
2932     }
2933 
2934     // Note: XPath does not have reserved words, so we have to include all these terminals
2935     final public String NCName() throws ParseException {
2936         switch (jj_nt.kind) {
2937         case OR:
2938         case AND:
2939         case MOD:
2940         case DIV:
2941         case NCName:
2942             NCName_Without_CoreFunctions();
2943             break;
2944         case NODE:
2945             jj_consume_token(NODE);
2946             break;
2947         case TEXT:
2948             jj_consume_token(TEXT);
2949             break;
2950         case COMMENT:
2951             jj_consume_token(COMMENT);
2952             break;
2953         case PI:
2954             jj_consume_token(PI);
2955             break;
2956         case FUNCTION_LAST:
2957             jj_consume_token(FUNCTION_LAST);
2958             break;
2959         case FUNCTION_POSITION:
2960             jj_consume_token(FUNCTION_POSITION);
2961             break;
2962         case FUNCTION_COUNT:
2963             jj_consume_token(FUNCTION_COUNT);
2964             break;
2965         case FUNCTION_ID:
2966             jj_consume_token(FUNCTION_ID);
2967             break;
2968         case FUNCTION_LOCAL_NAME:
2969             jj_consume_token(FUNCTION_LOCAL_NAME);
2970             break;
2971         case FUNCTION_NAMESPACE_URI:
2972             jj_consume_token(FUNCTION_NAMESPACE_URI);
2973             break;
2974         case FUNCTION_NAME:
2975             jj_consume_token(FUNCTION_NAME);
2976             break;
2977         case FUNCTION_STRING:
2978             jj_consume_token(FUNCTION_STRING);
2979             break;
2980         case FUNCTION_CONCAT:
2981             jj_consume_token(FUNCTION_CONCAT);
2982             break;
2983         case FUNCTION_STARTS_WITH:
2984             jj_consume_token(FUNCTION_STARTS_WITH);
2985             break;
2986         case FUNCTION_ENDS_WITH:
2987             jj_consume_token(FUNCTION_ENDS_WITH);
2988             break;
2989         case FUNCTION_CONTAINS:
2990             jj_consume_token(FUNCTION_CONTAINS);
2991             break;
2992         case FUNCTION_SUBSTRING_BEFORE:
2993             jj_consume_token(FUNCTION_SUBSTRING_BEFORE);
2994             break;
2995         case FUNCTION_SUBSTRING_AFTER:
2996             jj_consume_token(FUNCTION_SUBSTRING_AFTER);
2997             break;
2998         case FUNCTION_SUBSTRING:
2999             jj_consume_token(FUNCTION_SUBSTRING);
3000             break;
3001         case FUNCTION_STRING_LENGTH:
3002             jj_consume_token(FUNCTION_STRING_LENGTH);
3003             break;
3004         case FUNCTION_NORMALIZE_SPACE:
3005             jj_consume_token(FUNCTION_NORMALIZE_SPACE);
3006             break;
3007         case FUNCTION_TRANSLATE:
3008             jj_consume_token(FUNCTION_TRANSLATE);
3009             break;
3010         case FUNCTION_BOOLEAN:
3011             jj_consume_token(FUNCTION_BOOLEAN);
3012             break;
3013         case FUNCTION_NOT:
3014             jj_consume_token(FUNCTION_NOT);
3015             break;
3016         case FUNCTION_TRUE:
3017             jj_consume_token(FUNCTION_TRUE);
3018             break;
3019         case FUNCTION_FALSE:
3020             jj_consume_token(FUNCTION_FALSE);
3021             break;
3022         case FUNCTION_NULL:
3023             jj_consume_token(FUNCTION_NULL);
3024             break;
3025         case FUNCTION_LANG:
3026             jj_consume_token(FUNCTION_LANG);
3027             break;
3028         case FUNCTION_NUMBER:
3029             jj_consume_token(FUNCTION_NUMBER);
3030             break;
3031         case FUNCTION_SUM:
3032             jj_consume_token(FUNCTION_SUM);
3033             break;
3034         case FUNCTION_FLOOR:
3035             jj_consume_token(FUNCTION_FLOOR);
3036             break;
3037         case FUNCTION_CEILING:
3038             jj_consume_token(FUNCTION_CEILING);
3039             break;
3040         case FUNCTION_ROUND:
3041             jj_consume_token(FUNCTION_ROUND);
3042             break;
3043         case FUNCTION_KEY:
3044             jj_consume_token(FUNCTION_KEY);
3045             break;
3046         case FUNCTION_FORMAT_NUMBER:
3047             jj_consume_token(FUNCTION_FORMAT_NUMBER);
3048             break;
3049         default:
3050             jj_la1[0] = jj_gen;
3051             jj_consume_token(-1);
3052             throw new ParseException();
3053         }
3054         {
3055             if (true) {
3056                 return token.image;
3057             }
3058         }
3059         throw new Error("Missing return statement in function");
3060     }
3061 
3062     final public String NCName_Without_CoreFunctions() throws ParseException {
3063         switch (jj_nt.kind) {
3064         case NCName:
3065             jj_consume_token(NCName);
3066             break;
3067         case OR:
3068             jj_consume_token(OR);
3069             break;
3070         case AND:
3071             jj_consume_token(AND);
3072             break;
3073         case MOD:
3074             jj_consume_token(MOD);
3075             break;
3076         case DIV:
3077             jj_consume_token(DIV);
3078             break;
3079         default:
3080             jj_la1[1] = jj_gen;
3081             jj_consume_token(-1);
3082             throw new ParseException();
3083         }
3084         {
3085             if (true) {
3086                 return token.image;
3087             }
3088         }
3089         throw new Error("Missing return statement in function");
3090     }
3091 
3092     /* [7] NodeTest ::= WildcardName | NodeType '(' ')' | 'processing-instruction' '(' Literal ')' */
3093     final public void NodeTest(final ArrayList steps) throws ParseException {
3094         int axis;
3095         int type = -1;
3096         String instruction = null;
3097         Object name = null;
3098         Object s;
3099         Object p;
3100         final ArrayList ps = new ArrayList();
3101         switch (jj_nt.kind) {
3102         case OR:
3103         case AND:
3104         case MOD:
3105         case DIV:
3106         case NODE:
3107         case TEXT:
3108         case COMMENT:
3109         case PI:
3110         case AXIS_SELF:
3111         case AXIS_CHILD:
3112         case AXIS_PARENT:
3113         case AXIS_ANCESTOR:
3114         case AXIS_ATTRIBUTE:
3115         case AXIS_NAMESPACE:
3116         case AXIS_PRECEDING:
3117         case AXIS_FOLLOWING:
3118         case AXIS_DESCENDANT:
3119         case AXIS_ANCESTOR_OR_SELF:
3120         case AXIS_FOLLOWING_SIBLING:
3121         case AXIS_PRECEDING_SIBLING:
3122         case AXIS_DESCENDANT_OR_SELF:
3123         case FUNCTION_LAST:
3124         case FUNCTION_POSITION:
3125         case FUNCTION_COUNT:
3126         case FUNCTION_ID:
3127         case FUNCTION_KEY:
3128         case FUNCTION_LOCAL_NAME:
3129         case FUNCTION_NAMESPACE_URI:
3130         case FUNCTION_NAME:
3131         case FUNCTION_STRING:
3132         case FUNCTION_CONCAT:
3133         case FUNCTION_STARTS_WITH:
3134         case FUNCTION_ENDS_WITH:
3135         case FUNCTION_CONTAINS:
3136         case FUNCTION_SUBSTRING_BEFORE:
3137         case FUNCTION_SUBSTRING_AFTER:
3138         case FUNCTION_SUBSTRING:
3139         case FUNCTION_STRING_LENGTH:
3140         case FUNCTION_NORMALIZE_SPACE:
3141         case FUNCTION_TRANSLATE:
3142         case FUNCTION_BOOLEAN:
3143         case FUNCTION_NOT:
3144         case FUNCTION_TRUE:
3145         case FUNCTION_FALSE:
3146         case FUNCTION_NULL:
3147         case FUNCTION_LANG:
3148         case FUNCTION_NUMBER:
3149         case FUNCTION_SUM:
3150         case FUNCTION_FLOOR:
3151         case FUNCTION_CEILING:
3152         case FUNCTION_ROUND:
3153         case FUNCTION_FORMAT_NUMBER:
3154         case NCName:
3155         case 87:
3156         case 89:
3157             axis = AxisSpecifier();
3158             if (jj_2_3(2147483647)) {
3159                 type = NodeType();
3160                 jj_consume_token(81);
3161                 jj_consume_token(82);
3162             } else if (jj_2_4(2147483647)) {
3163                 jj_consume_token(PI);
3164                 jj_consume_token(81);
3165                 jj_consume_token(Literal);
3166                 instruction = unescape(token.image.substring(1, token.image.length() - 1));
3167                 jj_consume_token(82);
3168             } else {
3169                 switch (jj_nt.kind) {
3170                 case OR:
3171                 case AND:
3172                 case MOD:
3173                 case DIV:
3174                 case NODE:
3175                 case TEXT:
3176                 case COMMENT:
3177                 case PI:
3178                 case FUNCTION_LAST:
3179                 case FUNCTION_POSITION:
3180                 case FUNCTION_COUNT:
3181                 case FUNCTION_ID:
3182                 case FUNCTION_KEY:
3183                 case FUNCTION_LOCAL_NAME:
3184                 case FUNCTION_NAMESPACE_URI:
3185                 case FUNCTION_NAME:
3186                 case FUNCTION_STRING:
3187                 case FUNCTION_CONCAT:
3188                 case FUNCTION_STARTS_WITH:
3189                 case FUNCTION_ENDS_WITH:
3190                 case FUNCTION_CONTAINS:
3191                 case FUNCTION_SUBSTRING_BEFORE:
3192                 case FUNCTION_SUBSTRING_AFTER:
3193                 case FUNCTION_SUBSTRING:
3194                 case FUNCTION_STRING_LENGTH:
3195                 case FUNCTION_NORMALIZE_SPACE:
3196                 case FUNCTION_TRANSLATE:
3197                 case FUNCTION_BOOLEAN:
3198                 case FUNCTION_NOT:
3199                 case FUNCTION_TRUE:
3200                 case FUNCTION_FALSE:
3201                 case FUNCTION_NULL:
3202                 case FUNCTION_LANG:
3203                 case FUNCTION_NUMBER:
3204                 case FUNCTION_SUM:
3205                 case FUNCTION_FLOOR:
3206                 case FUNCTION_CEILING:
3207                 case FUNCTION_ROUND:
3208                 case FUNCTION_FORMAT_NUMBER:
3209                 case NCName:
3210                 case 89:
3211                     name = WildcardName();
3212                     break;
3213                 default:
3214                     jj_la1[10] = jj_gen;
3215                     jj_consume_token(-1);
3216                     throw new ParseException();
3217                 }
3218             }
3219             break;
3220         case 83:
3221             jj_consume_token(83);
3222             axis = Compiler.AXIS_SELF;
3223             type = Compiler.NODE_TYPE_NODE;
3224             break;
3225         case 84:
3226             jj_consume_token(84);
3227             axis = Compiler.AXIS_PARENT;
3228             type = Compiler.NODE_TYPE_NODE;
3229             break;
3230         default:
3231             jj_la1[11] = jj_gen;
3232             jj_consume_token(-1);
3233             throw new ParseException();
3234         }
3235         label_3: while (true) {
3236             switch (jj_nt.kind) {
3237             case 85:
3238                 ;
3239                 break;
3240             default:
3241                 jj_la1[12] = jj_gen;
3242                 break label_3;
3243             }
3244             p = Predicate();
3245             ps.add(p);
3246         }
3247         if (name != null) {
3248             s = compiler.nodeNameTest(name);
3249         } else if (instruction != null) {
3250             s = compiler.processingInstructionTest(instruction);
3251         } else {
3252             s = compiler.nodeTypeTest(type);
3253         }
3254         steps.add(compiler.step(axis, s, ps.toArray()));
3255     }
3256 
3257     /* [38] NodeType ::= 'comment' | 'text' | 'processing-instruction' | 'node' */
3258     final public int NodeType() throws ParseException {
3259         int type;
3260         switch (jj_nt.kind) {
3261         case TEXT:
3262             jj_consume_token(TEXT);
3263             type = Compiler.NODE_TYPE_TEXT;
3264             break;
3265         case NODE:
3266             jj_consume_token(NODE);
3267             type = Compiler.NODE_TYPE_NODE;
3268             break;
3269         case COMMENT:
3270             jj_consume_token(COMMENT);
3271             type = Compiler.NODE_TYPE_COMMENT;
3272             break;
3273         case PI:
3274             jj_consume_token(PI);
3275             type = Compiler.NODE_TYPE_PI;
3276             break;
3277         default:
3278             jj_la1[38] = jj_gen;
3279             jj_consume_token(-1);
3280             throw new ParseException();
3281         }
3282         {
3283             if (true) {
3284                 return type;
3285             }
3286         }
3287         throw new Error("Missing return statement in function");
3288     }
3289 
3290     /* [21] OrExpr ::= AndExpr | OrExpr 'or' AndExpr */
3291     final public Object OrExpr() throws ParseException {
3292         Object ex, r;
3293         ArrayList list = null;
3294         ex = AndExpr();
3295         label_8: while (true) {
3296             switch (jj_nt.kind) {
3297             case OR:
3298                 ;
3299                 break;
3300             default:
3301                 jj_la1[24] = jj_gen;
3302                 break label_8;
3303             }
3304             jj_consume_token(OR);
3305             r = AndExpr();
3306             if (list == null) {
3307                 list = new ArrayList();
3308                 list.add(ex);
3309             }
3310             list.add(r);
3311         }
3312         if (list != null) {
3313             ex = compiler.or(list.toArray());
3314         }
3315         {
3316             if (true) {
3317                 return ex;
3318             }
3319         }
3320         throw new Error("Missing return statement in function");
3321     }
3322 
3323     final public Object parseExpression() throws ParseException {
3324         Object ex;
3325         ex = Expression();
3326         jj_consume_token(0);
3327         {
3328             if (true) {
3329                 return ex;
3330             }
3331         }
3332         throw new Error("Missing return statement in function");
3333     }
3334 
3335     /* [19] PathExpr ::= LocationPath | FilterExpr | FilterExpr '/' RelativeLocationPath | FilterExpr '//' RelativeLocationPath */
3336     final public Object PathExpr() throws ParseException {
3337         Object ex = null;
3338         final Object[] steps;
3339         if (jj_2_6(2147483647)) {
3340             ex = FilterExpr();
3341         } else {
3342             switch (jj_nt.kind) {
3343             case SLASH:
3344             case SLASHSLASH:
3345             case OR:
3346             case AND:
3347             case MOD:
3348             case DIV:
3349             case NODE:
3350             case TEXT:
3351             case COMMENT:
3352             case PI:
3353             case AXIS_SELF:
3354             case AXIS_CHILD:
3355             case AXIS_PARENT:
3356             case AXIS_ANCESTOR:
3357             case AXIS_ATTRIBUTE:
3358             case AXIS_NAMESPACE:
3359             case AXIS_PRECEDING:
3360             case AXIS_FOLLOWING:
3361             case AXIS_DESCENDANT:
3362             case AXIS_ANCESTOR_OR_SELF:
3363             case AXIS_FOLLOWING_SIBLING:
3364             case AXIS_PRECEDING_SIBLING:
3365             case AXIS_DESCENDANT_OR_SELF:
3366             case FUNCTION_LAST:
3367             case FUNCTION_POSITION:
3368             case FUNCTION_COUNT:
3369             case FUNCTION_ID:
3370             case FUNCTION_KEY:
3371             case FUNCTION_LOCAL_NAME:
3372             case FUNCTION_NAMESPACE_URI:
3373             case FUNCTION_NAME:
3374             case FUNCTION_STRING:
3375             case FUNCTION_CONCAT:
3376             case FUNCTION_STARTS_WITH:
3377             case FUNCTION_ENDS_WITH:
3378             case FUNCTION_CONTAINS:
3379             case FUNCTION_SUBSTRING_BEFORE:
3380             case FUNCTION_SUBSTRING_AFTER:
3381             case FUNCTION_SUBSTRING:
3382             case FUNCTION_STRING_LENGTH:
3383             case FUNCTION_NORMALIZE_SPACE:
3384             case FUNCTION_TRANSLATE:
3385             case FUNCTION_BOOLEAN:
3386             case FUNCTION_NOT:
3387             case FUNCTION_TRUE:
3388             case FUNCTION_FALSE:
3389             case FUNCTION_NULL:
3390             case FUNCTION_LANG:
3391             case FUNCTION_NUMBER:
3392             case FUNCTION_SUM:
3393             case FUNCTION_FLOOR:
3394             case FUNCTION_CEILING:
3395             case FUNCTION_ROUND:
3396             case FUNCTION_FORMAT_NUMBER:
3397             case NCName:
3398             case 83:
3399             case 84:
3400             case 87:
3401             case 89:
3402                 ex = LocationPath();
3403                 break;
3404             default:
3405                 jj_la1[21] = jj_gen;
3406                 jj_consume_token(-1);
3407                 throw new ParseException();
3408             }
3409         }
3410         {
3411             if (true) {
3412                 return ex;
3413             }
3414         }
3415         throw new Error("Missing return statement in function");
3416     }
3417 
3418     /* [8] Predicate ::= '[' PredicateExpr ']' */
3419     /* [9] PredicateExpr ::= Expr */
3420     final public Object Predicate() throws ParseException {
3421         Object ex;
3422         jj_consume_token(85);
3423         ex = Expression();
3424         jj_consume_token(86);
3425         {
3426             if (true) {
3427                 return ex;
3428             }
3429         }
3430         throw new Error("Missing return statement in function");
3431     }
3432 
3433     /* [15] PrimaryExpr ::= VariableReference | '(' Expr ')' | Literal | Number | FunctionCall */
3434     final public Object PrimaryExpr() throws ParseException {
3435         Object ex = null;
3436         switch (jj_nt.kind) {
3437         case VARIABLE:
3438             ex = VariableReference();
3439             break;
3440         case 81:
3441             jj_consume_token(81);
3442             ex = Expression();
3443             jj_consume_token(82);
3444             break;
3445         case Literal:
3446             jj_consume_token(Literal);
3447             ex = compiler.literal(unescape(token.image.substring(1, token.image.length() - 1)));
3448             break;
3449         case Number:
3450             jj_consume_token(Number);
3451             ex = compiler.number(token.image);
3452             break;
3453         default:
3454             jj_la1[16] = jj_gen;
3455             if (jj_2_5(2147483647)) {
3456                 ex = CoreFunctionCall();
3457             } else {
3458                 switch (jj_nt.kind) {
3459                 case OR:
3460                 case AND:
3461                 case MOD:
3462                 case DIV:
3463                 case NODE:
3464                 case TEXT:
3465                 case COMMENT:
3466                 case PI:
3467                 case FUNCTION_LAST:
3468                 case FUNCTION_POSITION:
3469                 case FUNCTION_COUNT:
3470                 case FUNCTION_ID:
3471                 case FUNCTION_KEY:
3472                 case FUNCTION_LOCAL_NAME:
3473                 case FUNCTION_NAMESPACE_URI:
3474                 case FUNCTION_NAME:
3475                 case FUNCTION_STRING:
3476                 case FUNCTION_CONCAT:
3477                 case FUNCTION_STARTS_WITH:
3478                 case FUNCTION_ENDS_WITH:
3479                 case FUNCTION_CONTAINS:
3480                 case FUNCTION_SUBSTRING_BEFORE:
3481                 case FUNCTION_SUBSTRING_AFTER:
3482                 case FUNCTION_SUBSTRING:
3483                 case FUNCTION_STRING_LENGTH:
3484                 case FUNCTION_NORMALIZE_SPACE:
3485                 case FUNCTION_TRANSLATE:
3486                 case FUNCTION_BOOLEAN:
3487                 case FUNCTION_NOT:
3488                 case FUNCTION_TRUE:
3489                 case FUNCTION_FALSE:
3490                 case FUNCTION_NULL:
3491                 case FUNCTION_LANG:
3492                 case FUNCTION_NUMBER:
3493                 case FUNCTION_SUM:
3494                 case FUNCTION_FLOOR:
3495                 case FUNCTION_CEILING:
3496                 case FUNCTION_ROUND:
3497                 case FUNCTION_FORMAT_NUMBER:
3498                 case NCName:
3499                     ex = FunctionCall();
3500                     break;
3501                 default:
3502                     jj_la1[17] = jj_gen;
3503                     jj_consume_token(-1);
3504                     throw new ParseException();
3505                 }
3506             }
3507         }
3508         {
3509             if (true) {
3510                 return ex;
3511             }
3512         }
3513         throw new Error("Missing return statement in function");
3514     }
3515 
3516     final public Object QName() throws ParseException {
3517         String nc1, nc2 = null;
3518         nc1 = NCName();
3519         switch (jj_nt.kind) {
3520         case 80:
3521             jj_consume_token(80);
3522             nc2 = NCName();
3523             break;
3524         default:
3525             jj_la1[3] = jj_gen;
3526             ;
3527         }
3528         if (nc2 == null) {
3529             {
3530                 if (true) {
3531                     return compiler.qname(null, nc1);
3532                 }
3533             }
3534         } else {
3535             {
3536                 if (true) {
3537                     return compiler.qname(nc1, nc2);
3538                 }
3539             }
3540         }
3541         throw new Error("Missing return statement in function");
3542     }
3543 
3544     final public Object QName_Without_CoreFunctions() throws ParseException {
3545         String nc1, nc2 = null;
3546         if (jj_2_1(2147483647)) {
3547             nc1 = NCName();
3548             jj_consume_token(80);
3549             nc2 = NCName();
3550         } else {
3551             switch (jj_nt.kind) {
3552             case OR:
3553             case AND:
3554             case MOD:
3555             case DIV:
3556             case NCName:
3557                 nc1 = NCName_Without_CoreFunctions();
3558                 break;
3559             default:
3560                 jj_la1[4] = jj_gen;
3561                 jj_consume_token(-1);
3562                 throw new ParseException();
3563             }
3564         }
3565         if (nc2 == null) {
3566             {
3567                 if (true) {
3568                     return compiler.qname(null, nc1);
3569                 }
3570             }
3571         } else {
3572             {
3573                 if (true) {
3574                     return compiler.qname(nc1, nc2);
3575                 }
3576             }
3577         }
3578         throw new Error("Missing return statement in function");
3579     }
3580 
3581     public void ReInit(final java.io.InputStream stream) {
3582         jj_input_stream.ReInit(stream, 1, 1);
3583         token_source.ReInit(jj_input_stream);
3584         token = new Token();
3585         token.next = jj_nt = token_source.getNextToken();
3586         jj_gen = 0;
3587         for (int i = 0; i < 39; i++) {
3588             jj_la1[i] = -1;
3589         }
3590         for (int i = 0; i < jj_2_rtns.length; i++) {
3591             jj_2_rtns[i] = new JJCalls();
3592         }
3593     }
3594 
3595     public void ReInit(final java.io.Reader stream) {
3596         jj_input_stream.ReInit(stream, 1, 1);
3597         token_source.ReInit(jj_input_stream);
3598         token = new Token();
3599         token.next = jj_nt = token_source.getNextToken();
3600         jj_gen = 0;
3601         for (int i = 0; i < 39; i++) {
3602             jj_la1[i] = -1;
3603         }
3604         for (int i = 0; i < jj_2_rtns.length; i++) {
3605             jj_2_rtns[i] = new JJCalls();
3606         }
3607     }
3608 
3609     public void ReInit(final XPathParserTokenManager tm) {
3610         token_source = tm;
3611         token = new Token();
3612         token.next = jj_nt = token_source.getNextToken();
3613         jj_gen = 0;
3614         for (int i = 0; i < 39; i++) {
3615             jj_la1[i] = -1;
3616         }
3617         for (int i = 0; i < jj_2_rtns.length; i++) {
3618             jj_2_rtns[i] = new JJCalls();
3619         }
3620     }
3621 
3622     /*
3623      * [24] RelationalExpr ::= AdditiveExpr | RelationalExpr '<' AdditiveExpr | RelationalExpr '>' AdditiveExpr | RelationalExpr '<=' AdditiveExpr |
3624      * RelationalExpr '>=' AdditiveExpr
3625      */
3626     final public Object RelationalExpr() throws ParseException {
3627         Object ex, r;
3628         ex = AdditiveExpr();
3629         label_11: while (true) {
3630             switch (jj_nt.kind) {
3631             case LT:
3632             case LTE:
3633             case GT:
3634             case GTE:
3635                 ;
3636                 break;
3637             default:
3638                 jj_la1[28] = jj_gen;
3639                 break label_11;
3640             }
3641             switch (jj_nt.kind) {
3642             case LT:
3643                 jj_consume_token(LT);
3644                 r = AdditiveExpr();
3645                 ex = compiler.lessThan(ex, r);
3646                 break;
3647             case GT:
3648                 jj_consume_token(GT);
3649                 r = AdditiveExpr();
3650                 ex = compiler.greaterThan(ex, r);
3651                 break;
3652             case LTE:
3653                 jj_consume_token(LTE);
3654                 r = AdditiveExpr();
3655                 ex = compiler.lessThanOrEqual(ex, r);
3656                 break;
3657             case GTE:
3658                 jj_consume_token(GTE);
3659                 r = AdditiveExpr();
3660                 ex = compiler.greaterThanOrEqual(ex, r);
3661                 break;
3662             default:
3663                 jj_la1[29] = jj_gen;
3664                 jj_consume_token(-1);
3665                 throw new ParseException();
3666             }
3667         }
3668         {
3669             if (true) {
3670                 return ex;
3671             }
3672         }
3673         throw new Error("Missing return statement in function");
3674     }
3675 
3676     /* [3] RelativeLocationPath ::= Step | RelativeLocationPath '/' Step | AbbreviatedRelativeLocationPath */
3677     final public Object RelativeLocationPath() throws ParseException {
3678         final ArrayList steps = new ArrayList();
3679         NodeTest(steps);
3680         label_2: while (true) {
3681             switch (jj_nt.kind) {
3682             case SLASH:
3683             case SLASHSLASH:
3684                 ;
3685                 break;
3686             default:
3687                 jj_la1[8] = jj_gen;
3688                 break label_2;
3689             }
3690             LocationStep(steps);
3691         }
3692         {
3693             if (true) {
3694                 return compiler.locationPath(false, steps.toArray());
3695             }
3696         }
3697         throw new Error("Missing return statement in function");
3698     }
3699 
3700     public void setCompiler(final Compiler compiler) {
3701         this.compiler = compiler;
3702     }
3703 
3704     final public Object SubtractiveExpr() throws ParseException {
3705         Object ex, r = null;
3706         ex = MultiplicativeExpr();
3707         label_13: while (true) {
3708             switch (jj_nt.kind) {
3709             case MINUS:
3710                 ;
3711                 break;
3712             default:
3713                 jj_la1[31] = jj_gen;
3714                 break label_13;
3715             }
3716             jj_consume_token(MINUS);
3717             r = MultiplicativeExpr();
3718             ex = compiler.minus(ex, r);
3719         }
3720         {
3721             if (true) {
3722                 return ex;
3723             }
3724         }
3725         throw new Error("Missing return statement in function");
3726     }
3727 
3728     /* [27] UnaryExpr ::= UnionExpr | '-' UnaryExpr */
3729     final public Object UnaryExpr() throws ParseException {
3730         Object ex;
3731         switch (jj_nt.kind) {
3732         case SLASH:
3733         case SLASHSLASH:
3734         case VARIABLE:
3735         case Literal:
3736         case Number:
3737         case OR:
3738         case AND:
3739         case MOD:
3740         case DIV:
3741         case NODE:
3742         case TEXT:
3743         case COMMENT:
3744         case PI:
3745         case AXIS_SELF:
3746         case AXIS_CHILD:
3747         case AXIS_PARENT:
3748         case AXIS_ANCESTOR:
3749         case AXIS_ATTRIBUTE:
3750         case AXIS_NAMESPACE:
3751         case AXIS_PRECEDING:
3752         case AXIS_FOLLOWING:
3753         case AXIS_DESCENDANT:
3754         case AXIS_ANCESTOR_OR_SELF:
3755         case AXIS_FOLLOWING_SIBLING:
3756         case AXIS_PRECEDING_SIBLING:
3757         case AXIS_DESCENDANT_OR_SELF:
3758         case FUNCTION_LAST:
3759         case FUNCTION_POSITION:
3760         case FUNCTION_COUNT:
3761         case FUNCTION_ID:
3762         case FUNCTION_KEY:
3763         case FUNCTION_LOCAL_NAME:
3764         case FUNCTION_NAMESPACE_URI:
3765         case FUNCTION_NAME:
3766         case FUNCTION_STRING:
3767         case FUNCTION_CONCAT:
3768         case FUNCTION_STARTS_WITH:
3769         case FUNCTION_ENDS_WITH:
3770         case FUNCTION_CONTAINS:
3771         case FUNCTION_SUBSTRING_BEFORE:
3772         case FUNCTION_SUBSTRING_AFTER:
3773         case FUNCTION_SUBSTRING:
3774         case FUNCTION_STRING_LENGTH:
3775         case FUNCTION_NORMALIZE_SPACE:
3776         case FUNCTION_TRANSLATE:
3777         case FUNCTION_BOOLEAN:
3778         case FUNCTION_NOT:
3779         case FUNCTION_TRUE:
3780         case FUNCTION_FALSE:
3781         case FUNCTION_NULL:
3782         case FUNCTION_LANG:
3783         case FUNCTION_NUMBER:
3784         case FUNCTION_SUM:
3785         case FUNCTION_FLOOR:
3786         case FUNCTION_CEILING:
3787         case FUNCTION_ROUND:
3788         case FUNCTION_FORMAT_NUMBER:
3789         case NCName:
3790         case 81:
3791         case 83:
3792         case 84:
3793         case 87:
3794         case 89:
3795             ex = UnionExpr();
3796             break;
3797         case MINUS:
3798             jj_consume_token(MINUS);
3799             ex = UnaryExpr();
3800             ex = compiler.minus(ex);
3801             break;
3802         default:
3803             jj_la1[34] = jj_gen;
3804             jj_consume_token(-1);
3805             throw new ParseException();
3806         }
3807         {
3808             if (true) {
3809                 return ex;
3810             }
3811         }
3812         throw new Error("Missing return statement in function");
3813     }
3814 
3815     private String unescape(String string) {
3816         int index = string.indexOf("&apos;");
3817         while (index != -1) {
3818             string = string.substring(0, index) + "\'" + string.substring(index + 6);
3819             index = string.indexOf("&apos;");
3820         }
3821         index = string.indexOf("&quot;");
3822         while (index != -1) {
3823             string = string.substring(0, index) + "\"" + string.substring(index + 6);
3824             index = string.indexOf("&quot;");
3825         }
3826         return string;
3827     }
3828 
3829     /* [18] UnionExpr ::= PathExpr | UnionExpr '|' PathExpr */
3830     final public Object UnionExpr() throws ParseException {
3831         Object ex, r;
3832         ArrayList list = null;
3833         ex = PathExpr();
3834         label_5: while (true) {
3835             switch (jj_nt.kind) {
3836             case UNION:
3837                 ;
3838                 break;
3839             default:
3840                 jj_la1[20] = jj_gen;
3841                 break label_5;
3842             }
3843             jj_consume_token(UNION);
3844             r = PathExpr();
3845             if (list == null) {
3846                 list = new ArrayList();
3847                 list.add(ex);
3848             }
3849             list.add(r);
3850         }
3851         if (list != null) {
3852             ex = compiler.union(list.toArray());
3853         }
3854         {
3855             if (true) {
3856                 return ex;
3857             }
3858         }
3859         throw new Error("Missing return statement in function");
3860     }
3861 
3862     /* [36] VariableReference ::= '$' QName */
3863     final public Object VariableReference() throws ParseException {
3864         Object ex;
3865         jj_consume_token(VARIABLE);
3866         ex = QName();
3867         {
3868             if (true) {
3869                 return compiler.variableReference(ex);
3870             }
3871         }
3872         throw new Error("Missing return statement in function");
3873     }
3874 
3875     /* [37] WildcardName ::= '*' | NCName ':' '*' | QName */
3876     final public Object WildcardName() throws ParseException {
3877         Object qn;
3878         String nc1, nc2 = null;
3879         switch (jj_nt.kind) {
3880         case 89:
3881             jj_consume_token(89);
3882             break;
3883         case OR:
3884         case AND:
3885         case MOD:
3886         case DIV:
3887         case NODE:
3888         case TEXT:
3889         case COMMENT:
3890         case PI:
3891         case FUNCTION_LAST:
3892         case FUNCTION_POSITION:
3893         case FUNCTION_COUNT:
3894         case FUNCTION_ID:
3895         case FUNCTION_KEY:
3896         case FUNCTION_LOCAL_NAME:
3897         case FUNCTION_NAMESPACE_URI:
3898         case FUNCTION_NAME:
3899         case FUNCTION_STRING:
3900         case FUNCTION_CONCAT:
3901         case FUNCTION_STARTS_WITH:
3902         case FUNCTION_ENDS_WITH:
3903         case FUNCTION_CONTAINS:
3904         case FUNCTION_SUBSTRING_BEFORE:
3905         case FUNCTION_SUBSTRING_AFTER:
3906         case FUNCTION_SUBSTRING:
3907         case FUNCTION_STRING_LENGTH:
3908         case FUNCTION_NORMALIZE_SPACE:
3909         case FUNCTION_TRANSLATE:
3910         case FUNCTION_BOOLEAN:
3911         case FUNCTION_NOT:
3912         case FUNCTION_TRUE:
3913         case FUNCTION_FALSE:
3914         case FUNCTION_NULL:
3915         case FUNCTION_LANG:
3916         case FUNCTION_NUMBER:
3917         case FUNCTION_SUM:
3918         case FUNCTION_FLOOR:
3919         case FUNCTION_CEILING:
3920         case FUNCTION_ROUND:
3921         case FUNCTION_FORMAT_NUMBER:
3922         case NCName:
3923             NCName();
3924             break;
3925         default:
3926             jj_la1[35] = jj_gen;
3927             jj_consume_token(-1);
3928             throw new ParseException();
3929         }
3930         nc1 = token.image;
3931         switch (jj_nt.kind) {
3932         case 80:
3933             jj_consume_token(80);
3934             switch (jj_nt.kind) {
3935             case 89:
3936                 jj_consume_token(89);
3937                 break;
3938             case OR:
3939             case AND:
3940             case MOD:
3941             case DIV:
3942             case NODE:
3943             case TEXT:
3944             case COMMENT:
3945             case PI:
3946             case FUNCTION_LAST:
3947             case FUNCTION_POSITION:
3948             case FUNCTION_COUNT:
3949             case FUNCTION_ID:
3950             case FUNCTION_KEY:
3951             case FUNCTION_LOCAL_NAME:
3952             case FUNCTION_NAMESPACE_URI:
3953             case FUNCTION_NAME:
3954             case FUNCTION_STRING:
3955             case FUNCTION_CONCAT:
3956             case FUNCTION_STARTS_WITH:
3957             case FUNCTION_ENDS_WITH:
3958             case FUNCTION_CONTAINS:
3959             case FUNCTION_SUBSTRING_BEFORE:
3960             case FUNCTION_SUBSTRING_AFTER:
3961             case FUNCTION_SUBSTRING:
3962             case FUNCTION_STRING_LENGTH:
3963             case FUNCTION_NORMALIZE_SPACE:
3964             case FUNCTION_TRANSLATE:
3965             case FUNCTION_BOOLEAN:
3966             case FUNCTION_NOT:
3967             case FUNCTION_TRUE:
3968             case FUNCTION_FALSE:
3969             case FUNCTION_NULL:
3970             case FUNCTION_LANG:
3971             case FUNCTION_NUMBER:
3972             case FUNCTION_SUM:
3973             case FUNCTION_FLOOR:
3974             case FUNCTION_CEILING:
3975             case FUNCTION_ROUND:
3976             case FUNCTION_FORMAT_NUMBER:
3977             case NCName:
3978                 NCName();
3979                 break;
3980             default:
3981                 jj_la1[36] = jj_gen;
3982                 jj_consume_token(-1);
3983                 throw new ParseException();
3984             }
3985             nc2 = token.image;
3986             break;
3987         default:
3988             jj_la1[37] = jj_gen;
3989             ;
3990         }
3991         if (nc2 != null) {
3992             qn = compiler.qname(nc1, nc2);
3993         } else {
3994             qn = compiler.qname(null, nc1);
3995         }
3996         {
3997             if (true) {
3998                 return qn;
3999             }
4000         }
4001         throw new Error("Missing return statement in function");
4002     }
4003 }