You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/01/19 11:33:12 UTC

[2/3] cayenne git commit: CAY-2196 Support for new function expressions in expression parser - updated and refactored grammar for parser - add token id to AST* function call nodes - escape in parse exception message - tests

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c44ccfde/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ExpressionParserTokenManager.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ExpressionParserTokenManager.java b/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ExpressionParserTokenManager.java
index ad5e218..79285ff 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ExpressionParserTokenManager.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ExpressionParserTokenManager.java
@@ -101,140 +101,9 @@ public class ExpressionParserTokenManager implements ExpressionParserConstants
     }
 
   /** Debug output. */
-  public  java.io.PrintStream debugStream = System.out;
+  public  PrintStream debugStream = System.out;
   /** Set debug output. */
-  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
-private final int jjStopStringLiteralDfa_0(int pos, long active0)
-{
-   switch (pos)
-   {
-      case 0:
-         if ((active0 & 0x8L) != 0L)
-         {
-            jjmatchedKind = 41;
-            return 2;
-         }
-         if ((active0 & 0x38004e006L) != 0L)
-         {
-            jjmatchedKind = 41;
-            return 56;
-         }
-         return -1;
-      case 1:
-         if ((active0 & 0x38004600cL) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 1;
-            return 56;
-         }
-         if ((active0 & 0x8002L) != 0L)
-            return 56;
-         return -1;
-      case 2:
-         if ((active0 & 0x280046000L) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 2;
-            return 56;
-         }
-         if ((active0 & 0xcL) != 0L)
-            return 56;
-         return -1;
-      case 3:
-         if ((active0 & 0x200040000L) != 0L)
-         {
-            if (jjmatchedPos != 3)
-            {
-               jjmatchedKind = 41;
-               jjmatchedPos = 3;
-            }
-            return 56;
-         }
-         if ((active0 & 0x6000L) != 0L)
-            return 56;
-         return -1;
-      case 4:
-         if ((active0 & 0x44000L) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 4;
-            return 56;
-         }
-         return -1;
-      case 5:
-         if ((active0 & 0x44000L) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 5;
-            return 56;
-         }
-         return -1;
-      case 6:
-         if ((active0 & 0x4000L) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 6;
-            return 56;
-         }
-         if ((active0 & 0x40000L) != 0L)
-            return 56;
-         return -1;
-      case 7:
-         if ((active0 & 0x4000L) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 7;
-            return 56;
-         }
-         return -1;
-      case 8:
-         if ((active0 & 0x4000L) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 8;
-            return 56;
-         }
-         return -1;
-      case 9:
-         if ((active0 & 0x4000L) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 9;
-            return 56;
-         }
-         return -1;
-      case 10:
-         if ((active0 & 0x4000L) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 10;
-            return 56;
-         }
-         return -1;
-      case 11:
-         if ((active0 & 0x4000L) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 11;
-            return 56;
-         }
-         return -1;
-      case 12:
-         if ((active0 & 0x4000L) != 0L)
-         {
-            jjmatchedKind = 41;
-            jjmatchedPos = 12;
-            return 56;
-         }
-         return -1;
-      default :
-         return -1;
-   }
-}
-private final int jjStartNfa_0(int pos, long active0)
-{
-   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
-}
+  public  void setDebugStream(PrintStream ds) { debugStream = ds; }
 private int jjStopAtPos(int pos, int kind)
 {
    jjmatchedKind = kind;
@@ -245,31 +114,54 @@ private int jjMoveStringLiteralDfa0_0()
 {
    switch(curChar)
    {
+      case 9:
+         jjmatchedKind = 31;
+         return jjMoveNfa_0(3, 0);
+      case 10:
+         jjmatchedKind = 32;
+         return jjMoveNfa_0(3, 0);
+      case 13:
+         jjmatchedKind = 33;
+         return jjMoveNfa_0(3, 0);
+      case 32:
+         jjmatchedKind = 30;
+         return jjMoveNfa_0(3, 0);
       case 33:
          jjmatchedKind = 4;
          return jjMoveStringLiteralDfa1_0(0x80L);
       case 34:
-         return jjStopAtPos(0, 46);
+         jjmatchedKind = 64;
+         return jjMoveNfa_0(3, 0);
       case 36:
-         return jjStopAtPos(0, 30);
+         jjmatchedKind = 55;
+         return jjMoveNfa_0(3, 0);
       case 38:
-         return jjStopAtPos(0, 22);
+         jjmatchedKind = 22;
+         return jjMoveNfa_0(3, 0);
       case 39:
-         return jjStopAtPos(0, 45);
+         jjmatchedKind = 63;
+         return jjMoveNfa_0(3, 0);
       case 40:
-         return jjStopAtPos(0, 16);
+         jjmatchedKind = 16;
+         return jjMoveNfa_0(3, 0);
       case 41:
-         return jjStopAtPos(0, 17);
+         jjmatchedKind = 17;
+         return jjMoveNfa_0(3, 0);
       case 42:
-         return jjStopAtPos(0, 27);
+         jjmatchedKind = 27;
+         return jjMoveNfa_0(3, 0);
       case 43:
-         return jjStopAtPos(0, 25);
+         jjmatchedKind = 25;
+         return jjMoveNfa_0(3, 0);
       case 44:
-         return jjStopAtPos(0, 19);
+         jjmatchedKind = 19;
+         return jjMoveNfa_0(3, 0);
       case 45:
-         return jjStopAtPos(0, 26);
+         jjmatchedKind = 26;
+         return jjMoveNfa_0(3, 0);
       case 47:
-         return jjStopAtPos(0, 28);
+         jjmatchedKind = 28;
+         return jjMoveNfa_0(3, 0);
       case 60:
          jjmatchedKind = 10;
          return jjMoveStringLiteralDfa1_0(0x800300L);
@@ -279,28 +171,55 @@ private int jjMoveStringLiteralDfa0_0()
       case 62:
          jjmatchedKind = 11;
          return jjMoveStringLiteralDfa1_0(0x1001000L);
+      case 65:
+         return jjMoveStringLiteralDfa1_0(0x2002000000000L);
+      case 67:
+         return jjMoveStringLiteralDfa1_0(0x70060000000000L);
+      case 76:
+         return jjMoveStringLiteralDfa1_0(0x1a00000000000L);
+      case 77:
+         return jjMoveStringLiteralDfa1_0(0x800c000000000L);
+      case 83:
+         return jjMoveStringLiteralDfa1_0(0x4090000000000L);
+      case 84:
+         return jjMoveStringLiteralDfa1_0(0x100000000000L);
+      case 85:
+         return jjMoveStringLiteralDfa1_0(0x400000000000L);
       case 94:
-         return jjStopAtPos(0, 21);
+         jjmatchedKind = 21;
+         return jjMoveNfa_0(3, 0);
       case 97:
-         return jjMoveStringLiteralDfa1_0(0x4L);
+         return jjMoveStringLiteralDfa1_0(0x2002000000004L);
       case 98:
          return jjMoveStringLiteralDfa1_0(0x40000L);
+      case 99:
+         return jjMoveStringLiteralDfa1_0(0x70060000000000L);
       case 100:
-         return jjMoveStringLiteralDfa1_0(0x100000000L);
+         return jjMoveStringLiteralDfa1_0(0x200000000000000L);
       case 101:
-         return jjMoveStringLiteralDfa1_0(0x200000000L);
+         return jjMoveStringLiteralDfa1_0(0x400000000000000L);
       case 105:
          return jjMoveStringLiteralDfa1_0(0x8000L);
       case 108:
-         return jjMoveStringLiteralDfa1_0(0x6000L);
+         return jjMoveStringLiteralDfa1_0(0x1a00000006000L);
+      case 109:
+         return jjMoveStringLiteralDfa1_0(0x800c000000000L);
       case 110:
          return jjMoveStringLiteralDfa1_0(0x8L);
       case 111:
-         return jjMoveStringLiteralDfa1_0(0x80000002L);
+         return jjMoveStringLiteralDfa1_0(0x100000000000002L);
+      case 115:
+         return jjMoveStringLiteralDfa1_0(0x4090000000000L);
+      case 116:
+         return jjMoveStringLiteralDfa1_0(0x100000000000L);
+      case 117:
+         return jjMoveStringLiteralDfa1_0(0x400000000000L);
       case 124:
-         return jjStopAtPos(0, 20);
+         jjmatchedKind = 20;
+         return jjMoveNfa_0(3, 0);
       case 126:
-         return jjStopAtPos(0, 29);
+         jjmatchedKind = 29;
+         return jjMoveNfa_0(3, 0);
       default :
          return jjMoveNfa_0(3, 0);
    }
@@ -308,320 +227,785 @@ private int jjMoveStringLiteralDfa0_0()
 private int jjMoveStringLiteralDfa1_0(long active0)
 {
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(0, active0);
-      return 1;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 0);
    }
    switch(curChar)
    {
       case 60:
          if ((active0 & 0x800000L) != 0L)
-            return jjStopAtPos(1, 23);
+         {
+            jjmatchedKind = 23;
+            jjmatchedPos = 1;
+         }
          break;
       case 61:
          if ((active0 & 0x40L) != 0L)
-            return jjStopAtPos(1, 6);
+         {
+            jjmatchedKind = 6;
+            jjmatchedPos = 1;
+         }
          else if ((active0 & 0x80L) != 0L)
-            return jjStopAtPos(1, 7);
+         {
+            jjmatchedKind = 7;
+            jjmatchedPos = 1;
+         }
          else if ((active0 & 0x200L) != 0L)
-            return jjStopAtPos(1, 9);
+         {
+            jjmatchedKind = 9;
+            jjmatchedPos = 1;
+         }
          else if ((active0 & 0x1000L) != 0L)
-            return jjStopAtPos(1, 12);
+         {
+            jjmatchedKind = 12;
+            jjmatchedPos = 1;
+         }
          break;
       case 62:
          if ((active0 & 0x100L) != 0L)
-            return jjStopAtPos(1, 8);
+         {
+            jjmatchedKind = 8;
+            jjmatchedPos = 1;
+         }
          else if ((active0 & 0x1000000L) != 0L)
-            return jjStopAtPos(1, 24);
+         {
+            jjmatchedKind = 24;
+            jjmatchedPos = 1;
+         }
          break;
+      case 65:
+         return jjMoveStringLiteralDfa2_0(active0, 0x8000000000L);
+      case 66:
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000000L);
+      case 69:
+         return jjMoveStringLiteralDfa2_0(active0, 0x800000000000L);
+      case 73:
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000L);
+      case 79:
+         return jjMoveStringLiteralDfa2_0(active0, 0x9260000000000L);
+      case 80:
+         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L);
+      case 81:
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L);
+      case 82:
+         return jjMoveStringLiteralDfa2_0(active0, 0x100000000000L);
+      case 85:
+         return jjMoveStringLiteralDfa2_0(active0, 0x70090000000000L);
+      case 86:
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000L);
+      case 97:
+         return jjMoveStringLiteralDfa2_0(active0, 0x8000000000L);
       case 98:
-         return jjMoveStringLiteralDfa2_0(active0, 0x180000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x302000000000000L);
       case 101:
-         return jjMoveStringLiteralDfa2_0(active0, 0x40000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x800000040000L);
       case 105:
-         return jjMoveStringLiteralDfa2_0(active0, 0x6000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000006000L);
       case 110:
          if ((active0 & 0x8000L) != 0L)
-            return jjStartNfaWithStates_0(1, 15, 56);
-         return jjMoveStringLiteralDfa2_0(active0, 0x200000004L);
+         {
+            jjmatchedKind = 15;
+            jjmatchedPos = 1;
+         }
+         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000004L);
       case 111:
-         return jjMoveStringLiteralDfa2_0(active0, 0x8L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x9260000000008L);
+      case 112:
+         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L);
+      case 113:
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L);
       case 114:
          if ((active0 & 0x2L) != 0L)
-            return jjStartNfaWithStates_0(1, 1, 56);
-         break;
+         {
+            jjmatchedKind = 1;
+            jjmatchedPos = 1;
+         }
+         return jjMoveStringLiteralDfa2_0(active0, 0x100000000000L);
+      case 117:
+         return jjMoveStringLiteralDfa2_0(active0, 0x70090000000000L);
+      case 118:
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000L);
       default :
          break;
    }
-   return jjStartNfa_0(0, active0);
+   return jjMoveNfa_0(3, 1);
 }
 private int jjMoveStringLiteralDfa2_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(0, old0);
+      return jjMoveNfa_0(3, 1);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(1, active0);
-      return 2;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 1);
    }
    switch(curChar)
    {
       case 58:
-         if ((active0 & 0x100000000L) != 0L)
-            return jjStopAtPos(2, 32);
+         if ((active0 & 0x200000000000000L) != 0L)
+         {
+            jjmatchedKind = 57;
+            jjmatchedPos = 2;
+         }
          break;
+      case 66:
+         return jjMoveStringLiteralDfa3_0(active0, 0x80000000000L);
+      case 67:
+         return jjMoveStringLiteralDfa3_0(active0, 0x1000000000000L);
+      case 68:
+         if ((active0 & 0x8000000000000L) != 0L)
+         {
+            jjmatchedKind = 51;
+            jjmatchedPos = 2;
+         }
+         break;
+      case 71:
+         if ((active0 & 0x2000000000L) != 0L)
+         {
+            jjmatchedKind = 37;
+            jjmatchedPos = 2;
+         }
+         break;
+      case 73:
+         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);
+      case 77:
+         if ((active0 & 0x10000000000L) != 0L)
+         {
+            jjmatchedKind = 40;
+            jjmatchedPos = 2;
+         }
+         break;
+      case 78:
+         if ((active0 & 0x4000000000L) != 0L)
+         {
+            jjmatchedKind = 38;
+            jjmatchedPos = 2;
+         }
+         return jjMoveStringLiteralDfa3_0(active0, 0x840000000000L);
+      case 80:
+         return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L);
+      case 82:
+         return jjMoveStringLiteralDfa3_0(active0, 0x74000000000000L);
+      case 83:
+         if ((active0 & 0x2000000000000L) != 0L)
+         {
+            jjmatchedKind = 49;
+            jjmatchedPos = 2;
+         }
+         break;
+      case 85:
+         return jjMoveStringLiteralDfa3_0(active0, 0x20000000000L);
+      case 87:
+         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);
+      case 88:
+         if ((active0 & 0x8000000000L) != 0L)
+         {
+            jjmatchedKind = 39;
+            jjmatchedPos = 2;
+         }
+         break;
+      case 98:
+         return jjMoveStringLiteralDfa3_0(active0, 0x80000000000L);
+      case 99:
+         return jjMoveStringLiteralDfa3_0(active0, 0x1000000000000L);
       case 100:
          if ((active0 & 0x4L) != 0L)
-            return jjStartNfaWithStates_0(2, 2, 56);
+         {
+            jjmatchedKind = 2;
+            jjmatchedPos = 2;
+         }
+         else if ((active0 & 0x8000000000000L) != 0L)
+         {
+            jjmatchedKind = 51;
+            jjmatchedPos = 2;
+         }
          break;
+      case 103:
+         if ((active0 & 0x2000000000L) != 0L)
+         {
+            jjmatchedKind = 37;
+            jjmatchedPos = 2;
+         }
+         break;
+      case 105:
+         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);
       case 106:
-         return jjMoveStringLiteralDfa3_0(active0, 0x80000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000000L);
       case 107:
          return jjMoveStringLiteralDfa3_0(active0, 0x6000L);
+      case 109:
+         if ((active0 & 0x10000000000L) != 0L)
+         {
+            jjmatchedKind = 40;
+            jjmatchedPos = 2;
+         }
+         break;
+      case 110:
+         if ((active0 & 0x4000000000L) != 0L)
+         {
+            jjmatchedKind = 38;
+            jjmatchedPos = 2;
+         }
+         return jjMoveStringLiteralDfa3_0(active0, 0x840000000000L);
+      case 112:
+         return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L);
+      case 114:
+         return jjMoveStringLiteralDfa3_0(active0, 0x74000000000000L);
+      case 115:
+         if ((active0 & 0x2000000000000L) != 0L)
+         {
+            jjmatchedKind = 49;
+            jjmatchedPos = 2;
+         }
+         break;
       case 116:
          if ((active0 & 0x8L) != 0L)
-            return jjStartNfaWithStates_0(2, 3, 56);
+         {
+            jjmatchedKind = 3;
+            jjmatchedPos = 2;
+         }
          return jjMoveStringLiteralDfa3_0(active0, 0x40000L);
       case 117:
-         return jjMoveStringLiteralDfa3_0(active0, 0x200000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x400020000000000L);
+      case 119:
+         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);
+      case 120:
+         if ((active0 & 0x8000000000L) != 0L)
+         {
+            jjmatchedKind = 39;
+            jjmatchedPos = 2;
+         }
+         break;
       default :
          break;
    }
-   return jjStartNfa_0(1, active0);
+   return jjMoveNfa_0(3, 2);
 }
 private int jjMoveStringLiteralDfa3_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(1, old0);
+      return jjMoveNfa_0(3, 2);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(2, active0);
-      return 3;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 2);
    }
    switch(curChar)
    {
       case 58:
-         if ((active0 & 0x80000000L) != 0L)
-            return jjStopAtPos(3, 31);
+         if ((active0 & 0x100000000000000L) != 0L)
+         {
+            jjmatchedKind = 56;
+            jjmatchedPos = 3;
+         }
+         break;
+      case 65:
+         return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L);
+      case 67:
+         return jjMoveStringLiteralDfa4_0(active0, 0x40000000000L);
+      case 69:
+         return jjMoveStringLiteralDfa4_0(active0, 0x600000000000L);
+      case 71:
+         return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L);
+      case 77:
+         if ((active0 & 0x100000000000L) != 0L)
+         {
+            jjmatchedKind = 44;
+            jjmatchedPos = 3;
+         }
+         break;
+      case 78:
+         return jjMoveStringLiteralDfa4_0(active0, 0x20000000000L);
+      case 82:
+         return jjMoveStringLiteralDfa4_0(active0, 0x70000000000000L);
+      case 83:
+         return jjMoveStringLiteralDfa4_0(active0, 0x80000000000L);
+      case 84:
+         if ((active0 & 0x4000000000000L) != 0L)
+         {
+            jjmatchedKind = 50;
+            jjmatchedPos = 3;
+         }
          break;
+      case 97:
+         return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L);
+      case 99:
+         return jjMoveStringLiteralDfa4_0(active0, 0x40000000000L);
       case 101:
          if ((active0 & 0x2000L) != 0L)
          {
             jjmatchedKind = 13;
             jjmatchedPos = 3;
          }
-         return jjMoveStringLiteralDfa4_0(active0, 0x4000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x600000004000L);
+      case 103:
+         return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L);
       case 109:
-         return jjMoveStringLiteralDfa4_0(active0, 0x200000000L);
+         if ((active0 & 0x100000000000L) != 0L)
+         {
+            jjmatchedKind = 44;
+            jjmatchedPos = 3;
+         }
+         return jjMoveStringLiteralDfa4_0(active0, 0x400000000000000L);
+      case 110:
+         return jjMoveStringLiteralDfa4_0(active0, 0x20000000000L);
+      case 114:
+         return jjMoveStringLiteralDfa4_0(active0, 0x70000000000000L);
+      case 115:
+         return jjMoveStringLiteralDfa4_0(active0, 0x80000000000L);
+      case 116:
+         if ((active0 & 0x4000000000000L) != 0L)
+         {
+            jjmatchedKind = 50;
+            jjmatchedPos = 3;
+         }
+         break;
       case 119:
          return jjMoveStringLiteralDfa4_0(active0, 0x40000L);
       default :
          break;
    }
-   return jjStartNfa_0(2, active0);
+   return jjMoveNfa_0(3, 3);
 }
 private int jjMoveStringLiteralDfa4_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(2, old0);
+      return jjMoveNfa_0(3, 3);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(3, active0);
-      return 4;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 3);
    }
    switch(curChar)
    {
       case 58:
-         if ((active0 & 0x200000000L) != 0L)
-            return jjStopAtPos(4, 33);
+         if ((active0 & 0x400000000000000L) != 0L)
+         {
+            jjmatchedKind = 58;
+            jjmatchedPos = 4;
+         }
          break;
+      case 65:
+         return jjMoveStringLiteralDfa5_0(active0, 0x40000000000L);
+      case 69:
+         return jjMoveStringLiteralDfa5_0(active0, 0x70000000000000L);
       case 73:
          return jjMoveStringLiteralDfa5_0(active0, 0x4000L);
+      case 82:
+         if ((active0 & 0x200000000000L) != 0L)
+         {
+            jjmatchedKind = 45;
+            jjmatchedPos = 4;
+         }
+         else if ((active0 & 0x400000000000L) != 0L)
+         {
+            jjmatchedKind = 46;
+            jjmatchedPos = 4;
+         }
+         break;
+      case 84:
+         if ((active0 & 0x20000000000L) != 0L)
+         {
+            jjmatchedKind = 41;
+            jjmatchedPos = 4;
+         }
+         return jjMoveStringLiteralDfa5_0(active0, 0x1880000000000L);
+      case 97:
+         return jjMoveStringLiteralDfa5_0(active0, 0x40000000000L);
       case 101:
-         return jjMoveStringLiteralDfa5_0(active0, 0x40000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x70000000040000L);
+      case 114:
+         if ((active0 & 0x200000000000L) != 0L)
+         {
+            jjmatchedKind = 45;
+            jjmatchedPos = 4;
+         }
+         else if ((active0 & 0x400000000000L) != 0L)
+         {
+            jjmatchedKind = 46;
+            jjmatchedPos = 4;
+         }
+         break;
+      case 116:
+         if ((active0 & 0x20000000000L) != 0L)
+         {
+            jjmatchedKind = 41;
+            jjmatchedPos = 4;
+         }
+         return jjMoveStringLiteralDfa5_0(active0, 0x1880000000000L);
       default :
          break;
    }
-   return jjStartNfa_0(3, active0);
+   return jjMoveNfa_0(3, 4);
 }
 private int jjMoveStringLiteralDfa5_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(3, old0);
+      return jjMoveNfa_0(3, 4);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(4, active0);
-      return 5;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 4);
    }
    switch(curChar)
    {
+      case 69:
+         if ((active0 & 0x1000000000000L) != 0L)
+         {
+            jjmatchedKind = 48;
+            jjmatchedPos = 5;
+         }
+         break;
+      case 72:
+         if ((active0 & 0x800000000000L) != 0L)
+         {
+            jjmatchedKind = 47;
+            jjmatchedPos = 5;
+         }
+         break;
+      case 78:
+         return jjMoveStringLiteralDfa6_0(active0, 0x70000000000000L);
+      case 82:
+         return jjMoveStringLiteralDfa6_0(active0, 0x80000000000L);
+      case 84:
+         if ((active0 & 0x40000000000L) != 0L)
+         {
+            jjmatchedKind = 42;
+            jjmatchedPos = 5;
+         }
+         break;
       case 101:
+         if ((active0 & 0x1000000000000L) != 0L)
+         {
+            jjmatchedKind = 48;
+            jjmatchedPos = 5;
+         }
          return jjMoveStringLiteralDfa6_0(active0, 0x40000L);
       case 103:
          return jjMoveStringLiteralDfa6_0(active0, 0x4000L);
+      case 104:
+         if ((active0 & 0x800000000000L) != 0L)
+         {
+            jjmatchedKind = 47;
+            jjmatchedPos = 5;
+         }
+         break;
+      case 110:
+         return jjMoveStringLiteralDfa6_0(active0, 0x70000000000000L);
+      case 114:
+         return jjMoveStringLiteralDfa6_0(active0, 0x80000000000L);
+      case 116:
+         if ((active0 & 0x40000000000L) != 0L)
+         {
+            jjmatchedKind = 42;
+            jjmatchedPos = 5;
+         }
+         break;
       default :
          break;
    }
-   return jjStartNfa_0(4, active0);
+   return jjMoveNfa_0(3, 5);
 }
 private int jjMoveStringLiteralDfa6_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(4, old0);
+      return jjMoveNfa_0(3, 5);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(5, active0);
-      return 6;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 5);
    }
    switch(curChar)
    {
+      case 73:
+         return jjMoveStringLiteralDfa7_0(active0, 0x80000000000L);
+      case 84:
+         return jjMoveStringLiteralDfa7_0(active0, 0x70000000000000L);
+      case 105:
+         return jjMoveStringLiteralDfa7_0(active0, 0x80000000000L);
       case 110:
          if ((active0 & 0x40000L) != 0L)
-            return jjStartNfaWithStates_0(6, 18, 56);
+         {
+            jjmatchedKind = 18;
+            jjmatchedPos = 6;
+         }
          return jjMoveStringLiteralDfa7_0(active0, 0x4000L);
+      case 116:
+         return jjMoveStringLiteralDfa7_0(active0, 0x70000000000000L);
       default :
          break;
    }
-   return jjStartNfa_0(5, active0);
+   return jjMoveNfa_0(3, 6);
 }
 private int jjMoveStringLiteralDfa7_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(5, old0);
+      return jjMoveNfa_0(3, 6);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(6, active0);
-      return 7;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 6);
    }
    switch(curChar)
    {
+      case 78:
+         return jjMoveStringLiteralDfa8_0(active0, 0x80000000000L);
+      case 95:
+         return jjMoveStringLiteralDfa8_0(active0, 0x70000000000000L);
+      case 110:
+         return jjMoveStringLiteralDfa8_0(active0, 0x80000000000L);
       case 111:
          return jjMoveStringLiteralDfa8_0(active0, 0x4000L);
       default :
          break;
    }
-   return jjStartNfa_0(6, active0);
+   return jjMoveNfa_0(3, 7);
 }
 private int jjMoveStringLiteralDfa8_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(6, old0);
+      return jjMoveNfa_0(3, 7);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(7, active0);
-      return 8;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 7);
    }
    switch(curChar)
    {
+      case 68:
+         return jjMoveStringLiteralDfa9_0(active0, 0x10000000000000L);
+      case 71:
+         if ((active0 & 0x80000000000L) != 0L)
+         {
+            jjmatchedKind = 43;
+            jjmatchedPos = 8;
+         }
+         break;
+      case 84:
+         return jjMoveStringLiteralDfa9_0(active0, 0x60000000000000L);
+      case 100:
+         return jjMoveStringLiteralDfa9_0(active0, 0x10000000000000L);
+      case 103:
+         if ((active0 & 0x80000000000L) != 0L)
+         {
+            jjmatchedKind = 43;
+            jjmatchedPos = 8;
+         }
+         break;
       case 114:
          return jjMoveStringLiteralDfa9_0(active0, 0x4000L);
+      case 116:
+         return jjMoveStringLiteralDfa9_0(active0, 0x60000000000000L);
       default :
          break;
    }
-   return jjStartNfa_0(7, active0);
+   return jjMoveNfa_0(3, 8);
 }
 private int jjMoveStringLiteralDfa9_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(7, old0);
+      return jjMoveNfa_0(3, 8);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(8, active0);
-      return 9;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 8);
    }
    switch(curChar)
    {
+      case 65:
+         return jjMoveStringLiteralDfa10_0(active0, 0x10000000000000L);
+      case 73:
+         return jjMoveStringLiteralDfa10_0(active0, 0x60000000000000L);
+      case 97:
+         return jjMoveStringLiteralDfa10_0(active0, 0x10000000000000L);
       case 101:
          return jjMoveStringLiteralDfa10_0(active0, 0x4000L);
+      case 105:
+         return jjMoveStringLiteralDfa10_0(active0, 0x60000000000000L);
       default :
          break;
    }
-   return jjStartNfa_0(8, active0);
+   return jjMoveNfa_0(3, 9);
 }
 private int jjMoveStringLiteralDfa10_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(8, old0);
+      return jjMoveNfa_0(3, 9);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(9, active0);
-      return 10;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 9);
    }
    switch(curChar)
    {
       case 67:
          return jjMoveStringLiteralDfa11_0(active0, 0x4000L);
+      case 77:
+         return jjMoveStringLiteralDfa11_0(active0, 0x60000000000000L);
+      case 84:
+         return jjMoveStringLiteralDfa11_0(active0, 0x10000000000000L);
+      case 109:
+         return jjMoveStringLiteralDfa11_0(active0, 0x60000000000000L);
+      case 116:
+         return jjMoveStringLiteralDfa11_0(active0, 0x10000000000000L);
       default :
          break;
    }
-   return jjStartNfa_0(9, active0);
+   return jjMoveNfa_0(3, 10);
 }
 private int jjMoveStringLiteralDfa11_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(9, old0);
+      return jjMoveNfa_0(3, 10);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(10, active0);
-      return 11;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 10);
    }
    switch(curChar)
    {
+      case 69:
+         if ((active0 & 0x10000000000000L) != 0L)
+         {
+            jjmatchedKind = 52;
+            jjmatchedPos = 11;
+         }
+         else if ((active0 & 0x20000000000000L) != 0L)
+         {
+            jjmatchedKind = 53;
+            jjmatchedPos = 11;
+         }
+         return jjMoveStringLiteralDfa12_0(active0, 0x40000000000000L);
       case 97:
          return jjMoveStringLiteralDfa12_0(active0, 0x4000L);
+      case 101:
+         if ((active0 & 0x10000000000000L) != 0L)
+         {
+            jjmatchedKind = 52;
+            jjmatchedPos = 11;
+         }
+         else if ((active0 & 0x20000000000000L) != 0L)
+         {
+            jjmatchedKind = 53;
+            jjmatchedPos = 11;
+         }
+         return jjMoveStringLiteralDfa12_0(active0, 0x40000000000000L);
       default :
          break;
    }
-   return jjStartNfa_0(10, active0);
+   return jjMoveNfa_0(3, 11);
 }
 private int jjMoveStringLiteralDfa12_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(10, old0);
+      return jjMoveNfa_0(3, 11);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(11, active0);
-      return 12;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 11);
    }
    switch(curChar)
    {
+      case 83:
+         return jjMoveStringLiteralDfa13_0(active0, 0x40000000000000L);
       case 115:
-         return jjMoveStringLiteralDfa13_0(active0, 0x4000L);
+         return jjMoveStringLiteralDfa13_0(active0, 0x40000000004000L);
       default :
          break;
    }
-   return jjStartNfa_0(11, active0);
+   return jjMoveNfa_0(3, 12);
 }
 private int jjMoveStringLiteralDfa13_0(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_0(11, old0);
+      return jjMoveNfa_0(3, 12);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_0(12, active0);
-      return 13;
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 12);
    }
    switch(curChar)
    {
+      case 84:
+         return jjMoveStringLiteralDfa14_0(active0, 0x40000000000000L);
       case 101:
          if ((active0 & 0x4000L) != 0L)
-            return jjStartNfaWithStates_0(13, 14, 56);
+         {
+            jjmatchedKind = 14;
+            jjmatchedPos = 13;
+         }
          break;
+      case 116:
+         return jjMoveStringLiteralDfa14_0(active0, 0x40000000000000L);
       default :
          break;
    }
-   return jjStartNfa_0(12, active0);
+   return jjMoveNfa_0(3, 13);
 }
-private int jjStartNfaWithStates_0(int pos, int kind, int state)
+private int jjMoveStringLiteralDfa14_0(long old0, long active0)
 {
-   jjmatchedKind = kind;
-   jjmatchedPos = pos;
+   if (((active0 &= old0)) == 0L)
+      return jjMoveNfa_0(3, 13);
+   try { curChar = input_stream.readChar(); }
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 13);
+   }
+   switch(curChar)
+   {
+      case 65:
+         return jjMoveStringLiteralDfa15_0(active0, 0x40000000000000L);
+      case 97:
+         return jjMoveStringLiteralDfa15_0(active0, 0x40000000000000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(3, 14);
+}
+private int jjMoveStringLiteralDfa15_0(long old0, long active0)
+{
+   if (((active0 &= old0)) == 0L)
+      return jjMoveNfa_0(3, 14);
    try { curChar = input_stream.readChar(); }
-   catch(java.io.IOException e) { return pos + 1; }
-   return jjMoveNfa_0(state, pos + 1);
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 14);
+   }
+   switch(curChar)
+   {
+      case 77:
+         return jjMoveStringLiteralDfa16_0(active0, 0x40000000000000L);
+      case 109:
+         return jjMoveStringLiteralDfa16_0(active0, 0x40000000000000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(3, 15);
+}
+private int jjMoveStringLiteralDfa16_0(long old0, long active0)
+{
+   if (((active0 &= old0)) == 0L)
+      return jjMoveNfa_0(3, 15);
+   try { curChar = input_stream.readChar(); }
+   catch(IOException e) {
+   return jjMoveNfa_0(3, 15);
+   }
+   switch(curChar)
+   {
+      case 80:
+         if ((active0 & 0x40000000000000L) != 0L)
+         {
+            jjmatchedKind = 54;
+            jjmatchedPos = 16;
+         }
+         break;
+      case 112:
+         if ((active0 & 0x40000000000000L) != 0L)
+         {
+            jjmatchedKind = 54;
+            jjmatchedPos = 16;
+         }
+         break;
+      default :
+         break;
+   }
+   return jjMoveNfa_0(3, 16);
 }
 private int jjMoveNfa_0(int startState, int curPos)
 {
+   int strKind = jjmatchedKind;
+   int strPos = jjmatchedPos;
+   int seenUpto;
+   input_stream.backup(seenUpto = curPos + 1);
+   try { curChar = input_stream.readChar(); }
+   catch(IOException e) { throw new Error("Internal Error"); }
+   curPos = 0;
    int startsAt = 0;
    jjnewStateCnt = 56;
    int i = 1;
@@ -638,90 +1022,36 @@ private int jjMoveNfa_0(int startState, int curPos)
          {
             switch(jjstateSet[--i])
             {
-               case 56:
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 42)
-                        kind = 42;
-                     jjCheckNAddTwoStates(54, 55);
-                  }
-                  else if (curChar == 43)
-                  {
-                     if (kind > 42)
-                        kind = 42;
-                  }
-                  else if (curChar == 46)
-                     jjstateSet[jjnewStateCnt++] = 52;
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 41)
-                        kind = 41;
-                     jjCheckNAddStates(0, 2);
-                  }
-                  else if (curChar == 43)
-                  {
-                     if (kind > 41)
-                        kind = 41;
-                     jjCheckNAdd(51);
-                  }
-                  break;
                case 3:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjCheckNAddStates(3, 8);
+                     jjCheckNAddStates(0, 5);
                   else if (curChar == 46)
                      jjCheckNAdd(30);
                   if ((0x3fe000000000000L & l) != 0L)
                   {
-                     if (kind > 53)
-                        kind = 53;
+                     if (kind > 71)
+                        kind = 71;
                      jjCheckNAddTwoStates(27, 28);
                   }
                   else if (curChar == 48)
                   {
-                     if (kind > 53)
-                        kind = 53;
-                     jjCheckNAddStates(9, 11);
-                  }
-                  break;
-               case 2:
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 42)
-                        kind = 42;
-                     jjCheckNAddTwoStates(54, 55);
-                  }
-                  else if (curChar == 43)
-                  {
-                     if (kind > 42)
-                        kind = 42;
-                  }
-                  else if (curChar == 46)
-                     jjstateSet[jjnewStateCnt++] = 52;
-                  if ((0x3ff000000000000L & l) != 0L)
-                  {
-                     if (kind > 41)
-                        kind = 41;
-                     jjCheckNAddStates(0, 2);
-                  }
-                  else if (curChar == 43)
-                  {
-                     if (kind > 41)
-                        kind = 41;
-                     jjCheckNAdd(51);
+                     if (kind > 71)
+                        kind = 71;
+                     jjCheckNAddStates(6, 8);
                   }
                   break;
                case 26:
                   if ((0x3fe000000000000L & l) == 0L)
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 71)
+                     kind = 71;
                   jjCheckNAddTwoStates(27, 28);
                   break;
                case 27:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 71)
+                     kind = 71;
                   jjCheckNAddTwoStates(27, 28);
                   break;
                case 29:
@@ -731,9 +1061,9 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 30:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 54)
-                     kind = 54;
-                  jjCheckNAddStates(12, 14);
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(9, 11);
                   break;
                case 32:
                   if ((0x280000000000L & l) != 0L)
@@ -742,13 +1072,13 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 33:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 54)
-                     kind = 54;
+                  if (kind > 72)
+                     kind = 72;
                   jjCheckNAddTwoStates(33, 34);
                   break;
                case 35:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjCheckNAddStates(3, 8);
+                     jjCheckNAddStates(0, 5);
                   break;
                case 36:
                   if ((0x3ff000000000000L & l) != 0L)
@@ -757,16 +1087,16 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 37:
                   if (curChar != 46)
                      break;
-                  if (kind > 54)
-                     kind = 54;
-                  jjCheckNAddStates(15, 17);
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(12, 14);
                   break;
                case 38:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 54)
-                     kind = 54;
-                  jjCheckNAddStates(15, 17);
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAddStates(12, 14);
                   break;
                case 39:
                   if ((0x3ff000000000000L & l) != 0L)
@@ -779,8 +1109,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 42:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 54)
-                     kind = 54;
+                  if (kind > 72)
+                     kind = 72;
                   jjCheckNAddTwoStates(42, 34);
                   break;
                case 43:
@@ -790,36 +1120,36 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 44:
                   if (curChar != 48)
                      break;
-                  if (kind > 53)
-                     kind = 53;
-                  jjCheckNAddStates(9, 11);
+                  if (kind > 71)
+                     kind = 71;
+                  jjCheckNAddStates(6, 8);
                   break;
                case 45:
                   if ((0xff000000000000L & l) == 0L)
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 71)
+                     kind = 71;
                   jjCheckNAddTwoStates(45, 28);
                   break;
                case 47:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 71)
+                     kind = 71;
                   jjCheckNAddTwoStates(47, 28);
                   break;
                case 49:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 41)
-                     kind = 41;
-                  jjCheckNAddStates(0, 2);
+                  if (kind > 59)
+                     kind = 59;
+                  jjCheckNAddStates(15, 17);
                   break;
                case 50:
                   if (curChar != 43)
                      break;
-                  if (kind > 41)
-                     kind = 41;
+                  if (kind > 59)
+                     kind = 59;
                   jjCheckNAdd(51);
                   break;
                case 51:
@@ -829,20 +1159,20 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 53:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 41)
-                     kind = 41;
+                  if (kind > 59)
+                     kind = 59;
                   jjCheckNAddStates(18, 20);
                   break;
                case 54:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 42)
-                     kind = 42;
-                  jjCheckNAddTwoStates(54, 55);
+                  if (kind > 60)
+                     kind = 60;
+                  jjAddStates(21, 22);
                   break;
                case 55:
-                  if (curChar == 43 && kind > 42)
-                     kind = 42;
+                  if (curChar == 43 && kind > 60)
+                     kind = 60;
                   break;
                default : break;
             }
@@ -855,26 +1185,12 @@ private int jjMoveNfa_0(int startState, int curPos)
          {
             switch(jjstateSet[--i])
             {
-               case 56:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 42)
-                        kind = 42;
-                     jjCheckNAddTwoStates(54, 55);
-                  }
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 41)
-                        kind = 41;
-                     jjCheckNAddStates(0, 2);
-                  }
-                  break;
                case 3:
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
-                     if (kind > 41)
-                        kind = 41;
-                     jjCheckNAddStates(21, 25);
+                     if (kind > 59)
+                        kind = 59;
+                     jjCheckNAddStates(23, 27);
                   }
                   if (curChar == 70)
                      jjstateSet[jjnewStateCnt++] = 24;
@@ -889,33 +1205,21 @@ private int jjMoveNfa_0(int startState, int curPos)
                   else if (curChar == 110)
                      jjstateSet[jjnewStateCnt++] = 2;
                   break;
-               case 2:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 42)
-                        kind = 42;
-                     jjCheckNAddTwoStates(54, 55);
-                  }
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 41)
-                        kind = 41;
-                     jjCheckNAddStates(0, 2);
-                  }
-                  if (curChar == 117)
-                     jjstateSet[jjnewStateCnt++] = 1;
-                  break;
                case 0:
-                  if (curChar == 108 && kind > 38)
-                     kind = 38;
+                  if (curChar == 108 && kind > 34)
+                     kind = 34;
                   break;
                case 1:
                   if (curChar == 108)
                      jjstateSet[jjnewStateCnt++] = 0;
                   break;
+               case 2:
+                  if (curChar == 117)
+                     jjstateSet[jjnewStateCnt++] = 1;
+                  break;
                case 4:
-                  if (curChar == 76 && kind > 38)
-                     kind = 38;
+                  if (curChar == 76 && kind > 34)
+                     kind = 34;
                   break;
                case 5:
                   if (curChar == 76)
@@ -930,8 +1234,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 6;
                   break;
                case 8:
-                  if (curChar == 101 && kind > 39)
-                     kind = 39;
+                  if (curChar == 101 && kind > 35)
+                     kind = 35;
                   break;
                case 9:
                   if (curChar == 117)
@@ -946,8 +1250,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 10;
                   break;
                case 12:
-                  if (curChar == 69 && kind > 39)
-                     kind = 39;
+                  if (curChar == 69 && kind > 35)
+                     kind = 35;
                   break;
                case 13:
                   if (curChar == 85)
@@ -962,8 +1266,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 14;
                   break;
                case 16:
-                  if (curChar == 101 && kind > 40)
-                     kind = 40;
+                  if (curChar == 101 && kind > 36)
+                     kind = 36;
                   break;
                case 17:
                   if (curChar == 115)
@@ -982,8 +1286,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 19;
                   break;
                case 21:
-                  if (curChar == 69 && kind > 40)
-                     kind = 40;
+                  if (curChar == 69 && kind > 36)
+                     kind = 36;
                   break;
                case 22:
                   if (curChar == 83)
@@ -1002,20 +1306,20 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 24;
                   break;
                case 28:
-                  if ((0x110000001100L & l) != 0L && kind > 53)
-                     kind = 53;
+                  if ((0x110000001100L & l) != 0L && kind > 71)
+                     kind = 71;
                   break;
                case 31:
                   if ((0x2000000020L & l) != 0L)
-                     jjAddStates(26, 27);
+                     jjAddStates(28, 29);
                   break;
                case 34:
-                  if ((0x5400000054L & l) != 0L && kind > 54)
-                     kind = 54;
+                  if ((0x5400000054L & l) != 0L && kind > 72)
+                     kind = 72;
                   break;
                case 40:
                   if ((0x2000000020L & l) != 0L)
-                     jjAddStates(28, 29);
+                     jjAddStates(30, 31);
                   break;
                case 46:
                   if ((0x100000001000000L & l) != 0L)
@@ -1024,37 +1328,37 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 47:
                   if ((0x7e0000007eL & l) == 0L)
                      break;
-                  if (kind > 53)
-                     kind = 53;
+                  if (kind > 71)
+                     kind = 71;
                   jjCheckNAddTwoStates(47, 28);
                   break;
                case 48:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 41)
-                     kind = 41;
-                  jjCheckNAddStates(21, 25);
+                  if (kind > 59)
+                     kind = 59;
+                  jjCheckNAddStates(23, 27);
                   break;
                case 49:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 41)
-                     kind = 41;
-                  jjCheckNAddStates(0, 2);
+                  if (kind > 59)
+                     kind = 59;
+                  jjCheckNAddStates(15, 17);
                   break;
                case 52:
                case 53:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 41)
-                     kind = 41;
+                  if (kind > 59)
+                     kind = 59;
                   jjCheckNAddStates(18, 20);
                   break;
                case 54:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 42)
-                     kind = 42;
+                  if (kind > 60)
+                     kind = 60;
                   jjCheckNAddTwoStates(54, 55);
                   break;
                default : break;
@@ -1084,12 +1388,31 @@ private int jjMoveNfa_0(int startState, int curPos)
       }
       ++curPos;
       if ((i = jjnewStateCnt) == (startsAt = 56 - (jjnewStateCnt = startsAt)))
-         return curPos;
+         break;
       try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
+      catch(IOException e) { break; }
    }
+   if (jjmatchedPos > strPos)
+      return curPos;
+
+   int toRet = Math.max(curPos, seenUpto);
+
+   if (curPos < toRet)
+      for (i = toRet - Math.min(curPos, seenUpto); i-- > 0; )
+         try { curChar = input_stream.readChar(); }
+         catch(IOException e) { throw new Error("Internal Error : Please send a bug report."); }
+
+   if (jjmatchedPos < strPos)
+   {
+      jjmatchedKind = strKind;
+      jjmatchedPos = strPos;
+   }
+   else if (jjmatchedPos == strPos && jjmatchedKind > strKind)
+      jjmatchedKind = strKind;
+
+   return toRet;
 }
-private final int jjStopStringLiteralDfa_1(int pos, long active0)
+private final int jjStopStringLiteralDfa_1(int pos, long active0, long active1)
 {
    switch (pos)
    {
@@ -1097,16 +1420,16 @@ private final int jjStopStringLiteralDfa_1(int pos, long active0)
          return -1;
    }
 }
-private final int jjStartNfa_1(int pos, long active0)
+private final int jjStartNfa_1(int pos, long active0, long active1)
 {
-   return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
+   return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0, active1), pos + 1);
 }
 private int jjMoveStringLiteralDfa0_1()
 {
    switch(curChar)
    {
       case 39:
-         return jjStopAtPos(0, 49);
+         return jjStopAtPos(0, 67);
       default :
          return jjMoveNfa_1(0, 0);
    }
@@ -1136,12 +1459,12 @@ private int jjMoveNfa_1(int startState, int curPos)
             switch(jjstateSet[--i])
             {
                case 0:
-                  if ((0xffffff7fffffffffL & l) != 0L && kind > 48)
-                     kind = 48;
+                  if ((0xffffff7fffffffffL & l) != 0L && kind > 66)
+                     kind = 66;
                   break;
                case 1:
-                  if ((0x8400000000L & l) != 0L && kind > 47)
-                     kind = 47;
+                  if ((0x8400000000L & l) != 0L && kind > 65)
+                     kind = 65;
                   break;
                case 2:
                   if ((0xf000000000000L & l) != 0L)
@@ -1150,13 +1473,13 @@ private int jjMoveNfa_1(int startState, int curPos)
                case 3:
                   if ((0xff000000000000L & l) == 0L)
                      break;
-                  if (kind > 47)
-                     kind = 47;
+                  if (kind > 65)
+                     kind = 65;
                   jjstateSet[jjnewStateCnt++] = 4;
                   break;
                case 4:
-                  if ((0xff000000000000L & l) != 0L && kind > 47)
-                     kind = 47;
+                  if ((0xff000000000000L & l) != 0L && kind > 65)
+                     kind = 65;
                   break;
                default : break;
             }
@@ -1172,19 +1495,19 @@ private int jjMoveNfa_1(int startState, int curPos)
                case 0:
                   if ((0xffffffffefffffffL & l) != 0L)
                   {
-                     if (kind > 48)
-                        kind = 48;
+                     if (kind > 66)
+                        kind = 66;
                   }
                   else if (curChar == 92)
-                     jjAddStates(30, 32);
+                     jjAddStates(32, 34);
                   break;
                case 1:
-                  if ((0x14404510000000L & l) != 0L && kind > 47)
-                     kind = 47;
+                  if ((0x14404510000000L & l) != 0L && kind > 65)
+                     kind = 65;
                   break;
                case 5:
-                  if ((0xffffffffefffffffL & l) != 0L && kind > 48)
-                     kind = 48;
+                  if ((0xffffffffefffffffL & l) != 0L && kind > 66)
+                     kind = 66;
                   break;
                default : break;
             }
@@ -1202,8 +1525,8 @@ private int jjMoveNfa_1(int startState, int curPos)
             switch(jjstateSet[--i])
             {
                case 0:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 48)
-                     kind = 48;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 66)
+                     kind = 66;
                   break;
                default : break;
             }
@@ -1219,10 +1542,10 @@ private int jjMoveNfa_1(int startState, int curPos)
       if ((i = jjnewStateCnt) == (startsAt = 6 - (jjnewStateCnt = startsAt)))
          return curPos;
       try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
+      catch(IOException e) { return curPos; }
    }
 }
-private final int jjStopStringLiteralDfa_2(int pos, long active0)
+private final int jjStopStringLiteralDfa_2(int pos, long active0, long active1)
 {
    switch (pos)
    {
@@ -1230,16 +1553,16 @@ private final int jjStopStringLiteralDfa_2(int pos, long active0)
          return -1;
    }
 }
-private final int jjStartNfa_2(int pos, long active0)
+private final int jjStartNfa_2(int pos, long active0, long active1)
 {
-   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
+   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0, active1), pos + 1);
 }
 private int jjMoveStringLiteralDfa0_2()
 {
    switch(curChar)
    {
       case 34:
-         return jjStopAtPos(0, 52);
+         return jjStopAtPos(0, 70);
       default :
          return jjMoveNfa_2(0, 0);
    }
@@ -1263,12 +1586,12 @@ private int jjMoveNfa_2(int startState, int curPos)
             switch(jjstateSet[--i])
             {
                case 0:
-                  if ((0xfffffffbffffffffL & l) != 0L && kind > 51)
-                     kind = 51;
+                  if ((0xfffffffbffffffffL & l) != 0L && kind > 69)
+                     kind = 69;
                   break;
                case 1:
-                  if ((0x8400000000L & l) != 0L && kind > 50)
-                     kind = 50;
+                  if ((0x8400000000L & l) != 0L && kind > 68)
+                     kind = 68;
                   break;
                case 2:
                   if ((0xf000000000000L & l) != 0L)
@@ -1277,13 +1600,13 @@ private int jjMoveNfa_2(int startState, int curPos)
                case 3:
                   if ((0xff000000000000L & l) == 0L)
                      break;
-                  if (kind > 50)
-                     kind = 50;
+                  if (kind > 68)
+                     kind = 68;
                   jjstateSet[jjnewStateCnt++] = 4;
                   break;
                case 4:
-                  if ((0xff000000000000L & l) != 0L && kind > 50)
-                     kind = 50;
+                  if ((0xff000000000000L & l) != 0L && kind > 68)
+                     kind = 68;
                   break;
                default : break;
             }
@@ -1299,19 +1622,19 @@ private int jjMoveNfa_2(int startState, int curPos)
                case 0:
                   if ((0xffffffffefffffffL & l) != 0L)
                   {
-                     if (kind > 51)
-                        kind = 51;
+                     if (kind > 69)
+                        kind = 69;
                   }
                   else if (curChar == 92)
-                     jjAddStates(30, 32);
+                     jjAddStates(32, 34);
                   break;
                case 1:
-                  if ((0x14404510000000L & l) != 0L && kind > 50)
-                     kind = 50;
+                  if ((0x14404510000000L & l) != 0L && kind > 68)
+                     kind = 68;
                   break;
                case 5:
-                  if ((0xffffffffefffffffL & l) != 0L && kind > 51)
-                     kind = 51;
+                  if ((0xffffffffefffffffL & l) != 0L && kind > 69)
+                     kind = 69;
                   break;
                default : break;
             }
@@ -1329,8 +1652,8 @@ private int jjMoveNfa_2(int startState, int curPos)
             switch(jjstateSet[--i])
             {
                case 0:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 51)
-                     kind = 51;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 69)
+                     kind = 69;
                   break;
                default : break;
             }
@@ -1346,13 +1669,13 @@ private int jjMoveNfa_2(int startState, int curPos)
       if ((i = jjnewStateCnt) == (startsAt = 6 - (jjnewStateCnt = startsAt)))
          return curPos;
       try { curChar = input_stream.readChar(); }
-      catch(java.io.IOException e) { return curPos; }
+      catch(IOException e) { return curPos; }
    }
 }
 static final int[] jjnextStates = {
-   49, 50, 51, 36, 37, 39, 40, 43, 34, 45, 46, 28, 30, 31, 34, 38, 
-   31, 34, 51, 53, 50, 49, 50, 51, 54, 55, 32, 33, 41, 42, 1, 2, 
-   3, 
+   36, 37, 39, 40, 43, 34, 45, 46, 28, 30, 31, 34, 38, 31, 34, 49, 
+   50, 51, 51, 53, 50, 54, 55, 49, 50, 51, 54, 55, 32, 33, 41, 42, 
+   1, 2, 3, 
 };
 private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
 {
@@ -1372,10 +1695,11 @@ public static final String[] jjstrLiteralImages = {
 "", "\157\162", "\141\156\144", "\156\157\164", "\41", "\75", "\75\75", 
 "\41\75", "\74\76", "\74\75", "\74", "\76", "\76\75", "\154\151\153\145", 
 "\154\151\153\145\111\147\156\157\162\145\103\141\163\145", "\151\156", "\50", "\51", "\142\145\164\167\145\145\156", "\54", "\174", 
-"\136", "\46", "\74\74", "\76\76", "\53", "\55", "\52", "\57", "\176", "\44", 
-"\157\142\152\72", "\144\142\72", "\145\156\165\155\72", null, null, null, null, null, null, null, 
+"\136", "\46", "\74\74", "\76\76", "\53", "\55", "\52", "\57", "\176", null, null, 
 null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
-null, null, null, null, };
+null, null, null, null, null, null, null, null, null, "\44", "\157\142\152\72", 
+"\144\142\72", "\145\156\165\155\72", null, null, null, null, null, null, null, null, null, 
+null, null, null, null, null, null, null, null, null, };
 
 /** Lexer state names. */
 public static final String[] lexStateNames = {
@@ -1387,17 +1711,18 @@ public static final String[] lexStateNames = {
 /** 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, -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, 2, -1, -1, 0, 
-   -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, 2, -1, -1, 0, -1, -1, 0, -1, -1, -1, -1, 
+   -1, -1, 
 };
 static final long[] jjtoToken = {
-   0x7207c3ffffffffL, 
+   0x1ffffffc3fffffffL, 0x1c8L, 
 };
 static final long[] jjtoSkip = {
-   0x3c00000000L, 
+   0x3c0000000L, 0x0L, 
 };
 static final long[] jjtoMore = {
-   0xde00000000000L, 
+   0x8000000000000000L, 0x37L, 
 };
 protected JavaCharStream input_stream;
 private final int[] jjrounds = new int[56];
@@ -1496,7 +1821,7 @@ public Token getNextToken()
    {
       curChar = input_stream.BeginToken();
    }
-   catch(java.io.IOException e)
+   catch(IOException e)
    {
       jjmatchedKind = 0;
       matchedToken = jjFillToken();
@@ -1511,11 +1836,6 @@ public Token getNextToken()
      switch(curLexState)
      {
        case 0:
-         try { input_stream.backup(0);
-            while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L)
-               curChar = input_stream.BeginToken();
-         }
-         catch (java.io.IOException e1) { continue EOFLoop; }
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_0();
@@ -1558,14 +1878,14 @@ public Token getNextToken()
            curChar = input_stream.readChar();
            continue;
         }
-        catch (java.io.IOException e1) { }
+        catch (IOException e1) { }
      }
      int error_line = input_stream.getEndLine();
      int error_column = input_stream.getEndColumn();
      String error_after = null;
      boolean EOFSeen = false;
      try { input_stream.readChar(); input_stream.backup(1); }
-     catch (java.io.IOException e1) {
+     catch (IOException e1) {
         EOFSeen = true;
         error_after = curPos <= 1 ? "" : input_stream.GetImage();
         if (curChar == '\n' || curChar == '\r') {
@@ -1589,32 +1909,32 @@ void MoreLexicalActions()
    jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
    switch(jjmatchedKind)
    {
-      case 45 :
+      case 63 :
          image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
            stringBuffer = new StringBuffer();
          break;
-      case 46 :
+      case 64 :
          image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
             stringBuffer = new StringBuffer();
          break;
-      case 47 :
+      case 65 :
          image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
           stringBuffer.append( escapeChar() );
          break;
-      case 48 :
+      case 66 :
          image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
           stringBuffer.append( image.charAt(image.length()-1) );
          break;
-      case 50 :
+      case 68 :
          image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
           stringBuffer.append( escapeChar() );
          break;
-      case 51 :
+      case 69 :
          image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
           stringBuffer.append( image.charAt(image.length()-1) );
@@ -1627,19 +1947,19 @@ void TokenLexicalActions(Token matchedToken)
 {
    switch(jjmatchedKind)
    {
-      case 49 :
+      case 67 :
         image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
           literalValue = stringBuffer.toString();
          break;
-      case 52 :
+      case 70 :
         image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
           literalValue = stringBuffer.toString();
          break;
-      case 53 :
+      case 71 :
         image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
           literalValue = makeInt();
          break;
-      case 54 :
+      case 72 :
         image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
           literalValue = makeFloat();
          break;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c44ccfde/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ExpressionParserTreeConstants.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ExpressionParserTreeConstants.java b/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ExpressionParserTreeConstants.java
index 2a4aefa..62fa5a3 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ExpressionParserTreeConstants.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ExpressionParserTreeConstants.java
@@ -1,4 +1,23 @@
 /* Generated By:JavaCC: Do not edit this line. ExpressionParserTreeConstants.java Version 5.0 */
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+
 package org.apache.cayenne.exp.parser;
 
 public interface ExpressionParserTreeConstants
@@ -36,9 +55,19 @@ public interface ExpressionParserTreeConstants
   public int JJTDIVIDE = 30;
   public int JJTBITWISENOT = 31;
   public int JJTNEGATE = 32;
-  public int JJTNAMEDPARAMETER = 33;
-  public int JJTOBJPATH = 34;
-  public int JJTDBPATH = 35;
+  public int JJTCONCAT = 33;
+  public int JJTSUBSTRING = 34;
+  public int JJTTRIM = 35;
+  public int JJTLOWER = 36;
+  public int JJTUPPER = 37;
+  public int JJTLENGTH = 38;
+  public int JJTLOCATE = 39;
+  public int JJTABS = 40;
+  public int JJTSQRT = 41;
+  public int JJTMOD = 42;
+  public int JJTNAMEDPARAMETER = 43;
+  public int JJTOBJPATH = 44;
+  public int JJTDBPATH = 45;
 
 
   public String[] jjtNodeName = {
@@ -75,9 +104,19 @@ public interface ExpressionParserTreeConstants
     "Divide",
     "BitwiseNot",
     "Negate",
+    "Concat",
+    "Substring",
+    "Trim",
+    "Lower",
+    "Upper",
+    "Length",
+    "Locate",
+    "Abs",
+    "Sqrt",
+    "Mod",
     "NamedParameter",
     "ObjPath",
     "DbPath",
   };
 }
-/* JavaCC - OriginalChecksum=c9c4fb7fe11d6ed9456e027ce61531d5 (do not edit this line) */
+/* JavaCC - OriginalChecksum=3658f423e33338225cd28f666e76c706 (do not edit this line) */

http://git-wip-us.apache.org/repos/asf/cayenne/blob/c44ccfde/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/JJTExpressionParserState.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/JJTExpressionParserState.java b/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/JJTExpressionParserState.java
index 349ac96..aab8be9 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/JJTExpressionParserState.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/JJTExpressionParserState.java
@@ -1,4 +1,23 @@
 /* Generated By:JavaCC: Do not edit this line. JJTExpressionParserState.java Version 5.0 */
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+
 package org.apache.cayenne.exp.parser;
 
 public class JJTExpressionParserState {