You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by eb...@apache.org on 2009/05/29 12:23:41 UTC

svn commit: r779915 [2/3] - in /commons/proper/jxpath/trunk/src: java/org/apache/commons/jxpath/ri/ java/org/apache/commons/jxpath/ri/compiler/ java/org/apache/commons/jxpath/ri/parser/ test/org/apache/commons/jxpath/ri/ test/org/apache/commons/jxpath/...

Modified: commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/parser/XPathParser.java
URL: http://svn.apache.org/viewvc/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/parser/XPathParser.java?rev=779915&r1=779914&r2=779915&view=diff
==============================================================================
--- commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/parser/XPathParser.java (original)
+++ commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/parser/XPathParser.java Fri May 29 10:23:40 2009
@@ -77,6 +77,9 @@
     case FUNCTION_STARTS_WITH:
       jj_consume_token(FUNCTION_STARTS_WITH);
       break;
+    case FUNCTION_ENDS_WITH:
+      jj_consume_token(FUNCTION_ENDS_WITH);
+      break;
     case FUNCTION_CONTAINS:
       jj_consume_token(FUNCTION_CONTAINS);
       break;
@@ -215,6 +218,10 @@
       jj_consume_token(FUNCTION_STARTS_WITH);
                                       code = Compiler.FUNCTION_STARTS_WITH;
       break;
+    case FUNCTION_ENDS_WITH:
+      jj_consume_token(FUNCTION_ENDS_WITH);
+                                      code = Compiler.FUNCTION_ENDS_WITH;
+      break;
     case FUNCTION_CONTAINS:
       jj_consume_token(FUNCTION_CONTAINS);
                                       code = Compiler.FUNCTION_CONTAINS;
@@ -308,8 +315,8 @@
  String nc1, nc2 = null;
     nc1 = NCName();
     switch (jj_nt.kind) {
-    case 79:
-      jj_consume_token(79);
+    case 80:
+      jj_consume_token(80);
       nc2 = NCName();
       break;
     default:
@@ -329,7 +336,7 @@
     String nc1, nc2 = null;
     if (jj_2_1(2147483647)) {
       nc1 = NCName();
-      jj_consume_token(79);
+      jj_consume_token(80);
       nc2 = NCName();
     } else {
       switch (jj_nt.kind) {
@@ -469,6 +476,7 @@
     case FUNCTION_STRING:
     case FUNCTION_CONCAT:
     case FUNCTION_STARTS_WITH:
+    case FUNCTION_ENDS_WITH:
     case FUNCTION_CONTAINS:
     case FUNCTION_SUBSTRING_BEFORE:
     case FUNCTION_SUBSTRING_AFTER:
@@ -489,10 +497,10 @@
     case FUNCTION_ROUND:
     case FUNCTION_FORMAT_NUMBER:
     case NCName:
-    case 82:
     case 83:
-    case 86:
-    case 88:
+    case 84:
+    case 87:
+    case 89:
       ex = RelativeLocationPath();
       break;
     case SLASH:
@@ -635,6 +643,7 @@
     case FUNCTION_STRING:
     case FUNCTION_CONCAT:
     case FUNCTION_STARTS_WITH:
+    case FUNCTION_ENDS_WITH:
     case FUNCTION_CONTAINS:
     case FUNCTION_SUBSTRING_BEFORE:
     case FUNCTION_SUBSTRING_AFTER:
@@ -655,19 +664,19 @@
     case FUNCTION_ROUND:
     case FUNCTION_FORMAT_NUMBER:
     case NCName:
-    case 86:
-    case 88:
+    case 87:
+    case 89:
       axis = AxisSpecifier();
       if (jj_2_3(2147483647)) {
         type = NodeType();
-        jj_consume_token(80);
         jj_consume_token(81);
+        jj_consume_token(82);
       } else if (jj_2_4(2147483647)) {
         jj_consume_token(PI);
-        jj_consume_token(80);
+        jj_consume_token(81);
         jj_consume_token(Literal);
                     instruction = unescape(token.image.substring(1, token.image.length() - 1));
-        jj_consume_token(81);
+        jj_consume_token(82);
       } else {
         switch (jj_nt.kind) {
         case OR:
@@ -689,6 +698,7 @@
         case FUNCTION_STRING:
         case FUNCTION_CONCAT:
         case FUNCTION_STARTS_WITH:
+        case FUNCTION_ENDS_WITH:
         case FUNCTION_CONTAINS:
         case FUNCTION_SUBSTRING_BEFORE:
         case FUNCTION_SUBSTRING_AFTER:
@@ -709,7 +719,7 @@
         case FUNCTION_ROUND:
         case FUNCTION_FORMAT_NUMBER:
         case NCName:
-        case 88:
+        case 89:
           name = WildcardName();
           break;
         default:
@@ -719,13 +729,13 @@
         }
       }
       break;
-    case 82:
-      jj_consume_token(82);
+    case 83:
+      jj_consume_token(83);
                     axis = Compiler.AXIS_SELF;
                     type = Compiler.NODE_TYPE_NODE;
       break;
-    case 83:
-      jj_consume_token(83);
+    case 84:
+      jj_consume_token(84);
                     axis = Compiler.AXIS_PARENT;
                     type = Compiler.NODE_TYPE_NODE;
       break;
@@ -737,7 +747,7 @@
     label_3:
     while (true) {
       switch (jj_nt.kind) {
-      case 84:
+      case 85:
         ;
         break;
       default:
@@ -870,9 +880,9 @@
 /* [9] PredicateExpr ::=  Expr  */
   final public Object Predicate() throws ParseException {
     Object ex;
-    jj_consume_token(84);
-    ex = Expression();
     jj_consume_token(85);
+    ex = Expression();
+    jj_consume_token(86);
         {if (true) return ex;}
     throw new Error("Missing return statement in function");
   }
@@ -883,8 +893,8 @@
   final public int AbbreviatedAxisSpecifier() throws ParseException {
     int axis = Compiler.AXIS_CHILD;
     switch (jj_nt.kind) {
-    case 86:
-      jj_consume_token(86);
+    case 87:
+      jj_consume_token(87);
            axis = Compiler.AXIS_ATTRIBUTE;
       break;
     default:
@@ -928,10 +938,10 @@
     case VARIABLE:
       ex = VariableReference();
       break;
-    case 80:
-      jj_consume_token(80);
-      ex = Expression();
+    case 81:
       jj_consume_token(81);
+      ex = Expression();
+      jj_consume_token(82);
       break;
     case Literal:
       jj_consume_token(Literal);
@@ -966,6 +976,7 @@
         case FUNCTION_STRING:
         case FUNCTION_CONCAT:
         case FUNCTION_STARTS_WITH:
+        case FUNCTION_ENDS_WITH:
         case FUNCTION_CONTAINS:
         case FUNCTION_SUBSTRING_BEFORE:
         case FUNCTION_SUBSTRING_AFTER:
@@ -1035,7 +1046,7 @@
   final public ArrayList ArgumentList() throws ParseException {
     ArrayList args = null;
     Object arg;
-    jj_consume_token(80);
+    jj_consume_token(81);
     switch (jj_nt.kind) {
     case SLASH:
     case SLASHSLASH:
@@ -1075,6 +1086,7 @@
     case FUNCTION_STRING:
     case FUNCTION_CONCAT:
     case FUNCTION_STARTS_WITH:
+    case FUNCTION_ENDS_WITH:
     case FUNCTION_CONTAINS:
     case FUNCTION_SUBSTRING_BEFORE:
     case FUNCTION_SUBSTRING_AFTER:
@@ -1095,24 +1107,24 @@
     case FUNCTION_ROUND:
     case FUNCTION_FORMAT_NUMBER:
     case NCName:
-    case 80:
-    case 82:
+    case 81:
     case 83:
-    case 86:
-    case 88:
+    case 84:
+    case 87:
+    case 89:
       arg = Argument();
                                 args = new ArrayList(); args.add(arg);
       label_4:
       while (true) {
         switch (jj_nt.kind) {
-        case 87:
+        case 88:
           ;
           break;
         default:
           jj_la1[18] = jj_gen;
           break label_4;
         }
-        jj_consume_token(87);
+        jj_consume_token(88);
         arg = Argument();
                                        args.add(arg);
       }
@@ -1121,7 +1133,7 @@
       jj_la1[19] = jj_gen;
       ;
     }
-    jj_consume_token(81);
+    jj_consume_token(82);
         {if (true) return args;}
     throw new Error("Missing return statement in function");
   }
@@ -1210,6 +1222,7 @@
       case FUNCTION_STRING:
       case FUNCTION_CONCAT:
       case FUNCTION_STARTS_WITH:
+      case FUNCTION_ENDS_WITH:
       case FUNCTION_CONTAINS:
       case FUNCTION_SUBSTRING_BEFORE:
       case FUNCTION_SUBSTRING_AFTER:
@@ -1230,10 +1243,10 @@
       case FUNCTION_ROUND:
       case FUNCTION_FORMAT_NUMBER:
       case NCName:
-      case 82:
       case 83:
-      case 86:
-      case 88:
+      case 84:
+      case 87:
+      case 89:
         ex = LocationPath();
         break;
       default:
@@ -1256,7 +1269,7 @@
     label_6:
     while (true) {
       switch (jj_nt.kind) {
-      case 84:
+      case 85:
         ;
         break;
       default:
@@ -1504,7 +1517,7 @@
       switch (jj_nt.kind) {
       case MOD:
       case DIV:
-      case 88:
+      case 89:
         ;
         break;
       default:
@@ -1512,8 +1525,8 @@
         break label_14;
       }
       switch (jj_nt.kind) {
-      case 88:
-        jj_consume_token(88);
+      case 89:
+        jj_consume_token(89);
         r = UnaryExpr();
                                     ex = compiler.multiply(ex, r);
         break;
@@ -1578,6 +1591,7 @@
     case FUNCTION_STRING:
     case FUNCTION_CONCAT:
     case FUNCTION_STARTS_WITH:
+    case FUNCTION_ENDS_WITH:
     case FUNCTION_CONTAINS:
     case FUNCTION_SUBSTRING_BEFORE:
     case FUNCTION_SUBSTRING_AFTER:
@@ -1598,11 +1612,11 @@
     case FUNCTION_ROUND:
     case FUNCTION_FORMAT_NUMBER:
     case NCName:
-    case 80:
-    case 82:
+    case 81:
     case 83:
-    case 86:
-    case 88:
+    case 84:
+    case 87:
+    case 89:
       ex = UnionExpr();
       break;
     case MINUS:
@@ -1674,8 +1688,8 @@
     Object qn;
     String nc1, nc2 = null;
     switch (jj_nt.kind) {
-    case 88:
-      jj_consume_token(88);
+    case 89:
+      jj_consume_token(89);
       break;
     case OR:
     case AND:
@@ -1696,6 +1710,7 @@
     case FUNCTION_STRING:
     case FUNCTION_CONCAT:
     case FUNCTION_STARTS_WITH:
+    case FUNCTION_ENDS_WITH:
     case FUNCTION_CONTAINS:
     case FUNCTION_SUBSTRING_BEFORE:
     case FUNCTION_SUBSTRING_AFTER:
@@ -1725,11 +1740,11 @@
     }
                            nc1 = token.image;
     switch (jj_nt.kind) {
-    case 79:
-      jj_consume_token(79);
+    case 80:
+      jj_consume_token(80);
       switch (jj_nt.kind) {
-      case 88:
-        jj_consume_token(88);
+      case 89:
+        jj_consume_token(89);
         break;
       case OR:
       case AND:
@@ -1750,6 +1765,7 @@
       case FUNCTION_STRING:
       case FUNCTION_CONCAT:
       case FUNCTION_STARTS_WITH:
+      case FUNCTION_ENDS_WITH:
       case FUNCTION_CONTAINS:
       case FUNCTION_SUBSTRING_BEFORE:
       case FUNCTION_SUBSTRING_AFTER:
@@ -1824,621 +1840,335 @@
 
   final private boolean jj_2_1(int xla) {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    boolean retval = !jj_3_1();
-    jj_save(0, xla);
-    return retval;
+    try { return !jj_3_1(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(0, xla); }
   }
 
   final private boolean jj_2_2(int xla) {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    boolean retval = !jj_3_2();
-    jj_save(1, xla);
-    return retval;
+    try { return !jj_3_2(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(1, xla); }
   }
 
   final private boolean jj_2_3(int xla) {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    boolean retval = !jj_3_3();
-    jj_save(2, xla);
-    return retval;
+    try { return !jj_3_3(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(2, xla); }
   }
 
   final private boolean jj_2_4(int xla) {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    boolean retval = !jj_3_4();
-    jj_save(3, xla);
-    return retval;
+    try { return !jj_3_4(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(3, xla); }
   }
 
   final private boolean jj_2_5(int xla) {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    boolean retval = !jj_3_5();
-    jj_save(4, xla);
-    return retval;
+    try { return !jj_3_5(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(4, xla); }
   }
 
   final private boolean jj_2_6(int xla) {
     jj_la = xla; jj_lastpos = jj_scanpos = token;
-    boolean retval = !jj_3_6();
-    jj_save(5, xla);
-    return retval;
+    try { return !jj_3_6(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(5, xla); }
   }
 
-  final private boolean jj_3R_65() {
-    if (jj_scan_token(FUNCTION_ID)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3_2() {
+    if (jj_3R_16()) return true;
     return false;
   }
 
-  final private boolean jj_3R_104() {
-    if (jj_3R_118()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_144() {
+    if (jj_3R_16()) return true;
     return false;
   }
 
-  final private boolean jj_3R_64() {
-    if (jj_scan_token(FUNCTION_COUNT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_143() {
+    if (jj_3R_77()) return true;
     return false;
   }
 
-  final private boolean jj_3R_63() {
-    if (jj_scan_token(FUNCTION_POSITION)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_150() {
+    if (jj_3R_16()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_151()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
-  final private boolean jj_3R_62() {
-    if (jj_scan_token(FUNCTION_LAST)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_132() {
+    if (jj_scan_token(MINUS)) return true;
+    if (jj_3R_129()) return true;
     return false;
   }
 
-  final private boolean jj_3R_18() {
+  final private boolean jj_3R_130() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_62()) {
-    jj_scanpos = xsp;
-    if (jj_3R_63()) {
-    jj_scanpos = xsp;
-    if (jj_3R_64()) {
-    jj_scanpos = xsp;
-    if (jj_3R_65()) {
-    jj_scanpos = xsp;
-    if (jj_3R_66()) {
-    jj_scanpos = xsp;
-    if (jj_3R_67()) {
-    jj_scanpos = xsp;
-    if (jj_3R_68()) {
-    jj_scanpos = xsp;
-    if (jj_3R_69()) {
-    jj_scanpos = xsp;
-    if (jj_3R_70()) {
-    jj_scanpos = xsp;
-    if (jj_3R_71()) {
-    jj_scanpos = xsp;
-    if (jj_3R_72()) {
-    jj_scanpos = xsp;
-    if (jj_3R_73()) {
-    jj_scanpos = xsp;
-    if (jj_3R_74()) {
-    jj_scanpos = xsp;
-    if (jj_3R_75()) {
-    jj_scanpos = xsp;
-    if (jj_3R_76()) {
-    jj_scanpos = xsp;
-    if (jj_3R_77()) {
-    jj_scanpos = xsp;
-    if (jj_3R_78()) {
-    jj_scanpos = xsp;
-    if (jj_3R_79()) {
+    if (jj_3R_133()) {
     jj_scanpos = xsp;
-    if (jj_3R_80()) {
+    if (jj_3R_134()) {
     jj_scanpos = xsp;
-    if (jj_3R_81()) {
-    jj_scanpos = xsp;
-    if (jj_3R_82()) {
-    jj_scanpos = xsp;
-    if (jj_3R_83()) {
-    jj_scanpos = xsp;
-    if (jj_3R_84()) {
-    jj_scanpos = xsp;
-    if (jj_3R_85()) {
-    jj_scanpos = xsp;
-    if (jj_3R_86()) {
-    jj_scanpos = xsp;
-    if (jj_3R_87()) {
-    jj_scanpos = xsp;
-    if (jj_3R_88()) {
-    jj_scanpos = xsp;
-    if (jj_3R_89()) {
-    jj_scanpos = xsp;
-    if (jj_3R_90()) {
-    jj_scanpos = xsp;
-    if (jj_3R_91()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_135()) return true;
+    }
+    }
     return false;
   }
 
-  final private boolean jj_3R_111() {
-    if (jj_scan_token(DIV)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_148() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_150()) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(6)) return true;
+    }
     return false;
   }
 
-  final private boolean jj_3R_110() {
-    if (jj_scan_token(MOD)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_131() {
+    if (jj_3R_136()) return true;
     return false;
   }
 
-  final private boolean jj_3R_109() {
-    if (jj_scan_token(AND)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_64() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(79)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(27)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(28)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(29)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(30)) return true;
+    }
+    }
+    }
+    }
     return false;
   }
 
-  final private boolean jj_3R_108() {
-    if (jj_scan_token(OR)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_113() {
+    if (jj_scan_token(87)) return true;
     return false;
   }
 
-  final private boolean jj_3R_107() {
-    if (jj_scan_token(NCName)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_91() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_113()) jj_scanpos = xsp;
     return false;
   }
 
-  final private boolean jj_3R_173() {
-    if (jj_scan_token(MINUS)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_170()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_141() {
+    if (jj_3R_19()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_143()) { jj_scanpos = xsp; break; }
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_144()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
-  final private boolean jj_3R_98() {
+  final private boolean jj_3R_129() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_107()) {
-    jj_scanpos = xsp;
-    if (jj_3R_108()) {
-    jj_scanpos = xsp;
-    if (jj_3R_109()) {
-    jj_scanpos = xsp;
-    if (jj_3R_110()) {
+    if (jj_3R_131()) {
     jj_scanpos = xsp;
-    if (jj_3R_111()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_132()) return true;
+    }
     return false;
   }
 
-  final private boolean jj_3R_171() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_174()) {
-    jj_scanpos = xsp;
-    if (jj_3R_175()) {
-    jj_scanpos = xsp;
-    if (jj_3R_176()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3_6() {
+    if (jj_3R_19()) return true;
     return false;
   }
 
-  final private boolean jj_3R_172() {
-    if (jj_3R_177()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_146() {
+    if (jj_3R_148()) return true;
     return false;
   }
 
-  final private boolean jj_3R_153() {
-    if (jj_scan_token(86)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_135() {
+    if (jj_scan_token(MOD)) return true;
+    if (jj_3R_129()) return true;
     return false;
   }
 
-  final private boolean jj_3R_130() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_153()) jj_scanpos = xsp;
-    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_145() {
+    if (jj_3R_147()) return true;
     return false;
   }
 
-  final private boolean jj_3R_54() {
-    if (jj_scan_token(FUNCTION_FORMAT_NUMBER)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_134() {
+    if (jj_scan_token(DIV)) return true;
+    if (jj_3R_129()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_133() {
+    if (jj_scan_token(89)) return true;
+    if (jj_3R_129()) return true;
     return false;
   }
 
-  final private boolean jj_3R_170() {
+  final private boolean jj_3R_142() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_172()) {
+    if (jj_3R_145()) {
     jj_scanpos = xsp;
-    if (jj_3R_173()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_146()) return true;
+    }
     return false;
   }
 
-  final private boolean jj_3R_53() {
-    if (jj_scan_token(FUNCTION_KEY)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_140() {
+    if (jj_3R_142()) return true;
     return false;
   }
 
-  final private boolean jj_3R_52() {
-    if (jj_scan_token(FUNCTION_ROUND)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_139() {
+    if (jj_3R_141()) return true;
     return false;
   }
 
-  final private boolean jj_3R_51() {
-    if (jj_scan_token(FUNCTION_CEILING)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_77() {
+    if (jj_scan_token(85)) return true;
+    if (jj_3R_70()) return true;
+    if (jj_scan_token(86)) return true;
     return false;
   }
 
-  final private boolean jj_3R_50() {
-    if (jj_scan_token(FUNCTION_FLOOR)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_127() {
+    if (jj_3R_129()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_130()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
-  final private boolean jj_3R_49() {
-    if (jj_scan_token(FUNCTION_SUM)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_137() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_139()) {
+    jj_scanpos = xsp;
+    if (jj_3R_140()) return true;
+    }
     return false;
   }
 
-  final private boolean jj_3R_48() {
-    if (jj_scan_token(FUNCTION_NUMBER)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_128() {
+    if (jj_scan_token(MINUS)) return true;
+    if (jj_3R_127()) return true;
     return false;
   }
 
-  final private boolean jj_3R_176() {
-    if (jj_scan_token(MOD)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_170()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_112() {
+    if (jj_scan_token(AXIS_DESCENDANT_OR_SELF)) return true;
     return false;
   }
 
-  final private boolean jj_3R_47() {
-    if (jj_scan_token(FUNCTION_LANG)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_111() {
+    if (jj_scan_token(AXIS_PRECEDING_SIBLING)) return true;
     return false;
   }
 
-  final private boolean jj_3R_175() {
-    if (jj_scan_token(DIV)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_170()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_110() {
+    if (jj_scan_token(AXIS_FOLLOWING_SIBLING)) return true;
     return false;
   }
 
-  final private boolean jj_3R_46() {
-    if (jj_scan_token(FUNCTION_NULL)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_122() {
+    if (jj_scan_token(PLUS)) return true;
+    if (jj_3R_121()) return true;
     return false;
   }
 
-  final private boolean jj_3R_174() {
-    if (jj_scan_token(88)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_170()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_109() {
+    if (jj_scan_token(AXIS_ANCESTOR_OR_SELF)) return true;
     return false;
   }
 
-  final private boolean jj_3R_45() {
-    if (jj_scan_token(FUNCTION_FALSE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_108() {
+    if (jj_scan_token(AXIS_DESCENDANT)) return true;
     return false;
   }
 
-  final private boolean jj_3R_44() {
-    if (jj_scan_token(FUNCTION_TRUE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_107() {
+    if (jj_scan_token(AXIS_FOLLOWING)) return true;
     return false;
   }
 
-  final private boolean jj_3R_43() {
-    if (jj_scan_token(FUNCTION_NOT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_106() {
+    if (jj_scan_token(AXIS_PRECEDING)) return true;
     return false;
   }
 
-  final private boolean jj_3R_42() {
-    if (jj_scan_token(FUNCTION_BOOLEAN)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_121() {
+    if (jj_3R_127()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_128()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
-  final private boolean jj_3R_41() {
-    if (jj_scan_token(FUNCTION_TRANSLATE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_105() {
+    if (jj_scan_token(AXIS_NAMESPACE)) return true;
     return false;
   }
 
-  final private boolean jj_3R_116() {
-    if (jj_scan_token(84)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_104()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(85)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_104() {
+    if (jj_scan_token(AXIS_ATTRIBUTE)) return true;
     return false;
   }
 
-  final private boolean jj_3R_40() {
-    if (jj_scan_token(FUNCTION_NORMALIZE_SPACE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_39() {
-    if (jj_scan_token(FUNCTION_STRING_LENGTH)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_38() {
-    if (jj_scan_token(FUNCTION_SUBSTRING)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_37() {
-    if (jj_scan_token(FUNCTION_SUBSTRING_AFTER)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_36() {
-    if (jj_scan_token(FUNCTION_SUBSTRING_BEFORE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_168() {
-    if (jj_3R_170()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_171()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    }
-    return false;
-  }
-
-  final private boolean jj_3R_35() {
-    if (jj_scan_token(FUNCTION_CONTAINS)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_34() {
-    if (jj_scan_token(FUNCTION_STARTS_WITH)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_33() {
-    if (jj_scan_token(FUNCTION_CONCAT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_32() {
-    if (jj_scan_token(FUNCTION_STRING)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_31() {
-    if (jj_scan_token(FUNCTION_NAME)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_30() {
-    if (jj_scan_token(FUNCTION_NAMESPACE_URI)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_29() {
-    if (jj_scan_token(FUNCTION_LOCAL_NAME)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_169() {
-    if (jj_scan_token(MINUS)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_168()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_28() {
-    if (jj_scan_token(FUNCTION_ID)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_27() {
-    if (jj_scan_token(FUNCTION_COUNT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_152() {
-    if (jj_scan_token(AXIS_DESCENDANT_OR_SELF)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_26() {
-    if (jj_scan_token(FUNCTION_POSITION)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_25() {
-    if (jj_scan_token(FUNCTION_LAST)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_151() {
-    if (jj_scan_token(AXIS_PRECEDING_SIBLING)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_24() {
-    if (jj_scan_token(PI)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_150() {
-    if (jj_scan_token(AXIS_FOLLOWING_SIBLING)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_23() {
-    if (jj_scan_token(COMMENT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_149() {
-    if (jj_scan_token(AXIS_ANCESTOR_OR_SELF)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_163() {
-    if (jj_scan_token(PLUS)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_162()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_22() {
-    if (jj_scan_token(TEXT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_148() {
-    if (jj_scan_token(AXIS_DESCENDANT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_21() {
-    if (jj_scan_token(NODE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_147() {
-    if (jj_scan_token(AXIS_FOLLOWING)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_103() {
+    if (jj_scan_token(AXIS_ANCESTOR)) return true;
     return false;
   }
 
   final private boolean jj_3R_20() {
-    if (jj_3R_98()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_64()) return true;
     return false;
   }
 
-  final private boolean jj_3R_146() {
-    if (jj_scan_token(AXIS_PRECEDING)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_145() {
-    if (jj_scan_token(AXIS_NAMESPACE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_162() {
-    if (jj_3R_168()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_169()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    }
+  final private boolean jj_3R_102() {
+    if (jj_scan_token(AXIS_PARENT)) return true;
     return false;
   }
 
-  final private boolean jj_3R_144() {
-    if (jj_scan_token(AXIS_ATTRIBUTE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_101() {
+    if (jj_scan_token(AXIS_CHILD)) return true;
     return false;
   }
 
-  final private boolean jj_3R_143() {
-    if (jj_scan_token(AXIS_ANCESTOR)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_100() {
+    if (jj_scan_token(AXIS_SELF)) return true;
     return false;
   }
 
-  final private boolean jj_3R_142() {
-    if (jj_scan_token(AXIS_PARENT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_138() {
+    if (jj_scan_token(UNION)) return true;
+    if (jj_3R_137()) return true;
     return false;
   }
 
@@ -2447,1061 +2177,902 @@
     xsp = jj_scanpos;
     if (jj_3R_20()) {
     jj_scanpos = xsp;
-    if (jj_3R_21()) {
+    if (jj_scan_token(31)) {
     jj_scanpos = xsp;
-    if (jj_3R_22()) {
+    if (jj_scan_token(32)) {
     jj_scanpos = xsp;
-    if (jj_3R_23()) {
+    if (jj_scan_token(33)) {
     jj_scanpos = xsp;
-    if (jj_3R_24()) {
+    if (jj_scan_token(34)) {
     jj_scanpos = xsp;
-    if (jj_3R_25()) {
+    if (jj_scan_token(48)) {
     jj_scanpos = xsp;
-    if (jj_3R_26()) {
+    if (jj_scan_token(49)) {
     jj_scanpos = xsp;
-    if (jj_3R_27()) {
+    if (jj_scan_token(50)) {
     jj_scanpos = xsp;
-    if (jj_3R_28()) {
+    if (jj_scan_token(51)) {
     jj_scanpos = xsp;
-    if (jj_3R_29()) {
+    if (jj_scan_token(53)) {
     jj_scanpos = xsp;
-    if (jj_3R_30()) {
+    if (jj_scan_token(54)) {
     jj_scanpos = xsp;
-    if (jj_3R_31()) {
+    if (jj_scan_token(55)) {
     jj_scanpos = xsp;
-    if (jj_3R_32()) {
+    if (jj_scan_token(56)) {
     jj_scanpos = xsp;
-    if (jj_3R_33()) {
+    if (jj_scan_token(57)) {
     jj_scanpos = xsp;
-    if (jj_3R_34()) {
+    if (jj_scan_token(58)) {
     jj_scanpos = xsp;
-    if (jj_3R_35()) {
+    if (jj_scan_token(59)) {
     jj_scanpos = xsp;
-    if (jj_3R_36()) {
+    if (jj_scan_token(60)) {
     jj_scanpos = xsp;
-    if (jj_3R_37()) {
+    if (jj_scan_token(61)) {
     jj_scanpos = xsp;
-    if (jj_3R_38()) {
+    if (jj_scan_token(62)) {
     jj_scanpos = xsp;
-    if (jj_3R_39()) {
+    if (jj_scan_token(63)) {
     jj_scanpos = xsp;
-    if (jj_3R_40()) {
+    if (jj_scan_token(64)) {
     jj_scanpos = xsp;
-    if (jj_3R_41()) {
+    if (jj_scan_token(65)) {
     jj_scanpos = xsp;
-    if (jj_3R_42()) {
+    if (jj_scan_token(66)) {
     jj_scanpos = xsp;
-    if (jj_3R_43()) {
+    if (jj_scan_token(67)) {
     jj_scanpos = xsp;
-    if (jj_3R_44()) {
+    if (jj_scan_token(68)) {
     jj_scanpos = xsp;
-    if (jj_3R_45()) {
+    if (jj_scan_token(69)) {
     jj_scanpos = xsp;
-    if (jj_3R_46()) {
+    if (jj_scan_token(70)) {
     jj_scanpos = xsp;
-    if (jj_3R_47()) {
+    if (jj_scan_token(71)) {
     jj_scanpos = xsp;
-    if (jj_3R_48()) {
+    if (jj_scan_token(72)) {
     jj_scanpos = xsp;
-    if (jj_3R_49()) {
+    if (jj_scan_token(73)) {
     jj_scanpos = xsp;
-    if (jj_3R_50()) {
+    if (jj_scan_token(74)) {
     jj_scanpos = xsp;
-    if (jj_3R_51()) {
+    if (jj_scan_token(75)) {
     jj_scanpos = xsp;
-    if (jj_3R_52()) {
+    if (jj_scan_token(76)) {
     jj_scanpos = xsp;
-    if (jj_3R_53()) {
+    if (jj_scan_token(77)) {
     jj_scanpos = xsp;
-    if (jj_3R_54()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_141() {
-    if (jj_scan_token(AXIS_CHILD)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_140() {
-    if (jj_scan_token(AXIS_SELF)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_scan_token(52)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(78)) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     return false;
   }
 
-  final private boolean jj_3R_129() {
+  final private boolean jj_3R_90() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_140()) {
-    jj_scanpos = xsp;
-    if (jj_3R_141()) {
-    jj_scanpos = xsp;
-    if (jj_3R_142()) {
-    jj_scanpos = xsp;
-    if (jj_3R_143()) {
+    if (jj_3R_100()) {
     jj_scanpos = xsp;
-    if (jj_3R_144()) {
+    if (jj_3R_101()) {
     jj_scanpos = xsp;
-    if (jj_3R_145()) {
+    if (jj_3R_102()) {
     jj_scanpos = xsp;
-    if (jj_3R_146()) {
+    if (jj_3R_103()) {
     jj_scanpos = xsp;
-    if (jj_3R_147()) {
+    if (jj_3R_104()) {
     jj_scanpos = xsp;
-    if (jj_3R_148()) {
+    if (jj_3R_105()) {
     jj_scanpos = xsp;
-    if (jj_3R_149()) {
+    if (jj_3R_106()) {
     jj_scanpos = xsp;
-    if (jj_3R_150()) {
+    if (jj_3R_107()) {
     jj_scanpos = xsp;
-    if (jj_3R_151()) {
+    if (jj_3R_108()) {
     jj_scanpos = xsp;
-    if (jj_3R_152()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_159() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_164()) {
+    if (jj_3R_109()) {
     jj_scanpos = xsp;
-    if (jj_3R_165()) {
+    if (jj_3R_110()) {
     jj_scanpos = xsp;
-    if (jj_3R_166()) {
+    if (jj_3R_111()) {
     jj_scanpos = xsp;
-    if (jj_3R_167()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_158() {
-    if (jj_3R_162()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_163()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_112()) return true;
+    }
+    }
+    }
+    }
+    }
     }
-    return false;
-  }
-
-  final private boolean jj_3R_122() {
-    if (jj_3R_130()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_121() {
-    if (jj_3R_129()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_167() {
-    if (jj_scan_token(GTE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_158()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_112() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_121()) {
-    jj_scanpos = xsp;
-    if (jj_3R_122()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_166() {
-    if (jj_scan_token(LTE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_158()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_165() {
-    if (jj_scan_token(GT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_158()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_157() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_160()) {
-    jj_scanpos = xsp;
-    if (jj_3R_161()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_164() {
-    if (jj_scan_token(LT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_158()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_156() {
-    if (jj_3R_158()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_159()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     }
-    return false;
-  }
-
-  final private boolean jj_3R_161() {
-    if (jj_scan_token(NEQ)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_156()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_160() {
-    if (jj_scan_token(EQ)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_156()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_102() {
-    if (jj_3R_116()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3_4() {
-    if (jj_scan_token(PI)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3_3() {
-    if (jj_3R_17()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(80)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(81)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_101() {
-    if (jj_scan_token(83)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_100() {
-    if (jj_scan_token(82)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_115() {
-    if (jj_3R_123()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_134() {
-    if (jj_3R_156()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_157()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     }
-    return false;
-  }
-
-  final private boolean jj_3R_114() {
-    if (jj_scan_token(PI)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(80)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(Literal)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(81)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_113() {
-    if (jj_3R_17()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(80)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(81)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_99() {
-    if (jj_3R_112()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_113()) {
-    jj_scanpos = xsp;
-    if (jj_3R_114()) {
-    jj_scanpos = xsp;
-    if (jj_3R_115()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_135() {
-    if (jj_scan_token(AND)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_134()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_57() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_99()) {
-    jj_scanpos = xsp;
-    if (jj_3R_100()) {
-    jj_scanpos = xsp;
-    if (jj_3R_101()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_102()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     }
-    return false;
-  }
-
-  final private boolean jj_3R_125() {
-    if (jj_3R_134()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_135()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     }
-    return false;
-  }
-
-  final private boolean jj_3R_193() {
-    if (jj_3R_16()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_56() {
-    if (jj_scan_token(SLASHSLASH)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_55() {
-    if (jj_scan_token(SLASH)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_126() {
-    if (jj_scan_token(OR)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_125()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_16() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_55()) {
-    jj_scanpos = xsp;
-    if (jj_3R_56()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_57()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_190() {
-    if (jj_3R_16()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_118() {
-    if (jj_3R_125()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_126()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     }
-    return false;
-  }
-
-  final private boolean jj_3R_188() {
-    if (jj_3R_57()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_190()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     }
     return false;
   }
 
-  final private boolean jj_3_2() {
-    if (jj_3R_16()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_185() {
-    if (jj_3R_16()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_192() {
-    if (jj_scan_token(SLASH)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_191() {
-    if (jj_3R_16()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_136() {
+    if (jj_3R_137()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_193()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+      if (jj_3R_138()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  final private boolean jj_3R_184() {
-    if (jj_3R_116()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    return false;
-  }
-
-  final private boolean jj_3R_189() {
+  final private boolean jj_3R_118() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_191()) {
+    if (jj_3R_123()) {
+    jj_scanpos = xsp;
+    if (jj_3R_124()) {
     jj_scanpos = xsp;
-    if (jj_3R_192()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_125()) {
+    jj_scanpos = xsp;
+    if (jj_3R_126()) return true;
+    }
+    }
+    }
     return false;
   }
 
-  final private boolean jj_3R_182() {
-    if (jj_3R_19()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_117() {
+    if (jj_3R_121()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_184()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    }
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_185()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+      if (jj_3R_122()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  final private boolean jj_3_6() {
-    if (jj_3R_19()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_83() {
+    if (jj_3R_91()) return true;
     return false;
   }
 
-  final private boolean jj_3R_187() {
-    if (jj_3R_189()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_82() {
+    if (jj_3R_90()) return true;
     return false;
   }
 
-  final private boolean jj_3R_186() {
-    if (jj_3R_188()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_96() {
+    if (jj_3R_70()) return true;
     return false;
   }
 
-  final private boolean jj_3R_183() {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_186()) {
-    jj_scanpos = xsp;
-    if (jj_3R_187()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_126() {
+    if (jj_scan_token(GTE)) return true;
+    if (jj_3R_117()) return true;
     return false;
   }
 
-  final private boolean jj_3R_181() {
-    if (jj_3R_183()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_97() {
+    if (jj_scan_token(88)) return true;
+    if (jj_3R_96()) return true;
     return false;
   }
 
-  final private boolean jj_3R_180() {
-    if (jj_3R_182()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_125() {
+    if (jj_scan_token(LTE)) return true;
+    if (jj_3R_117()) return true;
     return false;
   }
 
-  final private boolean jj_3R_178() {
+  final private boolean jj_3R_73() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_180()) {
+    if (jj_3R_82()) {
     jj_scanpos = xsp;
-    if (jj_3R_181()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_83()) return true;
+    }
     return false;
   }
 
-  final private boolean jj_3R_179() {
-    if (jj_scan_token(UNION)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_178()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_124() {
+    if (jj_scan_token(GT)) return true;
+    if (jj_3R_117()) return true;
     return false;
   }
 
-  final private boolean jj_3R_177() {
-    if (jj_3R_178()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_116() {
     Token xsp;
-    while (true) {
-      xsp = jj_scanpos;
-      if (jj_3R_179()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    xsp = jj_scanpos;
+    if (jj_3R_119()) {
+    jj_scanpos = xsp;
+    if (jj_3R_120()) return true;
     }
     return false;
   }
 
-  final private boolean jj_3R_136() {
-    if (jj_3R_104()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_123() {
+    if (jj_scan_token(LT)) return true;
+    if (jj_3R_117()) return true;
     return false;
   }
 
-  final private boolean jj_3R_137() {
-    if (jj_scan_token(87)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_136()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_88() {
+    if (jj_3R_96()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_97()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
-  final private boolean jj_3R_127() {
-    if (jj_3R_136()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_115() {
+    if (jj_3R_117()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_137()) { jj_scanpos = xsp; break; }
-      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+      if (jj_3R_118()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  final private boolean jj_3R_119() {
-    if (jj_scan_token(80)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_127()) jj_scanpos = xsp;
-    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(81)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_26() {
+    if (jj_scan_token(PI)) return true;
     return false;
   }
 
-  final private boolean jj_3R_61() {
-    if (jj_scan_token(PI)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_80() {
+    if (jj_scan_token(81)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_88()) jj_scanpos = xsp;
+    if (jj_scan_token(82)) return true;
     return false;
   }
 
-  final private boolean jj_3R_60() {
+  final private boolean jj_3R_25() {
     if (jj_scan_token(COMMENT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_59() {
+  final private boolean jj_3R_24() {
     if (jj_scan_token(NODE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_58() {
+  final private boolean jj_3R_120() {
+    if (jj_scan_token(NEQ)) return true;
+    if (jj_3R_115()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_23() {
     if (jj_scan_token(TEXT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    return false;
+  }
+
+  final private boolean jj_3R_119() {
+    if (jj_scan_token(EQ)) return true;
+    if (jj_3R_115()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_68() {
+    if (jj_3R_77()) return true;
     return false;
   }
 
   final private boolean jj_3_1() {
     if (jj_3R_15()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(79)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_scan_token(80)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_4() {
+    if (jj_scan_token(PI)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_3() {
+    if (jj_3R_17()) return true;
+    if (jj_scan_token(81)) return true;
+    if (jj_scan_token(82)) return true;
     return false;
   }
 
   final private boolean jj_3R_17() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_58()) {
+    if (jj_3R_23()) {
     jj_scanpos = xsp;
-    if (jj_3R_59()) {
+    if (jj_3R_24()) {
     jj_scanpos = xsp;
-    if (jj_3R_60()) {
+    if (jj_3R_25()) {
     jj_scanpos = xsp;
-    if (jj_3R_61()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_26()) return true;
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_67() {
+    if (jj_scan_token(84)) return true;
     return false;
   }
 
-  final private boolean jj_3R_155() {
+  final private boolean jj_3R_114() {
     if (jj_3R_15()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_139() {
-    if (jj_3R_98()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_66() {
+    if (jj_scan_token(83)) return true;
     return false;
   }
 
-  final private boolean jj_3R_138() {
+  final private boolean jj_3R_94() {
+    if (jj_3R_115()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_116()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_76() {
+    if (jj_3R_84()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_99() {
+    if (jj_3R_64()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_98() {
     if (jj_3R_15()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(79)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_scan_token(80)) return true;
     if (jj_3R_15()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_154() {
-    if (jj_scan_token(88)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_75() {
+    if (jj_scan_token(PI)) return true;
+    if (jj_scan_token(81)) return true;
+    if (jj_scan_token(Literal)) return true;
+    if (jj_scan_token(82)) return true;
     return false;
   }
 
-  final private boolean jj_3R_132() {
+  final private boolean jj_3R_92() {
     if (jj_3R_15()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_105() {
+  final private boolean jj_3R_74() {
+    if (jj_3R_17()) return true;
+    if (jj_scan_token(81)) return true;
+    if (jj_scan_token(82)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_71() {
     if (jj_3R_18()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_119()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_80()) return true;
     return false;
   }
 
-  final private boolean jj_3R_124() {
-    if (jj_scan_token(79)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_15()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_93() {
+    if (jj_scan_token(80)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(89)) {
+    jj_scanpos = xsp;
+    if (jj_3R_114()) return true;
+    }
     return false;
   }
 
-  final private boolean jj_3R_133() {
-    if (jj_scan_token(79)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_65() {
+    if (jj_3R_73()) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_154()) {
+    if (jj_3R_74()) {
     jj_scanpos = xsp;
-    if (jj_3R_155()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_75()) {
+    jj_scanpos = xsp;
+    if (jj_3R_76()) return true;
+    }
+    }
     return false;
   }
 
-  final private boolean jj_3R_128() {
+  final private boolean jj_3R_85() {
+    if (jj_scan_token(80)) return true;
+    if (jj_3R_15()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_89() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_138()) {
+    if (jj_3R_98()) {
     jj_scanpos = xsp;
-    if (jj_3R_139()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_99()) return true;
+    }
     return false;
   }
 
-  final private boolean jj_3R_131() {
-    if (jj_scan_token(88)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_95() {
+    if (jj_scan_token(AND)) return true;
+    if (jj_3R_94()) return true;
     return false;
   }
 
-  final private boolean jj_3R_123() {
+  final private boolean jj_3R_84() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_131()) {
+    if (jj_scan_token(89)) {
     jj_scanpos = xsp;
-    if (jj_3R_132()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_92()) return true;
+    }
     xsp = jj_scanpos;
-    if (jj_3R_133()) jj_scanpos = xsp;
-    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_93()) jj_scanpos = xsp;
     return false;
   }
 
-  final private boolean jj_3R_106() {
-    if (jj_3R_120()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_119()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_22() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_65()) {
+    jj_scanpos = xsp;
+    if (jj_3R_66()) {
+    jj_scanpos = xsp;
+    if (jj_3R_67()) return true;
+    }
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_68()) { jj_scanpos = xsp; break; }
+    }
     return false;
   }
 
-  final private boolean jj_3R_117() {
-    if (jj_3R_15()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_72() {
+    if (jj_3R_81()) return true;
+    if (jj_3R_80()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_86() {
+    if (jj_3R_94()) return true;
     Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_124()) jj_scanpos = xsp;
-    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_95()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_151() {
+    if (jj_3R_16()) return true;
     return false;
   }
 
   final private boolean jj_3_5() {
     if (jj_3R_18()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(80)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_scan_token(81)) return true;
     return false;
   }
 
-  final private boolean jj_3R_103() {
+  final private boolean jj_3R_78() {
+    if (jj_3R_15()) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_85()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_69() {
     if (jj_scan_token(VARIABLE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_117()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_78()) return true;
     return false;
   }
 
-  final private boolean jj_3R_91() {
+  final private boolean jj_3R_57() {
     if (jj_scan_token(FUNCTION_FORMAT_NUMBER)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_90() {
+  final private boolean jj_3R_56() {
     if (jj_scan_token(FUNCTION_KEY)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_89() {
+  final private boolean jj_3R_55() {
     if (jj_scan_token(FUNCTION_ROUND)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_88() {
+  final private boolean jj_3R_63() {
+    if (jj_3R_72()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_54() {
     if (jj_scan_token(FUNCTION_CEILING)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_97() {
-    if (jj_3R_106()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_62() {
+    if (jj_3R_71()) return true;
     return false;
   }
 
-  final private boolean jj_3R_87() {
+  final private boolean jj_3R_53() {
     if (jj_scan_token(FUNCTION_FLOOR)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_96() {
-    if (jj_3R_105()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_61() {
+    if (jj_scan_token(Number)) return true;
     return false;
   }
 
-  final private boolean jj_3R_86() {
+  final private boolean jj_3R_52() {
     if (jj_scan_token(FUNCTION_SUM)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_95() {
-    if (jj_scan_token(Number)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_21() {
+    if (jj_scan_token(SLASHSLASH)) return true;
     return false;
   }
 
-  final private boolean jj_3R_85() {
+  final private boolean jj_3R_60() {
+    if (jj_scan_token(Literal)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_51() {
     if (jj_scan_token(FUNCTION_NUMBER)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_94() {
-    if (jj_scan_token(Literal)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_59() {
+    if (jj_scan_token(81)) return true;
+    if (jj_3R_70()) return true;
+    if (jj_scan_token(82)) return true;
     return false;
   }
 
-  final private boolean jj_3R_84() {
+  final private boolean jj_3R_87() {
+    if (jj_scan_token(OR)) return true;
+    if (jj_3R_86()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_50() {
     if (jj_scan_token(FUNCTION_LANG)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_93() {
-    if (jj_scan_token(80)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_3R_104()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    if (jj_scan_token(81)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_58() {
+    if (jj_3R_69()) return true;
     return false;
   }
 
-  final private boolean jj_3R_83() {
-    if (jj_scan_token(FUNCTION_NULL)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_81() {
+    if (jj_3R_89()) return true;
     return false;
   }
 
-  final private boolean jj_3R_92() {
-    if (jj_3R_103()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_49() {
+    if (jj_scan_token(FUNCTION_NULL)) return true;
     return false;
   }
 
-  final private boolean jj_3R_82() {
+  final private boolean jj_3R_48() {
     if (jj_scan_token(FUNCTION_FALSE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_81() {
+  final private boolean jj_3R_47() {
     if (jj_scan_token(FUNCTION_TRUE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_120() {
-    if (jj_3R_128()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_46() {
+    if (jj_scan_token(FUNCTION_NOT)) return true;
     return false;
   }
 
-  final private boolean jj_3R_80() {
-    if (jj_scan_token(FUNCTION_NOT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_16() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(6)) {
+    jj_scanpos = xsp;
+    if (jj_3R_21()) return true;
+    }
+    if (jj_3R_22()) return true;
     return false;
   }
 
-  final private boolean jj_3R_79() {
-    if (jj_scan_token(FUNCTION_BOOLEAN)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_149() {
+    if (jj_3R_16()) return true;
     return false;
   }
 
-  final private boolean jj_3R_78() {
-    if (jj_scan_token(FUNCTION_TRANSLATE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_45() {
+    if (jj_scan_token(FUNCTION_BOOLEAN)) return true;
     return false;
   }
 
-  final private boolean jj_3R_77() {
-    if (jj_scan_token(FUNCTION_NORMALIZE_SPACE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+  final private boolean jj_3R_44() {
+    if (jj_scan_token(FUNCTION_TRANSLATE)) return true;
     return false;
   }
 
   final private boolean jj_3R_19() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_92()) {
+    if (jj_3R_58()) {
     jj_scanpos = xsp;
-    if (jj_3R_93()) {
+    if (jj_3R_59()) {
     jj_scanpos = xsp;
-    if (jj_3R_94()) {
+    if (jj_3R_60()) {
     jj_scanpos = xsp;
-    if (jj_3R_95()) {
+    if (jj_3R_61()) {
     jj_scanpos = xsp;
-    if (jj_3R_96()) {
+    if (jj_3R_62()) {
     jj_scanpos = xsp;
-    if (jj_3R_97()) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
-    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    if (jj_3R_63()) return true;
+    }
+    }
+    }
+    }
+    }
     return false;
   }
 
-  final private boolean jj_3R_76() {
+  final private boolean jj_3R_43() {
+    if (jj_scan_token(FUNCTION_NORMALIZE_SPACE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_42() {
     if (jj_scan_token(FUNCTION_STRING_LENGTH)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_75() {
+  final private boolean jj_3R_41() {
     if (jj_scan_token(FUNCTION_SUBSTRING)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_74() {
+  final private boolean jj_3R_40() {
     if (jj_scan_token(FUNCTION_SUBSTRING_AFTER)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_73() {
+  final private boolean jj_3R_79() {
+    if (jj_3R_86()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_87()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_39() {
     if (jj_scan_token(FUNCTION_SUBSTRING_BEFORE)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_72() {
+  final private boolean jj_3R_38() {
     if (jj_scan_token(FUNCTION_CONTAINS)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_71() {
+  final private boolean jj_3R_37() {
+    if (jj_scan_token(FUNCTION_ENDS_WITH)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_36() {
     if (jj_scan_token(FUNCTION_STARTS_WITH)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_70() {
+  final private boolean jj_3R_35() {
     if (jj_scan_token(FUNCTION_CONCAT)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_69() {
+  final private boolean jj_3R_34() {
     if (jj_scan_token(FUNCTION_STRING)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_68() {
+  final private boolean jj_3R_33() {
     if (jj_scan_token(FUNCTION_NAME)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_67() {
+  final private boolean jj_3R_32() {
     if (jj_scan_token(FUNCTION_NAMESPACE_URI)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
     return false;
   }
 
-  final private boolean jj_3R_66() {
+  final private boolean jj_3R_31() {
     if (jj_scan_token(FUNCTION_LOCAL_NAME)) return true;
-    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+    return false;
+  }
+
+  final private boolean jj_3R_70() {
+    if (jj_3R_79()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_30() {
+    if (jj_scan_token(FUNCTION_ID)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_29() {
+    if (jj_scan_token(FUNCTION_COUNT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_28() {
+    if (jj_scan_token(FUNCTION_POSITION)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_27() {
+    if (jj_scan_token(FUNCTION_LAST)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_147() {
+    if (jj_3R_22()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_149()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_18() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_27()) {
+    jj_scanpos = xsp;
+    if (jj_3R_28()) {
+    jj_scanpos = xsp;
+    if (jj_3R_29()) {
+    jj_scanpos = xsp;
+    if (jj_3R_30()) {
+    jj_scanpos = xsp;
+    if (jj_3R_31()) {
+    jj_scanpos = xsp;
+    if (jj_3R_32()) {
+    jj_scanpos = xsp;
+    if (jj_3R_33()) {
+    jj_scanpos = xsp;
+    if (jj_3R_34()) {
+    jj_scanpos = xsp;
+    if (jj_3R_35()) {
+    jj_scanpos = xsp;
+    if (jj_3R_36()) {
+    jj_scanpos = xsp;
+    if (jj_3R_37()) {
+    jj_scanpos = xsp;
+    if (jj_3R_38()) {
+    jj_scanpos = xsp;
+    if (jj_3R_39()) {
+    jj_scanpos = xsp;
+    if (jj_3R_40()) {
+    jj_scanpos = xsp;
+    if (jj_3R_41()) {
+    jj_scanpos = xsp;
+    if (jj_3R_42()) {
+    jj_scanpos = xsp;
+    if (jj_3R_43()) {
+    jj_scanpos = xsp;
+    if (jj_3R_44()) {
+    jj_scanpos = xsp;
+    if (jj_3R_45()) {
+    jj_scanpos = xsp;
+    if (jj_3R_46()) {
+    jj_scanpos = xsp;
+    if (jj_3R_47()) {
+    jj_scanpos = xsp;
+    if (jj_3R_48()) {
+    jj_scanpos = xsp;
+    if (jj_3R_49()) {
+    jj_scanpos = xsp;
+    if (jj_3R_50()) {
+    jj_scanpos = xsp;
+    if (jj_3R_51()) {
+    jj_scanpos = xsp;
+    if (jj_3R_52()) {
+    jj_scanpos = xsp;
+    if (jj_3R_53()) {
+    jj_scanpos = xsp;
+    if (jj_3R_54()) {
+    jj_scanpos = xsp;
+    if (jj_3R_55()) {
+    jj_scanpos = xsp;
+    if (jj_3R_56()) {
+    jj_scanpos = xsp;
+    if (jj_3R_57()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
     return false;
   }
 
@@ -3529,7 +3100,7 @@
       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,};
    }
    private static void jj_la1_2() {
-      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,};
+      jj_la1_2 = new int[] {0xffff,0x8000,0x7fff,0x10000,0x8000,0x298ffff,0x0,0x0,0x0,0x0,0x200ffff,0x298ffff,0x200000,0x0,0x0,0x800000,0x20000,0xffff,0x1000000,0x29affff,0x0,0x298ffff,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x2000000,0x29affff,0x200ffff,0x200ffff,0x10000,0x0,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[6];
   private boolean jj_rescan = false;
@@ -3617,6 +3188,8 @@
     throw generateParseException();
   }
 
+  static private final class LookaheadSuccess extends java.lang.Error { }
+  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
   final private boolean jj_scan_token(int kind) {
     if (jj_scanpos == jj_lastpos) {
       jj_la--;
@@ -3633,7 +3206,9 @@
       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
       if (tok != null) jj_add_error_token(kind, i);
     }
-    return (jj_scanpos.kind != kind);
+    if (jj_scanpos.kind != kind) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
+    return false;
   }
 
   final public Token getNextToken() {
@@ -3668,8 +3243,8 @@
         jj_expentry[i] = jj_lasttokens[i];
       }
       boolean exists = false;
-      for (java.util.Enumeration en = jj_expentries.elements(); en.hasMoreElements();) {
-        int[] oldentry = (int[])(en.nextElement());
+      for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
+        int[] oldentry = (int[])(e.nextElement());
         if (oldentry.length == jj_expentry.length) {
           exists = true;
           for (int i = 0; i < jj_expentry.length; i++) {
@@ -3688,8 +3263,8 @@
 
   public ParseException generateParseException() {
     jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[89];
-    for (int i = 0; i < 89; i++) {
+    boolean[] la1tokens = new boolean[90];
+    for (int i = 0; i < 90; i++) {
       la1tokens[i] = false;
     }
     if (jj_kind >= 0) {
@@ -3711,7 +3286,7 @@
         }
       }
     }
-    for (int i = 0; i < 89; i++) {
+    for (int i = 0; i < 90; i++) {
       if (la1tokens[i]) {
         jj_expentry = new int[1];
         jj_expentry[0] = i;

Modified: commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/parser/XPathParserConstants.java
URL: http://svn.apache.org/viewvc/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/parser/XPathParserConstants.java?rev=779915&r1=779914&r2=779915&view=diff
==============================================================================
--- commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/parser/XPathParserConstants.java (original)
+++ commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/parser/XPathParserConstants.java Fri May 29 10:23:40 2009
@@ -57,26 +57,27 @@
   int FUNCTION_STRING = 56;
   int FUNCTION_CONCAT = 57;
   int FUNCTION_STARTS_WITH = 58;
-  int FUNCTION_CONTAINS = 59;
-  int FUNCTION_SUBSTRING_BEFORE = 60;
-  int FUNCTION_SUBSTRING_AFTER = 61;
-  int FUNCTION_SUBSTRING = 62;
-  int FUNCTION_STRING_LENGTH = 63;
-  int FUNCTION_NORMALIZE_SPACE = 64;
-  int FUNCTION_TRANSLATE = 65;
-  int FUNCTION_BOOLEAN = 66;
-  int FUNCTION_NOT = 67;
-  int FUNCTION_TRUE = 68;
-  int FUNCTION_FALSE = 69;
-  int FUNCTION_NULL = 70;
-  int FUNCTION_LANG = 71;
-  int FUNCTION_NUMBER = 72;
-  int FUNCTION_SUM = 73;
-  int FUNCTION_FLOOR = 74;
-  int FUNCTION_CEILING = 75;
-  int FUNCTION_ROUND = 76;
-  int FUNCTION_FORMAT_NUMBER = 77;
-  int NCName = 78;
+  int FUNCTION_ENDS_WITH = 59;
+  int FUNCTION_CONTAINS = 60;
+  int FUNCTION_SUBSTRING_BEFORE = 61;
+  int FUNCTION_SUBSTRING_AFTER = 62;
+  int FUNCTION_SUBSTRING = 63;
+  int FUNCTION_STRING_LENGTH = 64;
+  int FUNCTION_NORMALIZE_SPACE = 65;
+  int FUNCTION_TRANSLATE = 66;
+  int FUNCTION_BOOLEAN = 67;
+  int FUNCTION_NOT = 68;
+  int FUNCTION_TRUE = 69;
+  int FUNCTION_FALSE = 70;
+  int FUNCTION_NULL = 71;
+  int FUNCTION_LANG = 72;
+  int FUNCTION_NUMBER = 73;
+  int FUNCTION_SUM = 74;
+  int FUNCTION_FLOOR = 75;
+  int FUNCTION_CEILING = 76;
+  int FUNCTION_ROUND = 77;
+  int FUNCTION_FORMAT_NUMBER = 78;
+  int NCName = 79;
 
   int DEFAULT = 0;
 
@@ -140,6 +141,7 @@
     "\"string\"",
     "\"concat\"",
     "\"starts-with\"",
+    "\"ends-with\"",
     "\"contains\"",
     "\"substring-before\"",
     "\"substring-after\"",