Repository: cayenne
Updated Branches:
  refs/heads/master c24bb767e -> bbb746caa


http://git-wip-us.apache.org/repos/asf/cayenne/blob/bbb746ca/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 79285ff..be7659e 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
@@ -20,10 +20,9 @@
 
 
 package org.apache.cayenne.exp.parser;
-import java.io.*;
-import java.util.*;
-import java.math.*;
-import org.apache.cayenne.exp.*;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import org.apache.cayenne.exp.Expression;
 
 /** Token Manager. */
 public class ExpressionParserTokenManager implements ExpressionParserConstants
@@ -101,9 +100,9 @@ public class ExpressionParserTokenManager implements 
ExpressionParserConstants
     }
 
   /** Debug output. */
-  public  PrintStream debugStream = System.out;
+  public  java.io.PrintStream debugStream = System.out;
   /** Set debug output. */
-  public  void setDebugStream(PrintStream ds) { debugStream = ds; }
+  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
 private int jjStopAtPos(int pos, int kind)
 {
    jjmatchedKind = kind;
@@ -115,16 +114,16 @@ private int jjMoveStringLiteralDfa0_0()
    switch(curChar)
    {
       case 9:
-         jjmatchedKind = 31;
+         jjmatchedKind = 30;
          return jjMoveNfa_0(3, 0);
       case 10:
-         jjmatchedKind = 32;
+         jjmatchedKind = 31;
          return jjMoveNfa_0(3, 0);
       case 13:
-         jjmatchedKind = 33;
+         jjmatchedKind = 32;
          return jjMoveNfa_0(3, 0);
       case 32:
-         jjmatchedKind = 30;
+         jjmatchedKind = 29;
          return jjMoveNfa_0(3, 0);
       case 33:
          jjmatchedKind = 4;
@@ -133,7 +132,7 @@ private int jjMoveStringLiteralDfa0_0()
          jjmatchedKind = 64;
          return jjMoveNfa_0(3, 0);
       case 36:
-         jjmatchedKind = 55;
+         jjmatchedKind = 54;
          return jjMoveNfa_0(3, 0);
       case 38:
          jjmatchedKind = 22;
@@ -148,7 +147,7 @@ private int jjMoveStringLiteralDfa0_0()
          jjmatchedKind = 17;
          return jjMoveNfa_0(3, 0);
       case 42:
-         jjmatchedKind = 27;
+         jjmatchedKind = 58;
          return jjMoveNfa_0(3, 0);
       case 43:
          jjmatchedKind = 25;
@@ -160,7 +159,7 @@ private int jjMoveStringLiteralDfa0_0()
          jjmatchedKind = 26;
          return jjMoveNfa_0(3, 0);
       case 47:
-         jjmatchedKind = 28;
+         jjmatchedKind = 27;
          return jjMoveNfa_0(3, 0);
       case 60:
          jjmatchedKind = 10;
@@ -172,53 +171,53 @@ private int jjMoveStringLiteralDfa0_0()
          jjmatchedKind = 11;
          return jjMoveStringLiteralDfa1_0(0x1001000L);
       case 65:
-         return jjMoveStringLiteralDfa1_0(0x2002000000000L);
+         return jjMoveStringLiteralDfa1_0(0x1001000000000L);
       case 67:
-         return jjMoveStringLiteralDfa1_0(0x70060000000000L);
+         return jjMoveStringLiteralDfa1_0(0x38030000000000L);
       case 76:
-         return jjMoveStringLiteralDfa1_0(0x1a00000000000L);
+         return jjMoveStringLiteralDfa1_0(0xd00000000000L);
       case 77:
-         return jjMoveStringLiteralDfa1_0(0x800c000000000L);
+         return jjMoveStringLiteralDfa1_0(0x4006000000000L);
       case 83:
-         return jjMoveStringLiteralDfa1_0(0x4090000000000L);
+         return jjMoveStringLiteralDfa1_0(0x2048000000000L);
       case 84:
-         return jjMoveStringLiteralDfa1_0(0x100000000000L);
+         return jjMoveStringLiteralDfa1_0(0x80000000000L);
       case 85:
-         return jjMoveStringLiteralDfa1_0(0x400000000000L);
+         return jjMoveStringLiteralDfa1_0(0x200000000000L);
       case 94:
          jjmatchedKind = 21;
          return jjMoveNfa_0(3, 0);
       case 97:
-         return jjMoveStringLiteralDfa1_0(0x2002000000004L);
+         return jjMoveStringLiteralDfa1_0(0x1001000000004L);
       case 98:
          return jjMoveStringLiteralDfa1_0(0x40000L);
       case 99:
-         return jjMoveStringLiteralDfa1_0(0x70060000000000L);
+         return jjMoveStringLiteralDfa1_0(0x38030000000000L);
       case 100:
-         return jjMoveStringLiteralDfa1_0(0x200000000000000L);
+         return jjMoveStringLiteralDfa1_0(0x100000000000000L);
       case 101:
-         return jjMoveStringLiteralDfa1_0(0x400000000000000L);
+         return jjMoveStringLiteralDfa1_0(0x200000000000000L);
       case 105:
          return jjMoveStringLiteralDfa1_0(0x8000L);
       case 108:
-         return jjMoveStringLiteralDfa1_0(0x1a00000006000L);
+         return jjMoveStringLiteralDfa1_0(0xd00000006000L);
       case 109:
-         return jjMoveStringLiteralDfa1_0(0x800c000000000L);
+         return jjMoveStringLiteralDfa1_0(0x4006000000000L);
       case 110:
          return jjMoveStringLiteralDfa1_0(0x8L);
       case 111:
-         return jjMoveStringLiteralDfa1_0(0x100000000000002L);
+         return jjMoveStringLiteralDfa1_0(0x80000000000002L);
       case 115:
-         return jjMoveStringLiteralDfa1_0(0x4090000000000L);
+         return jjMoveStringLiteralDfa1_0(0x2048000000000L);
       case 116:
-         return jjMoveStringLiteralDfa1_0(0x100000000000L);
+         return jjMoveStringLiteralDfa1_0(0x80000000000L);
       case 117:
-         return jjMoveStringLiteralDfa1_0(0x400000000000L);
+         return jjMoveStringLiteralDfa1_0(0x200000000000L);
       case 124:
          jjmatchedKind = 20;
          return jjMoveNfa_0(3, 0);
       case 126:
-         jjmatchedKind = 29;
+         jjmatchedKind = 28;
          return jjMoveNfa_0(3, 0);
       default :
          return jjMoveNfa_0(3, 0);
@@ -227,7 +226,7 @@ private int jjMoveStringLiteralDfa0_0()
 private int jjMoveStringLiteralDfa1_0(long active0)
 {
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 0);
    }
    switch(curChar)
@@ -274,57 +273,57 @@ private int jjMoveStringLiteralDfa1_0(long active0)
          }
          break;
       case 65:
-         return jjMoveStringLiteralDfa2_0(active0, 0x8000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000L);
       case 66:
-         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x1000000000000L);
       case 69:
-         return jjMoveStringLiteralDfa2_0(active0, 0x800000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L);
       case 73:
-         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000L);
       case 79:
-         return jjMoveStringLiteralDfa2_0(active0, 0x9260000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x4930000000000L);
       case 80:
-         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000L);
       case 81:
-         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000000L);
       case 82:
-         return jjMoveStringLiteralDfa2_0(active0, 0x100000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x80000000000L);
       case 85:
-         return jjMoveStringLiteralDfa2_0(active0, 0x70090000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x38048000000000L);
       case 86:
-         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x1000000000L);
       case 97:
-         return jjMoveStringLiteralDfa2_0(active0, 0x8000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000L);
       case 98:
-         return jjMoveStringLiteralDfa2_0(active0, 0x302000000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x181000000000000L);
       case 101:
-         return jjMoveStringLiteralDfa2_0(active0, 0x800000040000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x400000040000L);
       case 105:
-         return jjMoveStringLiteralDfa2_0(active0, 0x4000006000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000006000L);
       case 110:
          if ((active0 & 0x8000L) != 0L)
          {
             jjmatchedKind = 15;
             jjmatchedPos = 1;
          }
-         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000004L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000004L);
       case 111:
-         return jjMoveStringLiteralDfa2_0(active0, 0x9260000000008L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x4930000000008L);
       case 112:
-         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000L);
       case 113:
-         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000000L);
       case 114:
          if ((active0 & 0x2L) != 0L)
          {
             jjmatchedKind = 1;
             jjmatchedPos = 1;
          }
-         return jjMoveStringLiteralDfa2_0(active0, 0x100000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x80000000000L);
       case 117:
-         return jjMoveStringLiteralDfa2_0(active0, 0x70090000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x38048000000000L);
       case 118:
-         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x1000000000L);
       default :
          break;
    }
@@ -335,125 +334,125 @@ private int jjMoveStringLiteralDfa2_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 1);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 1);
    }
    switch(curChar)
    {
       case 58:
-         if ((active0 & 0x200000000000000L) != 0L)
+         if ((active0 & 0x100000000000000L) != 0L)
          {
-            jjmatchedKind = 57;
+            jjmatchedKind = 56;
             jjmatchedPos = 2;
          }
          break;
       case 66:
-         return jjMoveStringLiteralDfa3_0(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x40000000000L);
       case 67:
-         return jjMoveStringLiteralDfa3_0(active0, 0x1000000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x800000000000L);
       case 68:
-         if ((active0 & 0x8000000000000L) != 0L)
+         if ((active0 & 0x4000000000000L) != 0L)
          {
-            jjmatchedKind = 51;
+            jjmatchedKind = 50;
             jjmatchedPos = 2;
          }
          break;
       case 71:
-         if ((active0 & 0x2000000000L) != 0L)
+         if ((active0 & 0x1000000000L) != 0L)
          {
-            jjmatchedKind = 37;
+            jjmatchedKind = 36;
             jjmatchedPos = 2;
          }
          break;
       case 73:
-         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x80000000000L);
       case 77:
-         if ((active0 & 0x10000000000L) != 0L)
+         if ((active0 & 0x8000000000L) != 0L)
          {
-            jjmatchedKind = 40;
+            jjmatchedKind = 39;
             jjmatchedPos = 2;
          }
          break;
       case 78:
-         if ((active0 & 0x4000000000L) != 0L)
+         if ((active0 & 0x2000000000L) != 0L)
          {
-            jjmatchedKind = 38;
+            jjmatchedKind = 37;
             jjmatchedPos = 2;
          }
-         return jjMoveStringLiteralDfa3_0(active0, 0x840000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x420000000000L);
       case 80:
-         return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);
       case 82:
-         return jjMoveStringLiteralDfa3_0(active0, 0x74000000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x3a000000000000L);
       case 83:
-         if ((active0 & 0x2000000000000L) != 0L)
+         if ((active0 & 0x1000000000000L) != 0L)
          {
-            jjmatchedKind = 49;
+            jjmatchedKind = 48;
             jjmatchedPos = 2;
          }
          break;
       case 85:
-         return jjMoveStringLiteralDfa3_0(active0, 0x20000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x10000000000L);
       case 87:
-         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);
       case 88:
-         if ((active0 & 0x8000000000L) != 0L)
+         if ((active0 & 0x4000000000L) != 0L)
          {
-            jjmatchedKind = 39;
+            jjmatchedKind = 38;
             jjmatchedPos = 2;
          }
          break;
       case 98:
-         return jjMoveStringLiteralDfa3_0(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x40000000000L);
       case 99:
-         return jjMoveStringLiteralDfa3_0(active0, 0x1000000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x800000000000L);
       case 100:
          if ((active0 & 0x4L) != 0L)
          {
             jjmatchedKind = 2;
             jjmatchedPos = 2;
          }
-         else if ((active0 & 0x8000000000000L) != 0L)
+         else if ((active0 & 0x4000000000000L) != 0L)
          {
-            jjmatchedKind = 51;
+            jjmatchedKind = 50;
             jjmatchedPos = 2;
          }
          break;
       case 103:
-         if ((active0 & 0x2000000000L) != 0L)
+         if ((active0 & 0x1000000000L) != 0L)
          {
-            jjmatchedKind = 37;
+            jjmatchedKind = 36;
             jjmatchedPos = 2;
          }
          break;
       case 105:
-         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x80000000000L);
       case 106:
-         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x80000000000000L);
       case 107:
          return jjMoveStringLiteralDfa3_0(active0, 0x6000L);
       case 109:
-         if ((active0 & 0x10000000000L) != 0L)
+         if ((active0 & 0x8000000000L) != 0L)
          {
-            jjmatchedKind = 40;
+            jjmatchedKind = 39;
             jjmatchedPos = 2;
          }
          break;
       case 110:
-         if ((active0 & 0x4000000000L) != 0L)
+         if ((active0 & 0x2000000000L) != 0L)
          {
-            jjmatchedKind = 38;
+            jjmatchedKind = 37;
             jjmatchedPos = 2;
          }
-         return jjMoveStringLiteralDfa3_0(active0, 0x840000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x420000000000L);
       case 112:
-         return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);
       case 114:
-         return jjMoveStringLiteralDfa3_0(active0, 0x74000000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x3a000000000000L);
       case 115:
-         if ((active0 & 0x2000000000000L) != 0L)
+         if ((active0 & 0x1000000000000L) != 0L)
          {
-            jjmatchedKind = 49;
+            jjmatchedKind = 48;
             jjmatchedPos = 2;
          }
          break;
@@ -465,13 +464,13 @@ private int jjMoveStringLiteralDfa2_0(long old0, long 
active0)
          }
          return jjMoveStringLiteralDfa3_0(active0, 0x40000L);
       case 117:
-         return jjMoveStringLiteralDfa3_0(active0, 0x400020000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x200010000000000L);
       case 119:
-         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);
       case 120:
-         if ((active0 & 0x8000000000L) != 0L)
+         if ((active0 & 0x4000000000L) != 0L)
          {
-            jjmatchedKind = 39;
+            jjmatchedKind = 38;
             jjmatchedPos = 2;
          }
          break;
@@ -485,76 +484,76 @@ private int jjMoveStringLiteralDfa3_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 2);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 2);
    }
    switch(curChar)
    {
       case 58:
-         if ((active0 & 0x100000000000000L) != 0L)
+         if ((active0 & 0x80000000000000L) != 0L)
          {
-            jjmatchedKind = 56;
+            jjmatchedKind = 55;
             jjmatchedPos = 3;
          }
          break;
       case 65:
-         return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L);
       case 67:
-         return jjMoveStringLiteralDfa4_0(active0, 0x40000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x20000000000L);
       case 69:
-         return jjMoveStringLiteralDfa4_0(active0, 0x600000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x300000000000L);
       case 71:
-         return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x400000000000L);
       case 77:
-         if ((active0 & 0x100000000000L) != 0L)
+         if ((active0 & 0x80000000000L) != 0L)
          {
-            jjmatchedKind = 44;
+            jjmatchedKind = 43;
             jjmatchedPos = 3;
          }
          break;
       case 78:
-         return jjMoveStringLiteralDfa4_0(active0, 0x20000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x10000000000L);
       case 82:
-         return jjMoveStringLiteralDfa4_0(active0, 0x70000000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x38000000000000L);
       case 83:
-         return jjMoveStringLiteralDfa4_0(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x40000000000L);
       case 84:
-         if ((active0 & 0x4000000000000L) != 0L)
+         if ((active0 & 0x2000000000000L) != 0L)
          {
-            jjmatchedKind = 50;
+            jjmatchedKind = 49;
             jjmatchedPos = 3;
          }
          break;
       case 97:
-         return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L);
       case 99:
-         return jjMoveStringLiteralDfa4_0(active0, 0x40000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x20000000000L);
       case 101:
          if ((active0 & 0x2000L) != 0L)
          {
             jjmatchedKind = 13;
             jjmatchedPos = 3;
          }
-         return jjMoveStringLiteralDfa4_0(active0, 0x600000004000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x300000004000L);
       case 103:
-         return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x400000000000L);
       case 109:
-         if ((active0 & 0x100000000000L) != 0L)
+         if ((active0 & 0x80000000000L) != 0L)
          {
-            jjmatchedKind = 44;
+            jjmatchedKind = 43;
             jjmatchedPos = 3;
          }
-         return jjMoveStringLiteralDfa4_0(active0, 0x400000000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x200000000000000L);
       case 110:
-         return jjMoveStringLiteralDfa4_0(active0, 0x20000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x10000000000L);
       case 114:
-         return jjMoveStringLiteralDfa4_0(active0, 0x70000000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x38000000000000L);
       case 115:
-         return jjMoveStringLiteralDfa4_0(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x40000000000L);
       case 116:
-         if ((active0 & 0x4000000000000L) != 0L)
+         if ((active0 & 0x2000000000000L) != 0L)
          {
-            jjmatchedKind = 50;
+            jjmatchedKind = 49;
             jjmatchedPos = 3;
          }
          break;
@@ -570,66 +569,66 @@ private int jjMoveStringLiteralDfa4_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 3);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 3);
    }
    switch(curChar)
    {
       case 58:
-         if ((active0 & 0x400000000000000L) != 0L)
+         if ((active0 & 0x200000000000000L) != 0L)
          {
-            jjmatchedKind = 58;
+            jjmatchedKind = 57;
             jjmatchedPos = 4;
          }
          break;
       case 65:
-         return jjMoveStringLiteralDfa5_0(active0, 0x40000000000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x20000000000L);
       case 69:
-         return jjMoveStringLiteralDfa5_0(active0, 0x70000000000000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x38000000000000L);
       case 73:
          return jjMoveStringLiteralDfa5_0(active0, 0x4000L);
       case 82:
-         if ((active0 & 0x200000000000L) != 0L)
+         if ((active0 & 0x100000000000L) != 0L)
          {
-            jjmatchedKind = 45;
+            jjmatchedKind = 44;
             jjmatchedPos = 4;
          }
-         else if ((active0 & 0x400000000000L) != 0L)
+         else if ((active0 & 0x200000000000L) != 0L)
          {
-            jjmatchedKind = 46;
+            jjmatchedKind = 45;
             jjmatchedPos = 4;
          }
          break;
       case 84:
-         if ((active0 & 0x20000000000L) != 0L)
+         if ((active0 & 0x10000000000L) != 0L)
          {
-            jjmatchedKind = 41;
+            jjmatchedKind = 40;
             jjmatchedPos = 4;
          }
-         return jjMoveStringLiteralDfa5_0(active0, 0x1880000000000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0xc40000000000L);
       case 97:
-         return jjMoveStringLiteralDfa5_0(active0, 0x40000000000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x20000000000L);
       case 101:
-         return jjMoveStringLiteralDfa5_0(active0, 0x70000000040000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x38000000040000L);
       case 114:
-         if ((active0 & 0x200000000000L) != 0L)
+         if ((active0 & 0x100000000000L) != 0L)
          {
-            jjmatchedKind = 45;
+            jjmatchedKind = 44;
             jjmatchedPos = 4;
          }
-         else if ((active0 & 0x400000000000L) != 0L)
+         else if ((active0 & 0x200000000000L) != 0L)
          {
-            jjmatchedKind = 46;
+            jjmatchedKind = 45;
             jjmatchedPos = 4;
          }
          break;
       case 116:
-         if ((active0 & 0x20000000000L) != 0L)
+         if ((active0 & 0x10000000000L) != 0L)
          {
-            jjmatchedKind = 41;
+            jjmatchedKind = 40;
             jjmatchedPos = 4;
          }
-         return jjMoveStringLiteralDfa5_0(active0, 0x1880000000000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0xc40000000000L);
       default :
          break;
    }
@@ -640,60 +639,60 @@ private int jjMoveStringLiteralDfa5_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 4);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 4);
    }
    switch(curChar)
    {
       case 69:
-         if ((active0 & 0x1000000000000L) != 0L)
+         if ((active0 & 0x800000000000L) != 0L)
          {
-            jjmatchedKind = 48;
+            jjmatchedKind = 47;
             jjmatchedPos = 5;
          }
          break;
       case 72:
-         if ((active0 & 0x800000000000L) != 0L)
+         if ((active0 & 0x400000000000L) != 0L)
          {
-            jjmatchedKind = 47;
+            jjmatchedKind = 46;
             jjmatchedPos = 5;
          }
          break;
       case 78:
-         return jjMoveStringLiteralDfa6_0(active0, 0x70000000000000L);
+         return jjMoveStringLiteralDfa6_0(active0, 0x38000000000000L);
       case 82:
-         return jjMoveStringLiteralDfa6_0(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa6_0(active0, 0x40000000000L);
       case 84:
-         if ((active0 & 0x40000000000L) != 0L)
+         if ((active0 & 0x20000000000L) != 0L)
          {
-            jjmatchedKind = 42;
+            jjmatchedKind = 41;
             jjmatchedPos = 5;
          }
          break;
       case 101:
-         if ((active0 & 0x1000000000000L) != 0L)
+         if ((active0 & 0x800000000000L) != 0L)
          {
-            jjmatchedKind = 48;
+            jjmatchedKind = 47;
             jjmatchedPos = 5;
          }
          return jjMoveStringLiteralDfa6_0(active0, 0x40000L);
       case 103:
          return jjMoveStringLiteralDfa6_0(active0, 0x4000L);
       case 104:
-         if ((active0 & 0x800000000000L) != 0L)
+         if ((active0 & 0x400000000000L) != 0L)
          {
-            jjmatchedKind = 47;
+            jjmatchedKind = 46;
             jjmatchedPos = 5;
          }
          break;
       case 110:
-         return jjMoveStringLiteralDfa6_0(active0, 0x70000000000000L);
+         return jjMoveStringLiteralDfa6_0(active0, 0x38000000000000L);
       case 114:
-         return jjMoveStringLiteralDfa6_0(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa6_0(active0, 0x40000000000L);
       case 116:
-         if ((active0 & 0x40000000000L) != 0L)
+         if ((active0 & 0x20000000000L) != 0L)
          {
-            jjmatchedKind = 42;
+            jjmatchedKind = 41;
             jjmatchedPos = 5;
          }
          break;
@@ -707,17 +706,17 @@ private int jjMoveStringLiteralDfa6_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 5);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 5);
    }
    switch(curChar)
    {
       case 73:
-         return jjMoveStringLiteralDfa7_0(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa7_0(active0, 0x40000000000L);
       case 84:
-         return jjMoveStringLiteralDfa7_0(active0, 0x70000000000000L);
+         return jjMoveStringLiteralDfa7_0(active0, 0x38000000000000L);
       case 105:
-         return jjMoveStringLiteralDfa7_0(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa7_0(active0, 0x40000000000L);
       case 110:
          if ((active0 & 0x40000L) != 0L)
          {
@@ -726,7 +725,7 @@ private int jjMoveStringLiteralDfa6_0(long old0, long 
active0)
          }
          return jjMoveStringLiteralDfa7_0(active0, 0x4000L);
       case 116:
-         return jjMoveStringLiteralDfa7_0(active0, 0x70000000000000L);
+         return jjMoveStringLiteralDfa7_0(active0, 0x38000000000000L);
       default :
          break;
    }
@@ -737,17 +736,17 @@ private int jjMoveStringLiteralDfa7_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 6);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 6);
    }
    switch(curChar)
    {
       case 78:
-         return jjMoveStringLiteralDfa8_0(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa8_0(active0, 0x40000000000L);
       case 95:
-         return jjMoveStringLiteralDfa8_0(active0, 0x70000000000000L);
+         return jjMoveStringLiteralDfa8_0(active0, 0x38000000000000L);
       case 110:
-         return jjMoveStringLiteralDfa8_0(active0, 0x80000000000L);
+         return jjMoveStringLiteralDfa8_0(active0, 0x40000000000L);
       case 111:
          return jjMoveStringLiteralDfa8_0(active0, 0x4000L);
       default :
@@ -760,35 +759,35 @@ private int jjMoveStringLiteralDfa8_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 7);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 7);
    }
    switch(curChar)
    {
       case 68:
-         return jjMoveStringLiteralDfa9_0(active0, 0x10000000000000L);
+         return jjMoveStringLiteralDfa9_0(active0, 0x8000000000000L);
       case 71:
-         if ((active0 & 0x80000000000L) != 0L)
+         if ((active0 & 0x40000000000L) != 0L)
          {
-            jjmatchedKind = 43;
+            jjmatchedKind = 42;
             jjmatchedPos = 8;
          }
          break;
       case 84:
-         return jjMoveStringLiteralDfa9_0(active0, 0x60000000000000L);
+         return jjMoveStringLiteralDfa9_0(active0, 0x30000000000000L);
       case 100:
-         return jjMoveStringLiteralDfa9_0(active0, 0x10000000000000L);
+         return jjMoveStringLiteralDfa9_0(active0, 0x8000000000000L);
       case 103:
-         if ((active0 & 0x80000000000L) != 0L)
+         if ((active0 & 0x40000000000L) != 0L)
          {
-            jjmatchedKind = 43;
+            jjmatchedKind = 42;
             jjmatchedPos = 8;
          }
          break;
       case 114:
          return jjMoveStringLiteralDfa9_0(active0, 0x4000L);
       case 116:
-         return jjMoveStringLiteralDfa9_0(active0, 0x60000000000000L);
+         return jjMoveStringLiteralDfa9_0(active0, 0x30000000000000L);
       default :
          break;
    }
@@ -799,21 +798,21 @@ private int jjMoveStringLiteralDfa9_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 8);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 8);
    }
    switch(curChar)
    {
       case 65:
-         return jjMoveStringLiteralDfa10_0(active0, 0x10000000000000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0x8000000000000L);
       case 73:
-         return jjMoveStringLiteralDfa10_0(active0, 0x60000000000000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0x30000000000000L);
       case 97:
-         return jjMoveStringLiteralDfa10_0(active0, 0x10000000000000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0x8000000000000L);
       case 101:
          return jjMoveStringLiteralDfa10_0(active0, 0x4000L);
       case 105:
-         return jjMoveStringLiteralDfa10_0(active0, 0x60000000000000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0x30000000000000L);
       default :
          break;
    }
@@ -824,7 +823,7 @@ private int jjMoveStringLiteralDfa10_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 9);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 9);
    }
    switch(curChar)
@@ -832,13 +831,13 @@ private int jjMoveStringLiteralDfa10_0(long old0, long 
active0)
       case 67:
          return jjMoveStringLiteralDfa11_0(active0, 0x4000L);
       case 77:
-         return jjMoveStringLiteralDfa11_0(active0, 0x60000000000000L);
+         return jjMoveStringLiteralDfa11_0(active0, 0x30000000000000L);
       case 84:
-         return jjMoveStringLiteralDfa11_0(active0, 0x10000000000000L);
+         return jjMoveStringLiteralDfa11_0(active0, 0x8000000000000L);
       case 109:
-         return jjMoveStringLiteralDfa11_0(active0, 0x60000000000000L);
+         return jjMoveStringLiteralDfa11_0(active0, 0x30000000000000L);
       case 116:
-         return jjMoveStringLiteralDfa11_0(active0, 0x10000000000000L);
+         return jjMoveStringLiteralDfa11_0(active0, 0x8000000000000L);
       default :
          break;
    }
@@ -849,37 +848,37 @@ private int jjMoveStringLiteralDfa11_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 10);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 10);
    }
    switch(curChar)
    {
       case 69:
-         if ((active0 & 0x10000000000000L) != 0L)
+         if ((active0 & 0x8000000000000L) != 0L)
          {
-            jjmatchedKind = 52;
+            jjmatchedKind = 51;
             jjmatchedPos = 11;
          }
-         else if ((active0 & 0x20000000000000L) != 0L)
+         else if ((active0 & 0x10000000000000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             jjmatchedPos = 11;
          }
-         return jjMoveStringLiteralDfa12_0(active0, 0x40000000000000L);
+         return jjMoveStringLiteralDfa12_0(active0, 0x20000000000000L);
       case 97:
          return jjMoveStringLiteralDfa12_0(active0, 0x4000L);
       case 101:
-         if ((active0 & 0x10000000000000L) != 0L)
+         if ((active0 & 0x8000000000000L) != 0L)
          {
-            jjmatchedKind = 52;
+            jjmatchedKind = 51;
             jjmatchedPos = 11;
          }
-         else if ((active0 & 0x20000000000000L) != 0L)
+         else if ((active0 & 0x10000000000000L) != 0L)
          {
-            jjmatchedKind = 53;
+            jjmatchedKind = 52;
             jjmatchedPos = 11;
          }
-         return jjMoveStringLiteralDfa12_0(active0, 0x40000000000000L);
+         return jjMoveStringLiteralDfa12_0(active0, 0x20000000000000L);
       default :
          break;
    }
@@ -890,15 +889,15 @@ private int jjMoveStringLiteralDfa12_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 11);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 11);
    }
    switch(curChar)
    {
       case 83:
-         return jjMoveStringLiteralDfa13_0(active0, 0x40000000000000L);
+         return jjMoveStringLiteralDfa13_0(active0, 0x20000000000000L);
       case 115:
-         return jjMoveStringLiteralDfa13_0(active0, 0x40000000004000L);
+         return jjMoveStringLiteralDfa13_0(active0, 0x20000000004000L);
       default :
          break;
    }
@@ -909,13 +908,13 @@ private int jjMoveStringLiteralDfa13_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 12);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 12);
    }
    switch(curChar)
    {
       case 84:
-         return jjMoveStringLiteralDfa14_0(active0, 0x40000000000000L);
+         return jjMoveStringLiteralDfa14_0(active0, 0x20000000000000L);
       case 101:
          if ((active0 & 0x4000L) != 0L)
          {
@@ -924,7 +923,7 @@ private int jjMoveStringLiteralDfa13_0(long old0, long 
active0)
          }
          break;
       case 116:
-         return jjMoveStringLiteralDfa14_0(active0, 0x40000000000000L);
+         return jjMoveStringLiteralDfa14_0(active0, 0x20000000000000L);
       default :
          break;
    }
@@ -935,15 +934,15 @@ private int jjMoveStringLiteralDfa14_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 13);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 13);
    }
    switch(curChar)
    {
       case 65:
-         return jjMoveStringLiteralDfa15_0(active0, 0x40000000000000L);
+         return jjMoveStringLiteralDfa15_0(active0, 0x20000000000000L);
       case 97:
-         return jjMoveStringLiteralDfa15_0(active0, 0x40000000000000L);
+         return jjMoveStringLiteralDfa15_0(active0, 0x20000000000000L);
       default :
          break;
    }
@@ -954,15 +953,15 @@ private int jjMoveStringLiteralDfa15_0(long old0, long 
active0)
    if (((active0 &= old0)) == 0L)
       return jjMoveNfa_0(3, 14);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 14);
    }
    switch(curChar)
    {
       case 77:
-         return jjMoveStringLiteralDfa16_0(active0, 0x40000000000000L);
+         return jjMoveStringLiteralDfa16_0(active0, 0x20000000000000L);
       case 109:
-         return jjMoveStringLiteralDfa16_0(active0, 0x40000000000000L);
+         return jjMoveStringLiteralDfa16_0(active0, 0x20000000000000L);
       default :
          break;
    }
@@ -973,22 +972,22 @@ 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) {
+   catch(java.io.IOException e) {
    return jjMoveNfa_0(3, 15);
    }
    switch(curChar)
    {
       case 80:
-         if ((active0 & 0x40000000000000L) != 0L)
+         if ((active0 & 0x20000000000000L) != 0L)
          {
-            jjmatchedKind = 54;
+            jjmatchedKind = 53;
             jjmatchedPos = 16;
          }
          break;
       case 112:
-         if ((active0 & 0x40000000000000L) != 0L)
+         if ((active0 & 0x20000000000000L) != 0L)
          {
-            jjmatchedKind = 54;
+            jjmatchedKind = 53;
             jjmatchedPos = 16;
          }
          break;
@@ -1004,7 +1003,7 @@ private int jjMoveNfa_0(int startState, int curPos)
    int seenUpto;
    input_stream.backup(seenUpto = curPos + 1);
    try { curChar = input_stream.readChar(); }
-   catch(IOException e) { throw new Error("Internal Error"); }
+   catch(java.io.IOException e) { throw new Error("Internal Error"); }
    curPos = 0;
    int startsAt = 0;
    jjnewStateCnt = 56;
@@ -1206,8 +1205,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 2;
                   break;
                case 0:
-                  if (curChar == 108 && kind > 34)
-                     kind = 34;
+                  if (curChar == 108 && kind > 33)
+                     kind = 33;
                   break;
                case 1:
                   if (curChar == 108)
@@ -1218,8 +1217,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 1;
                   break;
                case 4:
-                  if (curChar == 76 && kind > 34)
-                     kind = 34;
+                  if (curChar == 76 && kind > 33)
+                     kind = 33;
                   break;
                case 5:
                   if (curChar == 76)
@@ -1234,8 +1233,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 6;
                   break;
                case 8:
-                  if (curChar == 101 && kind > 35)
-                     kind = 35;
+                  if (curChar == 101 && kind > 34)
+                     kind = 34;
                   break;
                case 9:
                   if (curChar == 117)
@@ -1250,8 +1249,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 10;
                   break;
                case 12:
-                  if (curChar == 69 && kind > 35)
-                     kind = 35;
+                  if (curChar == 69 && kind > 34)
+                     kind = 34;
                   break;
                case 13:
                   if (curChar == 85)
@@ -1266,8 +1265,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 14;
                   break;
                case 16:
-                  if (curChar == 101 && kind > 36)
-                     kind = 36;
+                  if (curChar == 101 && kind > 35)
+                     kind = 35;
                   break;
                case 17:
                   if (curChar == 115)
@@ -1286,8 +1285,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 19;
                   break;
                case 21:
-                  if (curChar == 69 && kind > 36)
-                     kind = 36;
+                  if (curChar == 69 && kind > 35)
+                     kind = 35;
                   break;
                case 22:
                   if (curChar == 83)
@@ -1390,7 +1389,7 @@ private int jjMoveNfa_0(int startState, int curPos)
       if ((i = jjnewStateCnt) == (startsAt = 56 - (jjnewStateCnt = startsAt)))
          break;
       try { curChar = input_stream.readChar(); }
-      catch(IOException e) { break; }
+      catch(java.io.IOException e) { break; }
    }
    if (jjmatchedPos > strPos)
       return curPos;
@@ -1400,7 +1399,7 @@ private int jjMoveNfa_0(int startState, int curPos)
    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."); }
+         catch(java.io.IOException e) { throw new Error("Internal Error : 
Please send a bug report."); }
 
    if (jjmatchedPos < strPos)
    {
@@ -1542,7 +1541,7 @@ private int jjMoveNfa_1(int startState, int curPos)
       if ((i = jjnewStateCnt) == (startsAt = 6 - (jjnewStateCnt = startsAt)))
          return curPos;
       try { curChar = input_stream.readChar(); }
-      catch(IOException e) { return curPos; }
+      catch(java.io.IOException e) { return curPos; }
    }
 }
 private final int jjStopStringLiteralDfa_2(int pos, long active0, long active1)
@@ -1669,7 +1668,7 @@ private int jjMoveNfa_2(int startState, int curPos)
       if ((i = jjnewStateCnt) == (startsAt = 6 - (jjnewStateCnt = startsAt)))
          return curPos;
       try { curChar = input_stream.readChar(); }
-      catch(IOException e) { return curPos; }
+      catch(java.io.IOException e) { return curPos; }
    }
 }
 static final int[] jjnextStates = {
@@ -1695,11 +1694,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", null, 
null, 
+"\136", "\46", "\74\74", "\76\76", "\53", "\55", "\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, "\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, };
+null, null, null, null, null, null, null, "\44", "\157\142\152\72", 
"\144\142\72", 
+"\145\156\165\155\72", "\52", 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 = {
@@ -1716,10 +1715,10 @@ public static final int[] jjnewLexState = {
    -1, -1, 
 };
 static final long[] jjtoToken = {
-   0x1ffffffc3fffffffL, 0x1c8L, 
+   0x1ffffffe1fffffffL, 0x1c8L, 
 };
 static final long[] jjtoSkip = {
-   0x3c0000000L, 0x0L, 
+   0x1e0000000L, 0x0L, 
 };
 static final long[] jjtoMore = {
    0x8000000000000000L, 0x37L, 
@@ -1821,7 +1820,7 @@ public Token getNextToken()
    {
       curChar = input_stream.BeginToken();
    }
-   catch(IOException e)
+   catch(java.io.IOException e)
    {
       jjmatchedKind = 0;
       matchedToken = jjFillToken();
@@ -1878,14 +1877,14 @@ public Token getNextToken()
            curChar = input_stream.readChar();
            continue;
         }
-        catch (IOException e1) { }
+        catch (java.io.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 (IOException e1) {
+     catch (java.io.IOException e1) {
         EOFSeen = true;
         error_after = curPos <= 1 ? "" : input_stream.GetImage();
         if (curChar == '\n' || curChar == '\r') {

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bbb746ca/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 62fa5a3..3de9230 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
@@ -65,9 +65,15 @@ public interface ExpressionParserTreeConstants
   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 int JJTASTERISK = 43;
+  public int JJTCOUNT = 44;
+  public int JJTAVG = 45;
+  public int JJTMAX = 46;
+  public int JJTMIN = 47;
+  public int JJTSUM = 48;
+  public int JJTNAMEDPARAMETER = 49;
+  public int JJTOBJPATH = 50;
+  public int JJTDBPATH = 51;
 
 
   public String[] jjtNodeName = {
@@ -114,9 +120,15 @@ public interface ExpressionParserTreeConstants
     "Abs",
     "Sqrt",
     "Mod",
+    "Asterisk",
+    "Count",
+    "Avg",
+    "Max",
+    "Min",
+    "Sum",
     "NamedParameter",
     "ObjPath",
     "DbPath",
   };
 }
-/* JavaCC - OriginalChecksum=3658f423e33338225cd28f666e76c706 (do not edit 
this line) */
+/* JavaCC - OriginalChecksum=0fe59a033c5f411d1c7cc0cc441fabf6 (do not edit 
this line) */

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bbb746ca/cayenne-server/src/main/jjtree/org/apache/cayenne/exp/parser/ExpressionParser.jjt
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/main/jjtree/org/apache/cayenne/exp/parser/ExpressionParser.jjt
 
b/cayenne-server/src/main/jjtree/org/apache/cayenne/exp/parser/ExpressionParser.jjt
index 16e443b..033d9eb 100644
--- 
a/cayenne-server/src/main/jjtree/org/apache/cayenne/exp/parser/ExpressionParser.jjt
+++ 
b/cayenne-server/src/main/jjtree/org/apache/cayenne/exp/parser/ExpressionParser.jjt
@@ -34,10 +34,9 @@ PARSER_BEGIN(ExpressionParser)
 
 package org.apache.cayenne.exp.parser;
 
-import java.io.*;
-import java.util.*;
-import java.math.*;
-import org.apache.cayenne.exp.*;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import org.apache.cayenne.exp.Expression;
 
 /**
   * Parser of Cayenne Expressions. 
@@ -141,6 +140,8 @@ void conditionExpression() : {}
         stringExpression()
        |
                <NULL> #Scalar(0)
+       |
+       aggregateExpression()
 }
 
 void stringParameter() : {}
@@ -239,7 +240,7 @@ void multiplySubtractExp() : {}
 {
     numericTermExt() 
     ( 
-        "*" numericTermExt() #Multiply(2)
+        <ASTERISK> numericTermExt() #Multiply(2)
     |
         "/" numericTermExt() #Divide(2)
     )*
@@ -286,7 +287,7 @@ void functionsReturningStrings() : { }
 
 void concat() #Concat : { }
 {
-       <CONCAT> "(" stringParameter() "," stringParameter() ")"
+       <CONCAT> "(" stringParameter() ( "," stringParameter() )* ")"
 }
 
 void substring() #Substring : { }
@@ -339,6 +340,41 @@ void mod() #Mod : { }
        <MOD> "(" numericExpression() "," numericExpression() ")"
 }
 
+void aggregateExpression() : { }
+{
+       (avg() | max() | min() | sum() | count())
+}
+
+void asterisk() #Asterisk : {}
+{
+    <ASTERISK>
+}
+
+void count() #Count : { }
+{
+       <COUNT> "(" ( asterisk() | numericExpression() ) ")"
+}
+
+void avg() #Avg : { }
+{
+       <AVG> "(" numericExpression() ")"
+}
+
+void max() #Max : { }
+{
+       <MAX> "(" numericExpression() ")"
+}
+
+void min() #Min : { }
+{
+       <MIN> "(" numericExpression() ")"
+}
+
+void sum() #Sum : { }
+{
+       <SUM> "(" numericExpression() ")"
+}
+
 
 TOKEN_MGR_DECLS:
 {
@@ -487,6 +523,10 @@ void pathExpression() : {
 }
 
 TOKEN : {
+    <ASTERISK: "*">
+}
+
+TOKEN : {
        <PROPERTY_PATH: <IDENTIFIER> ( "." <IDENTIFIER>) *>
 }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bbb746ca/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAggregateTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAggregateTest.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAggregateTest.java
index 87ec3bf..496e449 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAggregateTest.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAggregateTest.java
@@ -19,9 +19,13 @@
 
 package org.apache.cayenne.exp.parser;
 
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionException;
+import org.apache.cayenne.exp.ExpressionFactory;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @since 4.0
@@ -34,28 +38,82 @@ public class ASTAggregateTest {
         assertEquals("AVG", avg.getFunctionName());
     }
 
+    @Test(expected = ExpressionException.class)
+    public void testAvgEvaluate() throws Exception {
+        ASTAvg avg = new ASTAvg(null);
+        avg.evaluate(new Object());
+    }
+
+    @Test
+    public void testAvgParse() throws Exception {
+        Expression exp = ExpressionFactory.exp("AVG(artistName)");
+        assertTrue(exp instanceof ASTAvg);
+        assertEquals(1, exp.getOperandCount());
+        assertTrue(exp.getOperand(0) instanceof ASTObjPath);
+    }
+
     @Test
     public void testCountConstruct() throws Exception {
-        ASTCount count = new ASTCount(null);
+        ASTCount count = new ASTCount();
         assertEquals("COUNT", count.getFunctionName());
     }
 
     @Test
+    public void testCountExpParse() throws Exception {
+        Expression exp = ExpressionFactory.exp("COUNT(artistName)");
+        assertTrue(exp instanceof ASTCount);
+        assertEquals(1, exp.getOperandCount());
+        assertTrue(exp.getOperand(0) instanceof ASTObjPath);
+    }
+
+    @Test
+    public void testCountAsteriskParse() throws Exception {
+        Expression exp = ExpressionFactory.exp("COUNT(*)");
+        assertTrue(exp instanceof ASTCount);
+        assertEquals(1, exp.getOperandCount());
+        assertTrue(exp.getOperand(0) instanceof ASTAsterisk);
+    }
+
+    @Test
     public void testMinConstruct() throws Exception {
         ASTMin min = new ASTMin(null);
         assertEquals("MIN", min.getFunctionName());
     }
 
     @Test
+    public void testMinParse() throws Exception {
+        Expression exp = ExpressionFactory.exp("MIN(artistName)");
+        assertTrue(exp instanceof ASTMin);
+        assertEquals(1, exp.getOperandCount());
+        assertTrue(exp.getOperand(0) instanceof ASTObjPath);
+    }
+
+    @Test
     public void testMaxConstruct() throws Exception {
         ASTMax max = new ASTMax(null);
         assertEquals("MAX", max.getFunctionName());
     }
 
     @Test
+    public void testMaxParse() throws Exception {
+        Expression exp = ExpressionFactory.exp("MAX(artistName)");
+        assertTrue(exp instanceof ASTMax);
+        assertEquals(1, exp.getOperandCount());
+        assertTrue(exp.getOperand(0) instanceof ASTObjPath);
+    }
+
+    @Test
     public void testSumConstruct() throws Exception {
         ASTSum sum = new ASTSum(null);
         assertEquals("SUM", sum.getFunctionName());
     }
 
+    @Test
+    public void testSumParse() throws Exception {
+        Expression exp = ExpressionFactory.exp("SUM(artistName)");
+        assertTrue(exp instanceof ASTSum);
+        assertEquals(1, exp.getOperandCount());
+        assertTrue(exp.getOperand(0) instanceof ASTObjPath);
+    }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/bbb746ca/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTConcatTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTConcatTest.java 
b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTConcatTest.java
index 0374aaa..b468efe 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTConcatTest.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTConcatTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.cayenne.exp.parser;
 
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.junit.Test;
 
@@ -47,4 +49,18 @@ public class ASTConcatTest {
         assertEquals("name test", res);
     }
 
+    @Test
+    public void testParseConcat() throws Exception {
+        Expression exp = ExpressionFactory.exp("CONCAT(artistName, ' ', 
'test')");
+        assertEquals(ASTConcat.class, exp.getClass());
+        assertEquals(3, exp.getOperandCount());
+
+        Artist a = new Artist();
+        a.setArtistName("name");
+
+        Object res = exp.evaluate(a);
+        assertTrue(res instanceof String);
+        assertEquals("name test", res);
+    }
+
 }

Reply via email to