You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2010/01/06 19:10:41 UTC

svn commit: r896589 - in /tomcat/trunk/java/org/apache/el/parser: ELParser.java ELParser.jjt ELParserConstants.java ELParserTokenManager.java ParseException.java Token.java TokenMgrError.java

Author: markt
Date: Wed Jan  6 18:10:41 2010
New Revision: 896589

URL: http://svn.apache.org/viewvc?rev=896589&view=rev
Log: (empty)

Modified:
    tomcat/trunk/java/org/apache/el/parser/ELParser.java
    tomcat/trunk/java/org/apache/el/parser/ELParser.jjt
    tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java
    tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java
    tomcat/trunk/java/org/apache/el/parser/ParseException.java
    tomcat/trunk/java/org/apache/el/parser/Token.java
    tomcat/trunk/java/org/apache/el/parser/TokenMgrError.java

Modified: tomcat/trunk/java/org/apache/el/parser/ELParser.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ELParser.java?rev=896589&r1=896588&r2=896589&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/ELParser.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/ELParser.java Wed Jan  6 18:10:41 2010
@@ -1486,9 +1486,9 @@
   private boolean jj_3R_29() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(29)) {
+    if (jj_scan_token(28)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(30)) return true;
+    if (jj_scan_token(29)) return true;
     }
     return false;
   }
@@ -1501,9 +1501,9 @@
   private boolean jj_3R_28() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(31)) {
+    if (jj_scan_token(30)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(32)) return true;
+    if (jj_scan_token(31)) return true;
     }
     return false;
   }
@@ -1511,9 +1511,9 @@
   private boolean jj_3R_27() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(25)) {
+    if (jj_scan_token(24)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(26)) return true;
+    if (jj_scan_token(25)) return true;
     }
     return false;
   }
@@ -1537,9 +1537,9 @@
   private boolean jj_3R_26() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(27)) {
+    if (jj_scan_token(26)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(28)) return true;
+    if (jj_scan_token(27)) return true;
     }
     return false;
   }
@@ -1577,9 +1577,9 @@
   private boolean jj_3R_23() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(35)) {
+    if (jj_scan_token(34)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(36)) return true;
+    if (jj_scan_token(35)) return true;
     }
     return false;
   }
@@ -1592,9 +1592,9 @@
   private boolean jj_3R_22() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(33)) {
+    if (jj_scan_token(32)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(34)) return true;
+    if (jj_scan_token(33)) return true;
     }
     return false;
   }
@@ -1612,9 +1612,9 @@
   private boolean jj_3R_17() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(39)) {
+    if (jj_scan_token(38)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(40)) return true;
+    if (jj_scan_token(39)) return true;
     }
     return false;
   }
@@ -1692,9 +1692,9 @@
   private boolean jj_3R_15() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(41)) {
+    if (jj_scan_token(40)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(42)) return true;
+    if (jj_scan_token(41)) return true;
     }
     return false;
   }
@@ -1809,9 +1809,9 @@
   private boolean jj_3R_35() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(37)) {
+    if (jj_scan_token(36)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(38)) return true;
+    if (jj_scan_token(37)) return true;
     }
     if (jj_3R_30()) return true;
     return false;
@@ -1847,9 +1847,9 @@
   private boolean jj_3R_40() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(51)) {
+    if (jj_scan_token(50)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(52)) return true;
+    if (jj_scan_token(51)) return true;
     }
     return false;
   }
@@ -1857,9 +1857,9 @@
   private boolean jj_3R_39() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(49)) {
+    if (jj_scan_token(48)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(50)) return true;
+    if (jj_scan_token(49)) return true;
     }
     return false;
   }
@@ -1916,10 +1916,10 @@
       jj_la1_init_1();
    }
    private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0xe,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe000000,0x18000000,0x6000000,0x80000000,0x60000000,0xfe000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9d600,0x240000,0x9d600,0x240000,0x80000,0x0,0x1000000,0x9d600,0x1d600,0xc000,};
+      jj_la1_0 = new int[] {0xe,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff000000,0xc000000,0x3000000,0xc0000000,0x30000000,0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4eb00,0x120000,0x4eb00,0x120000,0x40000,0x0,0x800000,0x4eb00,0xeb00,0x6000,};
    }
    private static void jj_la1_init_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x600,0x600,0x180,0x180,0x1e,0x6,0x18,0x1e,0x1,0x0,0x0,0x1,0x0,0x1,0xc000,0xc000,0x1e2000,0x60000,0x180000,0x1e2000,0x60,0x208860,0x0,0x200000,0x0,0x0,0x200000,0x0,0x208860,0x0,0x0,};
+      jj_la1_1 = new int[] {0x0,0x0,0x300,0x300,0xc0,0xc0,0xf,0x3,0xc,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x6000,0xf1000,0x30000,0xc0000,0xf1000,0x30,0x104430,0x0,0x100000,0x0,0x0,0x100000,0x0,0x104430,0x0,0x0,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[3];
   private boolean jj_rescan = false;
@@ -2108,7 +2108,7 @@
   /** Generate ParseException. */
   public ParseException generateParseException() {
     jj_expentries.clear();
-    boolean[] la1tokens = new boolean[59];
+    boolean[] la1tokens = new boolean[58];
     if (jj_kind >= 0) {
       la1tokens[jj_kind] = true;
       jj_kind = -1;
@@ -2125,7 +2125,7 @@
         }
       }
     }
-    for (int i = 0; i < 59; i++) {
+    for (int i = 0; i < 58; i++) {
       if (la1tokens[i]) {
         jj_expentry = new int[1];
         jj_expentry[0] = i;

Modified: tomcat/trunk/java/org/apache/el/parser/ELParser.jjt
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ELParser.jjt?rev=896589&r1=896588&r2=896589&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/ELParser.jjt (original)
+++ tomcat/trunk/java/org/apache/el/parser/ELParser.jjt Wed Jan  6 18:10:41 2010
@@ -353,11 +353,15 @@
 /* ==================================================================================== */
 <DEFAULT> TOKEN :
 {
+  /*
+   * The following definition uses + rather than * in two places to prevent
+   * LITERAL_EXPRESSION matching the empty string that could result in the
+   * Parser entering an infinite loop.
+   */
   < LITERAL_EXPRESSION:
-    ((~["\\", "$", "#"])
-      | ("\\" ("\\" | "$" | "#"))
-      | ("$" ~["{", "$"])
-      | ("#" ~["{", "#"])
+    (   (~["$", "#", "\\"])* "\\" (["$", "#"])?
+      | (~["$", "#"])* (["$", "#"] ~["{"])
+      | (~["$", "#"])+
     )+
     | "$"
     | "#"
@@ -368,8 +372,6 @@
   < START_DEFERRED_EXPRESSION: "#{" > : IN_EXPRESSION
 }
 
-<DEFAULT> SKIP : { "\\" }
-
 <IN_EXPRESSION> SKIP : { " " | "\t" | "\n" | "\r" }
 
 <IN_EXPRESSION> TOKEN :

Modified: tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java?rev=896589&r1=896588&r2=896589&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java Wed Jan  6 18:10:41 2010
@@ -17,105 +17,105 @@
   /** RegularExpression Id. */
   int START_DEFERRED_EXPRESSION = 3;
   /** RegularExpression Id. */
-  int INTEGER_LITERAL = 9;
+  int INTEGER_LITERAL = 8;
   /** RegularExpression Id. */
-  int FLOATING_POINT_LITERAL = 10;
+  int FLOATING_POINT_LITERAL = 9;
   /** RegularExpression Id. */
-  int EXPONENT = 11;
+  int EXPONENT = 10;
   /** RegularExpression Id. */
-  int STRING_LITERAL = 12;
+  int STRING_LITERAL = 11;
   /** RegularExpression Id. */
-  int BADLY_ESCAPED_STRING_LITERAL = 13;
+  int BADLY_ESCAPED_STRING_LITERAL = 12;
   /** RegularExpression Id. */
-  int TRUE = 14;
+  int TRUE = 13;
   /** RegularExpression Id. */
-  int FALSE = 15;
+  int FALSE = 14;
   /** RegularExpression Id. */
-  int NULL = 16;
+  int NULL = 15;
   /** RegularExpression Id. */
-  int END_EXPRESSION = 17;
+  int END_EXPRESSION = 16;
   /** RegularExpression Id. */
-  int DOT = 18;
+  int DOT = 17;
   /** RegularExpression Id. */
-  int LPAREN = 19;
+  int LPAREN = 18;
   /** RegularExpression Id. */
-  int RPAREN = 20;
+  int RPAREN = 19;
   /** RegularExpression Id. */
-  int LBRACK = 21;
+  int LBRACK = 20;
   /** RegularExpression Id. */
-  int RBRACK = 22;
+  int RBRACK = 21;
   /** RegularExpression Id. */
-  int COLON = 23;
+  int COLON = 22;
   /** RegularExpression Id. */
-  int COMMA = 24;
+  int COMMA = 23;
   /** RegularExpression Id. */
-  int GT0 = 25;
+  int GT0 = 24;
   /** RegularExpression Id. */
-  int GT1 = 26;
+  int GT1 = 25;
   /** RegularExpression Id. */
-  int LT0 = 27;
+  int LT0 = 26;
   /** RegularExpression Id. */
-  int LT1 = 28;
+  int LT1 = 27;
   /** RegularExpression Id. */
-  int GE0 = 29;
+  int GE0 = 28;
   /** RegularExpression Id. */
-  int GE1 = 30;
+  int GE1 = 29;
   /** RegularExpression Id. */
-  int LE0 = 31;
+  int LE0 = 30;
   /** RegularExpression Id. */
-  int LE1 = 32;
+  int LE1 = 31;
   /** RegularExpression Id. */
-  int EQ0 = 33;
+  int EQ0 = 32;
   /** RegularExpression Id. */
-  int EQ1 = 34;
+  int EQ1 = 33;
   /** RegularExpression Id. */
-  int NE0 = 35;
+  int NE0 = 34;
   /** RegularExpression Id. */
-  int NE1 = 36;
+  int NE1 = 35;
   /** RegularExpression Id. */
-  int NOT0 = 37;
+  int NOT0 = 36;
   /** RegularExpression Id. */
-  int NOT1 = 38;
+  int NOT1 = 37;
   /** RegularExpression Id. */
-  int AND0 = 39;
+  int AND0 = 38;
   /** RegularExpression Id. */
-  int AND1 = 40;
+  int AND1 = 39;
   /** RegularExpression Id. */
-  int OR0 = 41;
+  int OR0 = 40;
   /** RegularExpression Id. */
-  int OR1 = 42;
+  int OR1 = 41;
   /** RegularExpression Id. */
-  int EMPTY = 43;
+  int EMPTY = 42;
   /** RegularExpression Id. */
-  int INSTANCEOF = 44;
+  int INSTANCEOF = 43;
   /** RegularExpression Id. */
-  int MULT = 45;
+  int MULT = 44;
   /** RegularExpression Id. */
-  int PLUS = 46;
+  int PLUS = 45;
   /** RegularExpression Id. */
-  int MINUS = 47;
+  int MINUS = 46;
   /** RegularExpression Id. */
-  int QUESTIONMARK = 48;
+  int QUESTIONMARK = 47;
   /** RegularExpression Id. */
-  int DIV0 = 49;
+  int DIV0 = 48;
   /** RegularExpression Id. */
-  int DIV1 = 50;
+  int DIV1 = 49;
   /** RegularExpression Id. */
-  int MOD0 = 51;
+  int MOD0 = 50;
   /** RegularExpression Id. */
-  int MOD1 = 52;
+  int MOD1 = 51;
   /** RegularExpression Id. */
-  int IDENTIFIER = 53;
+  int IDENTIFIER = 52;
   /** RegularExpression Id. */
-  int FUNCTIONSUFFIX = 54;
+  int FUNCTIONSUFFIX = 53;
   /** RegularExpression Id. */
-  int IMPL_OBJ_START = 55;
+  int IMPL_OBJ_START = 54;
   /** RegularExpression Id. */
-  int LETTER = 56;
+  int LETTER = 55;
   /** RegularExpression Id. */
-  int DIGIT = 57;
+  int DIGIT = 56;
   /** RegularExpression Id. */
-  int ILLEGAL_CHARACTER = 58;
+  int ILLEGAL_CHARACTER = 57;
 
   /** Lexical state. */
   int DEFAULT = 0;
@@ -128,7 +128,6 @@
     "<LITERAL_EXPRESSION>",
     "\"${\"",
     "\"#{\"",
-    "\"\\\\\"",
     "\" \"",
     "\"\\t\"",
     "\"\\n\"",

Modified: tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java?rev=896589&r1=896588&r2=896589&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java Wed Jan  6 18:10:41 2010
@@ -16,17 +16,10 @@
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x10L) != 0L)
-            return 2;
-         if ((active0 & 0x4L) != 0L)
-         {
-            jjmatchedKind = 1;
-            return 4;
-         }
-         if ((active0 & 0x8L) != 0L)
+         if ((active0 & 0xcL) != 0L)
          {
             jjmatchedKind = 1;
-            return 6;
+            return 5;
          }
          return -1;
       default :
@@ -51,8 +44,6 @@
          return jjMoveStringLiteralDfa1_0(0x8L);
       case 36:
          return jjMoveStringLiteralDfa1_0(0x4L);
-      case 92:
-         return jjStartNfaWithStates_0(0, 4, 2);
       default :
          return jjMoveNfa_0(7, 0);
    }
@@ -77,14 +68,6 @@
    }
    return jjStartNfa_0(0, active0);
 }
-private int jjStartNfaWithStates_0(int pos, int kind, int state)
-{
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
-   try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
-}
 static final long[] jjbitVec0 = {
    0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
 };
@@ -114,53 +97,47 @@
                   {
                      if (kind > 1)
                         kind = 1;
-                     jjCheckNAddStates(0, 3);
+                     jjCheckNAddStates(0, 4);
                   }
                   else if ((0x1800000000L & l) != 0L)
                   {
                      if (kind > 1)
                         kind = 1;
+                     jjCheckNAdd(5);
                   }
-                  if (curChar == 35)
-                     jjstateSet[jjnewStateCnt++] = 6;
-                  else if (curChar == 36)
-                     jjstateSet[jjnewStateCnt++] = 4;
+                  if ((0xffffffe7ffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(0, 1);
                   break;
                case 0:
-                  if ((0xffffffe7ffffffffL & l) == 0L)
-                     break;
-                  if (kind > 1)
-                     kind = 1;
-                  jjCheckNAddStates(0, 3);
+                  if ((0xffffffe7ffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(0, 1);
                   break;
                case 2:
-                  if ((0x1800000000L & l) == 0L)
+                  if ((0xffffffe7ffffffffL & l) == 0L)
                      break;
                   if (kind > 1)
                      kind = 1;
-                  jjCheckNAddStates(0, 3);
+                  jjCheckNAddStates(0, 4);
                   break;
                case 3:
-                  if (curChar == 36)
-                     jjstateSet[jjnewStateCnt++] = 4;
+                  if ((0xffffffe7ffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(3, 4);
                   break;
                case 4:
-                  if ((0xffffffefffffffffL & l) == 0L)
-                     break;
-                  if (kind > 1)
-                     kind = 1;
-                  jjCheckNAddStates(0, 3);
+                  if ((0x1800000000L & l) != 0L)
+                     jjCheckNAdd(5);
                   break;
                case 5:
-                  if (curChar == 35)
-                     jjstateSet[jjnewStateCnt++] = 6;
+                  if (kind > 1)
+                     kind = 1;
+                  jjCheckNAddStates(5, 8);
                   break;
                case 6:
-                  if ((0xfffffff7ffffffffL & l) == 0L)
+                  if ((0x1800000000L & l) == 0L)
                      break;
                   if (kind > 1)
                      kind = 1;
-                  jjCheckNAddStates(0, 3);
+                  jjCheckNAddStates(9, 13);
                   break;
                default : break;
             }
@@ -174,40 +151,43 @@
             switch(jjstateSet[--i])
             {
                case 7:
+                  if (kind > 1)
+                     kind = 1;
+                  jjCheckNAddStates(0, 4);
                   if ((0xffffffffefffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(0, 1);
+                  else if (curChar == 92)
                   {
                      if (kind > 1)
                         kind = 1;
-                     jjCheckNAddStates(0, 3);
+                     jjCheckNAddStates(14, 17);
                   }
-                  else if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 2;
                   break;
                case 0:
-                  if ((0xffffffffefffffffL & l) == 0L)
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(0, 1);
+                  break;
+               case 1:
+                  if (curChar != 92)
                      break;
                   if (kind > 1)
                      kind = 1;
-                  jjCheckNAddStates(0, 3);
-                  break;
-               case 1:
-                  if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 2;
+                  jjCheckNAddStates(14, 17);
                   break;
                case 2:
-                  if (curChar != 92)
-                     break;
                   if (kind > 1)
                      kind = 1;
-                  jjCheckNAddStates(0, 3);
+                  jjCheckNAddStates(0, 4);
                   break;
-               case 4:
-               case 6:
+               case 3:
+                  jjCheckNAddTwoStates(3, 4);
+                  break;
+               case 5:
                   if ((0xf7ffffffffffffffL & l) == 0L)
                      break;
                   if (kind > 1)
                      kind = 1;
-                  jjCheckNAddStates(0, 3);
+                  jjCheckNAddStates(5, 8);
                   break;
                default : break;
             }
@@ -225,14 +205,36 @@
             switch(jjstateSet[--i])
             {
                case 7:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(0, 1);
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                  {
+                     if (kind > 1)
+                        kind = 1;
+                     jjCheckNAddStates(0, 4);
+                  }
+                  break;
                case 0:
-               case 4:
-               case 6:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(0, 1);
+                  break;
+               case 2:
                   if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 1)
                      kind = 1;
-                  jjCheckNAddStates(0, 3);
+                  jjCheckNAddStates(0, 4);
+                  break;
+               case 3:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(3, 4);
+                  break;
+               case 5:
+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 1)
+                     kind = 1;
+                  jjCheckNAddStates(5, 8);
                   break;
                default : break;
             }
@@ -256,82 +258,82 @@
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x40000L) != 0L)
+         if ((active0 & 0x20000L) != 0L)
             return 1;
-         if ((active0 & 0x141d555401c000L) != 0L)
+         if ((active0 & 0xa0eaaaa00e000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             return 36;
          }
          return -1;
       case 1:
-         if ((active0 & 0x41554000000L) != 0L)
+         if ((active0 & 0x20aaa000000L) != 0L)
             return 36;
-         if ((active0 & 0x1419400001c000L) != 0L)
+         if ((active0 & 0xa0ca00000e000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             jjmatchedPos = 1;
             return 36;
          }
          return -1;
       case 2:
-         if ((active0 & 0x18000001c000L) != 0L)
+         if ((active0 & 0xc000000e000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             jjmatchedPos = 2;
             return 36;
          }
-         if ((active0 & 0x14014000000000L) != 0L)
+         if ((active0 & 0xa00a000000000L) != 0L)
             return 36;
          return -1;
       case 3:
-         if ((active0 & 0x14000L) != 0L)
+         if ((active0 & 0xa000L) != 0L)
             return 36;
-         if ((active0 & 0x180000008000L) != 0L)
+         if ((active0 & 0xc0000004000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             jjmatchedPos = 3;
             return 36;
          }
          return -1;
       case 4:
-         if ((active0 & 0x80000008000L) != 0L)
+         if ((active0 & 0x40000004000L) != 0L)
             return 36;
-         if ((active0 & 0x100000000000L) != 0L)
+         if ((active0 & 0x80000000000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             jjmatchedPos = 4;
             return 36;
          }
          return -1;
       case 5:
-         if ((active0 & 0x100000000000L) != 0L)
+         if ((active0 & 0x80000000000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             jjmatchedPos = 5;
             return 36;
          }
          return -1;
       case 6:
-         if ((active0 & 0x100000000000L) != 0L)
+         if ((active0 & 0x80000000000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             jjmatchedPos = 6;
             return 36;
          }
          return -1;
       case 7:
-         if ((active0 & 0x100000000000L) != 0L)
+         if ((active0 & 0x80000000000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             jjmatchedPos = 7;
             return 36;
          }
          return -1;
       case 8:
-         if ((active0 & 0x100000000000L) != 0L)
+         if ((active0 & 0x80000000000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             jjmatchedPos = 8;
             return 36;
          }
@@ -349,70 +351,70 @@
    switch(curChar)
    {
       case 33:
-         jjmatchedKind = 37;
-         return jjMoveStringLiteralDfa1_1(0x800000000L);
+         jjmatchedKind = 36;
+         return jjMoveStringLiteralDfa1_1(0x400000000L);
       case 37:
-         return jjStopAtPos(0, 51);
+         return jjStopAtPos(0, 50);
       case 38:
-         return jjMoveStringLiteralDfa1_1(0x8000000000L);
+         return jjMoveStringLiteralDfa1_1(0x4000000000L);
       case 40:
-         return jjStopAtPos(0, 19);
+         return jjStopAtPos(0, 18);
       case 41:
-         return jjStopAtPos(0, 20);
+         return jjStopAtPos(0, 19);
       case 42:
-         return jjStopAtPos(0, 45);
+         return jjStopAtPos(0, 44);
       case 43:
-         return jjStopAtPos(0, 46);
+         return jjStopAtPos(0, 45);
       case 44:
-         return jjStopAtPos(0, 24);
+         return jjStopAtPos(0, 23);
       case 45:
-         return jjStopAtPos(0, 47);
+         return jjStopAtPos(0, 46);
       case 46:
-         return jjStartNfaWithStates_1(0, 18, 1);
+         return jjStartNfaWithStates_1(0, 17, 1);
       case 47:
-         return jjStopAtPos(0, 49);
+         return jjStopAtPos(0, 48);
       case 58:
-         return jjStopAtPos(0, 23);
+         return jjStopAtPos(0, 22);
       case 60:
-         jjmatchedKind = 27;
-         return jjMoveStringLiteralDfa1_1(0x80000000L);
+         jjmatchedKind = 26;
+         return jjMoveStringLiteralDfa1_1(0x40000000L);
       case 61:
-         return jjMoveStringLiteralDfa1_1(0x200000000L);
+         return jjMoveStringLiteralDfa1_1(0x100000000L);
       case 62:
-         jjmatchedKind = 25;
-         return jjMoveStringLiteralDfa1_1(0x20000000L);
+         jjmatchedKind = 24;
+         return jjMoveStringLiteralDfa1_1(0x10000000L);
       case 63:
-         return jjStopAtPos(0, 48);
+         return jjStopAtPos(0, 47);
       case 91:
-         return jjStopAtPos(0, 21);
+         return jjStopAtPos(0, 20);
       case 93:
-         return jjStopAtPos(0, 22);
+         return jjStopAtPos(0, 21);
       case 97:
-         return jjMoveStringLiteralDfa1_1(0x10000000000L);
+         return jjMoveStringLiteralDfa1_1(0x8000000000L);
       case 100:
-         return jjMoveStringLiteralDfa1_1(0x4000000000000L);
+         return jjMoveStringLiteralDfa1_1(0x2000000000000L);
       case 101:
-         return jjMoveStringLiteralDfa1_1(0x80400000000L);
+         return jjMoveStringLiteralDfa1_1(0x40200000000L);
       case 102:
-         return jjMoveStringLiteralDfa1_1(0x8000L);
+         return jjMoveStringLiteralDfa1_1(0x4000L);
       case 103:
-         return jjMoveStringLiteralDfa1_1(0x44000000L);
+         return jjMoveStringLiteralDfa1_1(0x22000000L);
       case 105:
-         return jjMoveStringLiteralDfa1_1(0x100000000000L);
+         return jjMoveStringLiteralDfa1_1(0x80000000000L);
       case 108:
-         return jjMoveStringLiteralDfa1_1(0x110000000L);
+         return jjMoveStringLiteralDfa1_1(0x88000000L);
       case 109:
-         return jjMoveStringLiteralDfa1_1(0x10000000000000L);
+         return jjMoveStringLiteralDfa1_1(0x8000000000000L);
       case 110:
-         return jjMoveStringLiteralDfa1_1(0x5000010000L);
+         return jjMoveStringLiteralDfa1_1(0x2800008000L);
       case 111:
-         return jjMoveStringLiteralDfa1_1(0x40000000000L);
+         return jjMoveStringLiteralDfa1_1(0x20000000000L);
       case 116:
-         return jjMoveStringLiteralDfa1_1(0x4000L);
+         return jjMoveStringLiteralDfa1_1(0x2000L);
       case 124:
-         return jjMoveStringLiteralDfa1_1(0x20000000000L);
+         return jjMoveStringLiteralDfa1_1(0x10000000000L);
       case 125:
-         return jjStopAtPos(0, 17);
+         return jjStopAtPos(0, 16);
       default :
          return jjMoveNfa_1(0, 0);
    }
@@ -427,56 +429,56 @@
    switch(curChar)
    {
       case 38:
-         if ((active0 & 0x8000000000L) != 0L)
-            return jjStopAtPos(1, 39);
+         if ((active0 & 0x4000000000L) != 0L)
+            return jjStopAtPos(1, 38);
          break;
       case 61:
-         if ((active0 & 0x20000000L) != 0L)
-            return jjStopAtPos(1, 29);
-         else if ((active0 & 0x80000000L) != 0L)
-            return jjStopAtPos(1, 31);
-         else if ((active0 & 0x200000000L) != 0L)
-            return jjStopAtPos(1, 33);
-         else if ((active0 & 0x800000000L) != 0L)
-            return jjStopAtPos(1, 35);
+         if ((active0 & 0x10000000L) != 0L)
+            return jjStopAtPos(1, 28);
+         else if ((active0 & 0x40000000L) != 0L)
+            return jjStopAtPos(1, 30);
+         else if ((active0 & 0x100000000L) != 0L)
+            return jjStopAtPos(1, 32);
+         else if ((active0 & 0x400000000L) != 0L)
+            return jjStopAtPos(1, 34);
          break;
       case 97:
-         return jjMoveStringLiteralDfa2_1(active0, 0x8000L);
+         return jjMoveStringLiteralDfa2_1(active0, 0x4000L);
       case 101:
-         if ((active0 & 0x40000000L) != 0L)
-            return jjStartNfaWithStates_1(1, 30, 36);
-         else if ((active0 & 0x100000000L) != 0L)
-            return jjStartNfaWithStates_1(1, 32, 36);
-         else if ((active0 & 0x1000000000L) != 0L)
-            return jjStartNfaWithStates_1(1, 36, 36);
+         if ((active0 & 0x20000000L) != 0L)
+            return jjStartNfaWithStates_1(1, 29, 36);
+         else if ((active0 & 0x80000000L) != 0L)
+            return jjStartNfaWithStates_1(1, 31, 36);
+         else if ((active0 & 0x800000000L) != 0L)
+            return jjStartNfaWithStates_1(1, 35, 36);
          break;
       case 105:
-         return jjMoveStringLiteralDfa2_1(active0, 0x4000000000000L);
+         return jjMoveStringLiteralDfa2_1(active0, 0x2000000000000L);
       case 109:
-         return jjMoveStringLiteralDfa2_1(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa2_1(active0, 0x40000000000L);
       case 110:
-         return jjMoveStringLiteralDfa2_1(active0, 0x110000000000L);
+         return jjMoveStringLiteralDfa2_1(active0, 0x88000000000L);
       case 111:
-         return jjMoveStringLiteralDfa2_1(active0, 0x10004000000000L);
+         return jjMoveStringLiteralDfa2_1(active0, 0x8002000000000L);
       case 113:
-         if ((active0 & 0x400000000L) != 0L)
-            return jjStartNfaWithStates_1(1, 34, 36);
+         if ((active0 & 0x200000000L) != 0L)
+            return jjStartNfaWithStates_1(1, 33, 36);
          break;
       case 114:
-         if ((active0 & 0x40000000000L) != 0L)
-            return jjStartNfaWithStates_1(1, 42, 36);
-         return jjMoveStringLiteralDfa2_1(active0, 0x4000L);
+         if ((active0 & 0x20000000000L) != 0L)
+            return jjStartNfaWithStates_1(1, 41, 36);
+         return jjMoveStringLiteralDfa2_1(active0, 0x2000L);
       case 116:
-         if ((active0 & 0x4000000L) != 0L)
-            return jjStartNfaWithStates_1(1, 26, 36);
-         else if ((active0 & 0x10000000L) != 0L)
-            return jjStartNfaWithStates_1(1, 28, 36);
+         if ((active0 & 0x2000000L) != 0L)
+            return jjStartNfaWithStates_1(1, 25, 36);
+         else if ((active0 & 0x8000000L) != 0L)
+            return jjStartNfaWithStates_1(1, 27, 36);
          break;
       case 117:
-         return jjMoveStringLiteralDfa2_1(active0, 0x10000L);
+         return jjMoveStringLiteralDfa2_1(active0, 0x8000L);
       case 124:
-         if ((active0 & 0x20000000000L) != 0L)
-            return jjStopAtPos(1, 41);
+         if ((active0 & 0x10000000000L) != 0L)
+            return jjStopAtPos(1, 40);
          break;
       default :
          break;
@@ -495,26 +497,26 @@
    switch(curChar)
    {
       case 100:
-         if ((active0 & 0x10000000000L) != 0L)
-            return jjStartNfaWithStates_1(2, 40, 36);
-         else if ((active0 & 0x10000000000000L) != 0L)
-            return jjStartNfaWithStates_1(2, 52, 36);
+         if ((active0 & 0x8000000000L) != 0L)
+            return jjStartNfaWithStates_1(2, 39, 36);
+         else if ((active0 & 0x8000000000000L) != 0L)
+            return jjStartNfaWithStates_1(2, 51, 36);
          break;
       case 108:
-         return jjMoveStringLiteralDfa3_1(active0, 0x18000L);
+         return jjMoveStringLiteralDfa3_1(active0, 0xc000L);
       case 112:
-         return jjMoveStringLiteralDfa3_1(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa3_1(active0, 0x40000000000L);
       case 115:
-         return jjMoveStringLiteralDfa3_1(active0, 0x100000000000L);
+         return jjMoveStringLiteralDfa3_1(active0, 0x80000000000L);
       case 116:
-         if ((active0 & 0x4000000000L) != 0L)
-            return jjStartNfaWithStates_1(2, 38, 36);
+         if ((active0 & 0x2000000000L) != 0L)
+            return jjStartNfaWithStates_1(2, 37, 36);
          break;
       case 117:
-         return jjMoveStringLiteralDfa3_1(active0, 0x4000L);
+         return jjMoveStringLiteralDfa3_1(active0, 0x2000L);
       case 118:
-         if ((active0 & 0x4000000000000L) != 0L)
-            return jjStartNfaWithStates_1(2, 50, 36);
+         if ((active0 & 0x2000000000000L) != 0L)
+            return jjStartNfaWithStates_1(2, 49, 36);
          break;
       default :
          break;
@@ -533,17 +535,17 @@
    switch(curChar)
    {
       case 101:
-         if ((active0 & 0x4000L) != 0L)
-            return jjStartNfaWithStates_1(3, 14, 36);
+         if ((active0 & 0x2000L) != 0L)
+            return jjStartNfaWithStates_1(3, 13, 36);
          break;
       case 108:
-         if ((active0 & 0x10000L) != 0L)
-            return jjStartNfaWithStates_1(3, 16, 36);
+         if ((active0 & 0x8000L) != 0L)
+            return jjStartNfaWithStates_1(3, 15, 36);
          break;
       case 115:
-         return jjMoveStringLiteralDfa4_1(active0, 0x8000L);
+         return jjMoveStringLiteralDfa4_1(active0, 0x4000L);
       case 116:
-         return jjMoveStringLiteralDfa4_1(active0, 0x180000000000L);
+         return jjMoveStringLiteralDfa4_1(active0, 0xc0000000000L);
       default :
          break;
    }
@@ -561,14 +563,14 @@
    switch(curChar)
    {
       case 97:
-         return jjMoveStringLiteralDfa5_1(active0, 0x100000000000L);
+         return jjMoveStringLiteralDfa5_1(active0, 0x80000000000L);
       case 101:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStartNfaWithStates_1(4, 15, 36);
+         if ((active0 & 0x4000L) != 0L)
+            return jjStartNfaWithStates_1(4, 14, 36);
          break;
       case 121:
-         if ((active0 & 0x80000000000L) != 0L)
-            return jjStartNfaWithStates_1(4, 43, 36);
+         if ((active0 & 0x40000000000L) != 0L)
+            return jjStartNfaWithStates_1(4, 42, 36);
          break;
       default :
          break;
@@ -587,7 +589,7 @@
    switch(curChar)
    {
       case 110:
-         return jjMoveStringLiteralDfa6_1(active0, 0x100000000000L);
+         return jjMoveStringLiteralDfa6_1(active0, 0x80000000000L);
       default :
          break;
    }
@@ -605,7 +607,7 @@
    switch(curChar)
    {
       case 99:
-         return jjMoveStringLiteralDfa7_1(active0, 0x100000000000L);
+         return jjMoveStringLiteralDfa7_1(active0, 0x80000000000L);
       default :
          break;
    }
@@ -623,7 +625,7 @@
    switch(curChar)
    {
       case 101:
-         return jjMoveStringLiteralDfa8_1(active0, 0x100000000000L);
+         return jjMoveStringLiteralDfa8_1(active0, 0x80000000000L);
       default :
          break;
    }
@@ -641,7 +643,7 @@
    switch(curChar)
    {
       case 111:
-         return jjMoveStringLiteralDfa9_1(active0, 0x100000000000L);
+         return jjMoveStringLiteralDfa9_1(active0, 0x80000000000L);
       default :
          break;
    }
@@ -659,8 +661,8 @@
    switch(curChar)
    {
       case 102:
-         if ((active0 & 0x100000000000L) != 0L)
-            return jjStartNfaWithStates_1(9, 44, 36);
+         if ((active0 & 0x80000000000L) != 0L)
+            return jjStartNfaWithStates_1(9, 43, 36);
          break;
       default :
          break;
@@ -714,42 +716,42 @@
                case 0:
                   if ((0x3ff000000000000L & l) != 0L)
                   {
-                     if (kind > 9)
-                        kind = 9;
-                     jjCheckNAddStates(4, 8);
+                     if (kind > 8)
+                        kind = 8;
+                     jjCheckNAddStates(18, 22);
                   }
                   else if ((0x1800000000L & l) != 0L)
                   {
-                     if (kind > 53)
-                        kind = 53;
+                     if (kind > 52)
+                        kind = 52;
                      jjCheckNAddTwoStates(34, 35);
                   }
                   else if (curChar == 39)
-                     jjCheckNAddStates(9, 13);
+                     jjCheckNAddStates(23, 27);
                   else if (curChar == 34)
-                     jjCheckNAddStates(14, 18);
+                     jjCheckNAddStates(28, 32);
                   else if (curChar == 46)
                      jjCheckNAdd(1);
                   break;
                case 36:
                   if ((0x3ff001000000000L & l) != 0L)
                   {
-                     if (kind > 54)
-                        kind = 54;
+                     if (kind > 53)
+                        kind = 53;
                      jjCheckNAdd(35);
                   }
                   if ((0x3ff001000000000L & l) != 0L)
                   {
-                     if (kind > 53)
-                        kind = 53;
+                     if (kind > 52)
+                        kind = 52;
                      jjCheckNAdd(34);
                   }
                   break;
                case 1:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 10)
-                     kind = 10;
+                  if (kind > 9)
+                     kind = 9;
                   jjCheckNAddTwoStates(1, 2);
                   break;
                case 3:
@@ -759,22 +761,22 @@
                case 4:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 10)
-                     kind = 10;
+                  if (kind > 9)
+                     kind = 9;
                   jjCheckNAdd(4);
                   break;
                case 5:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 9)
-                     kind = 9;
-                  jjCheckNAddStates(4, 8);
+                  if (kind > 8)
+                     kind = 8;
+                  jjCheckNAddStates(18, 22);
                   break;
                case 6:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 9)
-                     kind = 9;
+                  if (kind > 8)
+                     kind = 8;
                   jjCheckNAdd(6);
                   break;
                case 7:
@@ -784,15 +786,15 @@
                case 8:
                   if (curChar != 46)
                      break;
-                  if (kind > 10)
-                     kind = 10;
+                  if (kind > 9)
+                     kind = 9;
                   jjCheckNAddTwoStates(9, 10);
                   break;
                case 9:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 10)
-                     kind = 10;
+                  if (kind > 9)
+                     kind = 9;
                   jjCheckNAddTwoStates(9, 10);
                   break;
                case 11:
@@ -802,8 +804,8 @@
                case 12:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 10)
-                     kind = 10;
+                  if (kind > 9)
+                     kind = 9;
                   jjCheckNAdd(12);
                   break;
                case 13:
@@ -817,77 +819,77 @@
                case 16:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 10)
-                     kind = 10;
+                  if (kind > 9)
+                     kind = 9;
                   jjCheckNAdd(16);
                   break;
                case 17:
                   if (curChar == 34)
-                     jjCheckNAddStates(14, 18);
+                     jjCheckNAddStates(28, 32);
                   break;
                case 18:
                   if ((0xfffffffbffffffffL & l) != 0L)
-                     jjCheckNAddStates(19, 21);
+                     jjCheckNAddStates(33, 35);
                   break;
                case 20:
                   if (curChar == 34)
-                     jjCheckNAddStates(19, 21);
+                     jjCheckNAddStates(33, 35);
                   break;
                case 21:
-                  if (curChar == 34 && kind > 12)
-                     kind = 12;
+                  if (curChar == 34 && kind > 11)
+                     kind = 11;
                   break;
                case 22:
                   if ((0xfffffffbffffffffL & l) != 0L)
                      jjCheckNAddTwoStates(22, 23);
                   break;
                case 24:
-                  if ((0xfffffffbffffffffL & l) != 0L && kind > 13)
-                     kind = 13;
+                  if ((0xfffffffbffffffffL & l) != 0L && kind > 12)
+                     kind = 12;
                   break;
                case 25:
                   if (curChar == 39)
-                     jjCheckNAddStates(9, 13);
+                     jjCheckNAddStates(23, 27);
                   break;
                case 26:
                   if ((0xffffff7fffffffffL & l) != 0L)
-                     jjCheckNAddStates(22, 24);
+                     jjCheckNAddStates(36, 38);
                   break;
                case 28:
                   if (curChar == 39)
-                     jjCheckNAddStates(22, 24);
+                     jjCheckNAddStates(36, 38);
                   break;
                case 29:
-                  if (curChar == 39 && kind > 12)
-                     kind = 12;
+                  if (curChar == 39 && kind > 11)
+                     kind = 11;
                   break;
                case 30:
                   if ((0xffffff7fffffffffL & l) != 0L)
                      jjCheckNAddTwoStates(30, 31);
                   break;
                case 32:
-                  if ((0xffffff7fffffffffL & l) != 0L && kind > 13)
-                     kind = 13;
+                  if ((0xffffff7fffffffffL & l) != 0L && kind > 12)
+                     kind = 12;
                   break;
                case 33:
                   if ((0x1800000000L & l) == 0L)
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 52)
+                     kind = 52;
                   jjCheckNAddTwoStates(34, 35);
                   break;
                case 34:
                   if ((0x3ff001000000000L & l) == 0L)
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 52)
+                     kind = 52;
                   jjCheckNAdd(34);
                   break;
                case 35:
                   if ((0x3ff001000000000L & l) == 0L)
                      break;
-                  if (kind > 54)
-                     kind = 54;
+                  if (kind > 53)
+                     kind = 53;
                   jjCheckNAdd(35);
                   break;
                default : break;
@@ -904,39 +906,39 @@
                case 0:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 52)
+                     kind = 52;
                   jjCheckNAddTwoStates(34, 35);
                   break;
                case 36:
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
-                     if (kind > 54)
-                        kind = 54;
+                     if (kind > 53)
+                        kind = 53;
                      jjCheckNAdd(35);
                   }
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
-                     if (kind > 53)
-                        kind = 53;
+                     if (kind > 52)
+                        kind = 52;
                      jjCheckNAdd(34);
                   }
                   break;
                case 2:
                   if ((0x2000000020L & l) != 0L)
-                     jjAddStates(25, 26);
+                     jjAddStates(39, 40);
                   break;
                case 10:
                   if ((0x2000000020L & l) != 0L)
-                     jjAddStates(27, 28);
+                     jjAddStates(41, 42);
                   break;
                case 14:
                   if ((0x2000000020L & l) != 0L)
-                     jjAddStates(29, 30);
+                     jjAddStates(43, 44);
                   break;
                case 18:
                   if ((0xffffffffefffffffL & l) != 0L)
-                     jjCheckNAddStates(19, 21);
+                     jjCheckNAddStates(33, 35);
                   break;
                case 19:
                   if (curChar == 92)
@@ -944,11 +946,11 @@
                   break;
                case 20:
                   if (curChar == 92)
-                     jjCheckNAddStates(19, 21);
+                     jjCheckNAddStates(33, 35);
                   break;
                case 22:
                   if ((0xffffffffefffffffL & l) != 0L)
-                     jjAddStates(31, 32);
+                     jjAddStates(45, 46);
                   break;
                case 23:
                   if (curChar == 92)
@@ -956,12 +958,12 @@
                   break;
                case 24:
                case 32:
-                  if ((0xffffffffefffffffL & l) != 0L && kind > 13)
-                     kind = 13;
+                  if ((0xffffffffefffffffL & l) != 0L && kind > 12)
+                     kind = 12;
                   break;
                case 26:
                   if ((0xffffffffefffffffL & l) != 0L)
-                     jjCheckNAddStates(22, 24);
+                     jjCheckNAddStates(36, 38);
                   break;
                case 27:
                   if (curChar == 92)
@@ -969,11 +971,11 @@
                   break;
                case 28:
                   if (curChar == 92)
-                     jjCheckNAddStates(22, 24);
+                     jjCheckNAddStates(36, 38);
                   break;
                case 30:
                   if ((0xffffffffefffffffL & l) != 0L)
-                     jjAddStates(33, 34);
+                     jjAddStates(47, 48);
                   break;
                case 31:
                   if (curChar == 92)
@@ -982,15 +984,15 @@
                case 34:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 52)
+                     kind = 52;
                   jjCheckNAdd(34);
                   break;
                case 35:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 54)
-                     kind = 54;
+                  if (kind > 53)
+                     kind = 53;
                   jjCheckNAdd(35);
                   break;
                default : break;
@@ -1011,57 +1013,57 @@
                case 0:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 52)
+                     kind = 52;
                   jjCheckNAddTwoStates(34, 35);
                   break;
                case 36:
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
                   {
-                     if (kind > 53)
-                        kind = 53;
+                     if (kind > 52)
+                        kind = 52;
                      jjCheckNAdd(34);
                   }
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
                   {
-                     if (kind > 54)
-                        kind = 54;
+                     if (kind > 53)
+                        kind = 53;
                      jjCheckNAdd(35);
                   }
                   break;
                case 18:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     jjAddStates(19, 21);
+                     jjAddStates(33, 35);
                   break;
                case 22:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     jjAddStates(31, 32);
+                     jjAddStates(45, 46);
                   break;
                case 24:
                case 32:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 13)
-                     kind = 13;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 12)
+                     kind = 12;
                   break;
                case 26:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     jjAddStates(22, 24);
+                     jjAddStates(36, 38);
                   break;
                case 30:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     jjAddStates(33, 34);
+                     jjAddStates(47, 48);
                   break;
                case 34:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 52)
+                     kind = 52;
                   jjCheckNAdd(34);
                   break;
                case 35:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                      break;
-                  if (kind > 54)
-                     kind = 54;
+                  if (kind > 53)
+                     kind = 53;
                   jjCheckNAdd(35);
                   break;
                default : break;
@@ -1082,9 +1084,10 @@
    }
 }
 static final int[] jjnextStates = {
-   0, 1, 3, 5, 6, 7, 8, 13, 14, 26, 27, 29, 30, 31, 18, 19, 
-   21, 22, 23, 18, 19, 21, 26, 27, 29, 3, 4, 11, 12, 15, 16, 22, 
-   23, 30, 31, 
+   0, 1, 3, 4, 2, 0, 1, 4, 2, 0, 1, 4, 5, 2, 0, 1, 
+   2, 6, 6, 7, 8, 13, 14, 26, 27, 29, 30, 31, 18, 19, 21, 22, 
+   23, 18, 19, 21, 26, 27, 29, 3, 4, 11, 12, 15, 16, 22, 23, 30, 
+   31, 
 };
 private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
 {
@@ -1122,10 +1125,10 @@
 /** Token literal values. */
 public static final String[] jjstrLiteralImages = {
 "", null, "\44\173", "\43\173", null, null, null, null, null, null, null, null, 
-null, null, "\164\162\165\145", "\146\141\154\163\145", "\156\165\154\154", "\175", 
-"\56", "\50", "\51", "\133", "\135", "\72", "\54", "\76", "\147\164", "\74", 
-"\154\164", "\76\75", "\147\145", "\74\75", "\154\145", "\75\75", "\145\161", "\41\75", 
-"\156\145", "\41", "\156\157\164", "\46\46", "\141\156\144", "\174\174", "\157\162", 
+null, "\164\162\165\145", "\146\141\154\163\145", "\156\165\154\154", "\175", "\56", 
+"\50", "\51", "\133", "\135", "\72", "\54", "\76", "\147\164", "\74", "\154\164", 
+"\76\75", "\147\145", "\74\75", "\154\145", "\75\75", "\145\161", "\41\75", "\156\145", 
+"\41", "\156\157\164", "\46\46", "\141\156\144", "\174\174", "\157\162", 
 "\145\155\160\164\171", "\151\156\163\164\141\156\143\145\157\146", "\52", "\53", "\55", "\77", "\57", 
 "\144\151\166", "\45", "\155\157\144", null, null, null, null, null, null, };
 
@@ -1137,15 +1140,15 @@
 
 /** Lex State array. */
 public static final int[] jjnewLexState = {
-   -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 
+   -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, 
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, 
 };
 static final long[] jjtoToken = {
-   0x47ffffffffff60fL, 
+   0x23ffffffffffb0fL, 
 };
 static final long[] jjtoSkip = {
-   0x1f0L, 
+   0xf0L, 
 };
 protected SimpleCharStream input_stream;
 private final int[] jjrounds = new int[36];
@@ -1263,9 +1266,9 @@
        jjmatchedKind = 0x7fffffff;
        jjmatchedPos = 0;
        curPos = jjMoveStringLiteralDfa0_1();
-       if (jjmatchedPos == 0 && jjmatchedKind > 58)
+       if (jjmatchedPos == 0 && jjmatchedKind > 57)
        {
-          jjmatchedKind = 58;
+          jjmatchedKind = 57;
        }
        break;
    }

Modified: tomcat/trunk/java/org/apache/el/parser/ParseException.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ParseException.java?rev=896589&r1=896588&r2=896589&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/ParseException.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/ParseException.java Wed Jan  6 18:10:41 2010
@@ -60,7 +60,7 @@
   /**
    * This is the last token that has been consumed successfully.  If
    * this object has been created due to a parse error, the token
-   * following this token will (therefore) be the first error token.
+   * followng this token will (therefore) be the first error token.
    */
   public Token currentToken;
 
@@ -139,7 +139,7 @@
    * string literal.
    */
   static String add_escapes(String str) {
-      StringBuilder retval = new StringBuilder();
+      StringBuffer retval = new StringBuffer();
       char ch;
       for (int i = 0; i < str.length(); i++) {
         switch (str.charAt(i))

Modified: tomcat/trunk/java/org/apache/el/parser/Token.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/Token.java?rev=896589&r1=896588&r2=896589&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/Token.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/Token.java Wed Jan  6 18:10:41 2010
@@ -97,7 +97,6 @@
   /**
    * Returns the image.
    */
-  @Override
   public String toString()
   {
     return image;

Modified: tomcat/trunk/java/org/apache/el/parser/TokenMgrError.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/TokenMgrError.java?rev=896589&r1=896588&r2=896589&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/TokenMgrError.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/TokenMgrError.java Wed Jan  6 18:10:41 2010
@@ -48,7 +48,7 @@
    * equivalents in the given string
    */
   protected static final String addEscapes(String str) {
-      StringBuilder retval = new StringBuilder();
+    StringBuffer retval = new StringBuffer();
     char ch;
     for (int i = 0; i < str.length(); i++) {
       switch (str.charAt(i))
@@ -121,7 +121,6 @@
    *
    * from this method for such cases in the release version of your parser.
    */
-   @Override
   public String getMessage() {
     return super.getMessage();
   }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: svn commit: r896589 - in /tomcat/trunk/java/org/apache/el/parser: ELParser.java ELParser.jjt ELParserConstants.java ELParserTokenManager.java ParseException.java Token.java TokenMgrError.java

Posted by Mark Thomas <ma...@apache.org>.
On 06/01/2010 18:10, markt@apache.org wrote:
> Author: markt
> Date: Wed Jan  6 18:10:41 2010
> New Revision: 896589
> 
> URL: http://svn.apache.org/viewvc?rev=896589&view=rev
> Log: (empty)
> 
> --- tomcat/trunk/java/org/apache/el/parser/ELParser.jjt (original)
> +++ tomcat/trunk/java/org/apache/el/parser/ELParser.jjt Wed Jan  6 18:10:41 2010
> @@ -353,11 +353,15 @@
>  /* ==================================================================================== */
>  <DEFAULT> TOKEN :
>  {
> +  /*
> +   * The following definition uses + rather than * in two places to prevent
> +   * LITERAL_EXPRESSION matching the empty string that could result in the
> +   * Parser entering an infinite loop.
> +   */
>    < LITERAL_EXPRESSION:
> -    ((~["\\", "$", "#"])
> -      | ("\\" ("\\" | "$" | "#"))
> -      | ("$" ~["{", "$"])
> -      | ("#" ~["{", "#"])
> +    (   (~["$", "#", "\\"])* "\\" (["$", "#"])?
> +      | (~["$", "#"])* (["$", "#"] ~["{"])
> +      | (~["$", "#"])+

I've raised this with the EL spec folks. Hopefully it will get fixed in
a future version.

Mark



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org