View Javadoc

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