    001    /* Generated By:JavaCC: Do not edit this line. XPathParser.java */
    002        package org.apache.commons.jxpath.ri.parser;
    003
    004        import org.apache.commons.jxpath.ri.Compiler;
    005        import java.util.ArrayList;
    006
    007        public class XPathParser implements XPathParserConstants {
    008            private Compiler compiler;
    009
    010            public void setCompiler(Compiler compiler){
    011                this.compiler = compiler;
    012            }
    013
    014            private String unescape(String string){
    015                int index = string.indexOf("&apos;");
    016                while (index != -1){
    017                    string = string.substring(0, index) + "\'" + string.substring(index + 6);
    018                    index = string.indexOf("&apos;");
    019                }
    020                index = string.indexOf("&quot;");
    021                while (index != -1){
    022                    string = string.substring(0, index) + "\"" + string.substring(index + 6);
    023                    index = string.indexOf("&quot;");
    024                }
    025                return string;
    026            }
    027
    028    // Note: XPath does not have reserved words, so we have to include all these terminals
    029      final public String NCName() throws ParseException {
    030        switch (jj_nt.kind) {
    031        case OR:
    032        case AND:
    033        case MOD:
    034        case DIV:
    035        case NCName:
    036          NCName_Without_CoreFunctions();
    037          break;
    038        case NODE:
    039          jj_consume_token(NODE);
    040          break;
    041        case TEXT:
    042          jj_consume_token(TEXT);
    043          break;
    044        case COMMENT:
    045          jj_consume_token(COMMENT);
    046          break;
    047        case PI:
    048          jj_consume_token(PI);
    049          break;
    050        case FUNCTION_LAST:
    051          jj_consume_token(FUNCTION_LAST);
    052          break;
    053        case FUNCTION_POSITION:
    054          jj_consume_token(FUNCTION_POSITION);
    055          break;
    056        case FUNCTION_COUNT:
    057          jj_consume_token(FUNCTION_COUNT);
    058          break;
    059        case FUNCTION_ID:
    060          jj_consume_token(FUNCTION_ID);
    061          break;
    062        case FUNCTION_LOCAL_NAME:
    063          jj_consume_token(FUNCTION_LOCAL_NAME);
    064          break;
    065        case FUNCTION_NAMESPACE_URI:
    066          jj_consume_token(FUNCTION_NAMESPACE_URI);
    067          break;
    068        case FUNCTION_NAME:
    069          jj_consume_token(FUNCTION_NAME);
    070          break;
    071        case FUNCTION_STRING:
    072          jj_consume_token(FUNCTION_STRING);
    073          break;
    074        case FUNCTION_CONCAT:
    075          jj_consume_token(FUNCTION_CONCAT);
    076          break;
    077        case FUNCTION_STARTS_WITH:
    078          jj_consume_token(FUNCTION_STARTS_WITH);
    079          break;
    080        case FUNCTION_CONTAINS:
    081          jj_consume_token(FUNCTION_CONTAINS);
    082          break;
    083        case FUNCTION_SUBSTRING_BEFORE:
    084          jj_consume_token(FUNCTION_SUBSTRING_BEFORE);
    085          break;
    086        case FUNCTION_SUBSTRING_AFTER:
    087          jj_consume_token(FUNCTION_SUBSTRING_AFTER);
    088          break;
    089        case FUNCTION_SUBSTRING:
    090          jj_consume_token(FUNCTION_SUBSTRING);
    091          break;
    092        case FUNCTION_STRING_LENGTH:
    093          jj_consume_token(FUNCTION_STRING_LENGTH);
    094          break;
    095        case FUNCTION_NORMALIZE_SPACE:
    096          jj_consume_token(FUNCTION_NORMALIZE_SPACE);
    097          break;
    098        case FUNCTION_TRANSLATE:
    099          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)                          */
    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 en = jj_expentries.elements(); en.hasMoreElements();) {
    3672            int[] oldentry = (int[])(en.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        }