This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git

commit 647d58b652e1670d088fee7899d65d4484892e4b
Author: Andy Seaborne <[email protected]>
AuthorDate: Tue Apr 14 10:00:02 2026 +0100

    GH-3855: Hex \u{} sequence (SPARQL)
---
 jena-arq/Grammar/arq.jj                            |    8 +-
 jena-arq/Grammar/main.jj                           |    8 +-
 .../jena/sparql/lang/arq/javacc/ARQParser.java     |   12 +-
 .../sparql/lang/arq/javacc/ARQParserConstants.java |  115 +-
 .../lang/arq/javacc/ARQParserTokenManager.java     | 1687 +++++++++++---------
 .../arq/junit/sparql/tests/QuerySyntaxTest.java    |    2 +-
 .../testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl     |   72 +-
 .../Syntax-ARQ/syntax-delim-hex-escape-01.arq      |    2 +
 .../Syntax-ARQ/syntax-delim-hex-escape-02.arq      |    2 +
 .../Syntax-ARQ/syntax-delim-hex-escape-03.arq      |    2 +
 .../Syntax-ARQ/syntax-delim-hex-escape-04.arq      |    2 +
 .../Syntax-ARQ/syntax-delim-hex-escape-05.arq      |    2 +
 .../Syntax-ARQ/syntax-delim-hex-escape-bad-01.arq  |    2 +
 .../Syntax-ARQ/syntax-delim-hex-escape-bad-02.arq  |    2 +
 .../Syntax-ARQ/syntax-delim-hex-escape-bad-03.arq  |    2 +
 .../Syntax-ARQ/syntax-delim-hex-escape-bad-04.arq  |    2 +
 jena-arq/testing/ARQ/Syntax/syn-arq.sh             |   54 +
 17 files changed, 1109 insertions(+), 867 deletions(-)

diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index 93f6aed7b1..51398ee7af 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -2393,7 +2393,13 @@ TOKEN :
 | < #QUOTE_3D: "\"\"\"">
 | < #QUOTE_3S: "'''">
 | <ECHAR: "\\" ( "t"|"b"|"n"|"r"|"f"|"\\"|"\""|"'") >
-| < #UCHAR: <UCHAR4> | <UCHAR8> >
+| < #UCHAR: <UCHAR4> | <UCHAR8> | <UCHAR_DELIM> >
+| < #UCHAR_DELIM: "\\" "u" <LBRACE>
+                          // W3C EBNF does not have a "{1,6}" syntax.
+                          // <HEX> (<HEX> (<HEX> (<HEX> (<HEX> (<HEX>)? )? )? 
)? )?
+                          // Or be lax here and check the length in escape 
processing.
+                          (<HEX>)+
+                          <RBRACE> >
 | < #UCHAR4: "\\" "u" <HEX> <HEX> <HEX> <HEX> >
 | < #UCHAR8: "\\" "U" <HEX> <HEX> <HEX> <HEX> <HEX> <HEX> <HEX> <HEX> >
 | < STRING_LITERAL1:
diff --git a/jena-arq/Grammar/main.jj b/jena-arq/Grammar/main.jj
index 9f016743ce..05eadc481c 100644
--- a/jena-arq/Grammar/main.jj
+++ b/jena-arq/Grammar/main.jj
@@ -2965,7 +2965,13 @@ TOKEN :
 | < #UCHAR:      <UCHAR8> >
 #endif
 #ifdef ARQ
-| < #UCHAR:      <UCHAR4> | <UCHAR8> >
+| < #UCHAR:      <UCHAR4> | <UCHAR8> | <UCHAR_DELIM> >
+| < #UCHAR_DELIM: "\\" "u" <LBRACE>
+                          // W3C EBNF does not have a "{1,6}" syntax.
+                          // <HEX> (<HEX> (<HEX> (<HEX> (<HEX> (<HEX>)? )? )? 
)? )?
+                          // Or be lax here and check the length in escape 
processing.
+                          (<HEX>)+
+                          <RBRACE> >
 #endif
 | < #UCHAR4:     "\\" "u" <HEX> <HEX> <HEX> <HEX> >
 | < #UCHAR8:     "\\" "U" <HEX> <HEX> <HEX> <HEX> <HEX> <HEX> <HEX> <HEX> >
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParser.java 
b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParser.java
index da074ebe27..890516a207 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParser.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParser.java
@@ -8368,7 +8368,7 @@ lex = unescapeStr(lex, t.beginLine, t.beginColumn) ;
  {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(195)) {
+    if (jj_scan_token(196)) {
     jj_scanpos = xsp;
     if (jj_3R_ExpressionList_1022_5_156()) return true;
     }
@@ -9344,13 +9344,13 @@ lex = unescapeStr(lex, t.beginLine, t.beginColumn) ;
           jj_la1_4 = new int[] 
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x7dffff,0x7dffff,0x7dffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x1dffff,0x0,0x1dffff,0x1dffff,0x1dffff,0x0,0x1dffff,0x1dffff,0x0,0x1dffff,0x1dffff,0x0,0x0,0x0,0x0,0x0,0xff000000,0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x3000000,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x600000,0x600000,0x600000,0x0,0x0,0x600000,0x0,0x600000,0x0,0x0,0x600000,0x0,0x0,0x600000,0x600000,0x
 [...]
        }
        private static void jj_la1_init_5() {
-          jj_la1_5 = new int[] 
{0x0,0x0,0x0,0x0,0x60000000,0x0,0x0,0x0,0xe07ee000,0x0,0xe07ee000,0xe07ee000,0xe07ee000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe07ee000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x427,0x427,0x10,0x40,0x10,0x10,0x10,0x10,0x10,0x10,0x400,0x0,0x0,0x800,0x0,0x0,0x100,0x300,0xe07ee000,0x0,0x0,0xe07ee000,0xe07ee000,0xe07ee000,0x0,0x0,0xe07ee000,0x0,0xe07ee000,0x0,0x0,0xe07ee000,0x0,0x0,0xe07ee000,0xe07ee000,0x0,0x0,0x10,
 [...]
+          jj_la1_5 = new int[] 
{0x0,0x0,0x0,0x0,0xc0000000,0x0,0x0,0x0,0xc07ee000,0x0,0xc07ee000,0xc07ee000,0xc07ee000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc07ee000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x427,0x427,0x10,0x40,0x10,0x10,0x10,0x10,0x10,0x10,0x400,0x0,0x0,0x800,0x0,0x0,0x100,0x300,0xc07ee000,0x0,0x0,0xc07ee000,0xc07ee000,0xc07ee000,0x0,0x0,0xc07ee000,0x0,0xc07ee000,0x0,0x0,0xc07ee000,0x0,0x0,0xc07ee000,0xc07ee000,0x0,0x0,0x10,
 [...]
        }
        private static void jj_la1_init_6() {
-          jj_la1_6 = new int[] 
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x3,0x80000003,0x0,0x0,0x10,0x0,0x80000000,0x0,0x10,0x0,0x0,0x400,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x2,0x2,0x2,0x0,0x2,0x2,0x0,0x2,0x2,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x14014b,0x0,0x800,0x14014b,0x14014b,0x14014b,0x10,0x800,0x14014b,0x0,0x14014b,0x800,0x0,0x14014b,0x10,0x800,0x14014b,0x14014b,0x800,0x10,0x0,0xa,0x40001,0x0,0xa,0xa,0x40001,0xa,0x40001,0x10
 [...]
+          jj_la1_6 = new int[] 
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x7,0x7,0x7,0x0,0x0,0x20,0x0,0x0,0x0,0x20,0x0,0x0,0x800,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x4,0x4,0x4,0x0,0x4,0x4,0x0,0x4,0x4,0x0,0x0,0x0,0x0,0x400,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x280297,0x0,0x1000,0x280297,0x280297,0x280297,0x20,0x1000,0x280297,0x0,0x280297,0x1000,0x0,0x280297,0x20,0x1000,0x280297,0x280297,0x1000,0x20,0x0,0x14,0x80003,0x0,0x14,0x14,0x80003,0x14,0x80003,0x200,0x2
 [...]
        }
        private static void jj_la1_init_7() {
-          jj_la1_7 = new int[] 
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x0,0x20,0x2
 [...]
+          jj_la1_7 = new int[] 
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x0,0x40,0x4
 [...]
        }
   final private JJCalls[] jj_2_rtns = new JJCalls[5];
   private boolean jj_rescan = false;
@@ -9563,7 +9563,7 @@ lex = unescapeStr(lex, t.beginLine, t.beginColumn) ;
   /** Generate ParseException. */
   public ParseException generateParseException() {
         jj_expentries.clear();
-        boolean[] la1tokens = new boolean[243];
+        boolean[] la1tokens = new boolean[244];
         if (jj_kind >= 0) {
           la1tokens[jj_kind] = true;
           jj_kind = -1;
@@ -9598,7 +9598,7 @@ lex = unescapeStr(lex, t.beginLine, t.beginColumn) ;
                 }
           }
         }
-        for (int i = 0; i < 243; i++) {
+        for (int i = 0; i < 244; i++) {
           if (la1tokens[i]) {
                 jj_expentry = new int[1];
                 jj_expentry[0] = i;
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParserConstants.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParserConstants.java
index f6ab53e834..43ef808215 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParserConstants.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParserConstants.java
@@ -393,117 +393,119 @@ public interface ARQParserConstants {
   /** RegularExpression Id. */
   int UCHAR = 186;
   /** RegularExpression Id. */
-  int UCHAR4 = 187;
+  int UCHAR_DELIM = 187;
   /** RegularExpression Id. */
-  int UCHAR8 = 188;
+  int UCHAR4 = 188;
   /** RegularExpression Id. */
-  int STRING_LITERAL1 = 189;
+  int UCHAR8 = 189;
   /** RegularExpression Id. */
-  int STRING_LITERAL2 = 190;
+  int STRING_LITERAL1 = 190;
   /** RegularExpression Id. */
-  int STRING_LITERAL_LONG1 = 191;
+  int STRING_LITERAL2 = 191;
   /** RegularExpression Id. */
-  int STRING_LITERAL_LONG2 = 192;
+  int STRING_LITERAL_LONG1 = 192;
   /** RegularExpression Id. */
-  int LPAREN = 193;
+  int STRING_LITERAL_LONG2 = 193;
   /** RegularExpression Id. */
-  int RPAREN = 194;
+  int LPAREN = 194;
   /** RegularExpression Id. */
-  int NIL = 195;
+  int RPAREN = 195;
   /** RegularExpression Id. */
-  int LBRACE = 196;
+  int NIL = 196;
   /** RegularExpression Id. */
-  int RBRACE = 197;
+  int LBRACE = 197;
   /** RegularExpression Id. */
-  int LBRACKET = 198;
+  int RBRACE = 198;
   /** RegularExpression Id. */
-  int RBRACKET = 199;
+  int LBRACKET = 199;
   /** RegularExpression Id. */
-  int ANON = 200;
+  int RBRACKET = 200;
   /** RegularExpression Id. */
-  int SEMICOLON = 201;
+  int ANON = 201;
   /** RegularExpression Id. */
-  int COMMA = 202;
+  int SEMICOLON = 202;
   /** RegularExpression Id. */
-  int DOT = 203;
+  int COMMA = 203;
   /** RegularExpression Id. */
-  int EQ = 204;
+  int DOT = 204;
   /** RegularExpression Id. */
-  int NE = 205;
+  int EQ = 205;
   /** RegularExpression Id. */
-  int GT = 206;
+  int NE = 206;
   /** RegularExpression Id. */
-  int LT = 207;
+  int GT = 207;
   /** RegularExpression Id. */
-  int LE = 208;
+  int LT = 208;
   /** RegularExpression Id. */
-  int GE = 209;
+  int LE = 209;
   /** RegularExpression Id. */
-  int L_TRIPLE = 210;
+  int GE = 210;
   /** RegularExpression Id. */
-  int R_TRIPLE = 211;
+  int L_TRIPLE = 211;
   /** RegularExpression Id. */
-  int LT2 = 212;
+  int R_TRIPLE = 212;
   /** RegularExpression Id. */
-  int GT2 = 213;
+  int LT2 = 213;
   /** RegularExpression Id. */
-  int L_ANN = 214;
+  int GT2 = 214;
   /** RegularExpression Id. */
-  int R_ANN = 215;
+  int L_ANN = 215;
   /** RegularExpression Id. */
-  int TILDE = 216;
+  int R_ANN = 216;
   /** RegularExpression Id. */
-  int BANG = 217;
+  int TILDE = 217;
   /** RegularExpression Id. */
-  int COLON = 218;
+  int BANG = 218;
   /** RegularExpression Id. */
-  int SC_OR = 219;
+  int COLON = 219;
   /** RegularExpression Id. */
-  int SC_AND = 220;
+  int SC_OR = 220;
   /** RegularExpression Id. */
-  int PLUS = 221;
+  int SC_AND = 221;
   /** RegularExpression Id. */
-  int MINUS = 222;
+  int PLUS = 222;
   /** RegularExpression Id. */
-  int STAR = 223;
+  int MINUS = 223;
   /** RegularExpression Id. */
-  int SLASH = 224;
+  int STAR = 224;
   /** RegularExpression Id. */
-  int DATATYPE = 225;
+  int SLASH = 225;
   /** RegularExpression Id. */
-  int AT = 226;
+  int DATATYPE = 226;
   /** RegularExpression Id. */
-  int ASSIGN = 227;
+  int AT = 227;
   /** RegularExpression Id. */
-  int VBAR = 228;
+  int ASSIGN = 228;
   /** RegularExpression Id. */
-  int CARAT = 229;
+  int VBAR = 229;
   /** RegularExpression Id. */
-  int QMARK = 230;
+  int CARAT = 230;
   /** RegularExpression Id. */
-  int SURROGATE_PAIR = 231;
+  int QMARK = 231;
   /** RegularExpression Id. */
-  int PN_CHARS_BASE = 232;
+  int SURROGATE_PAIR = 232;
   /** RegularExpression Id. */
-  int PN_CHARS_U = 233;
+  int PN_CHARS_BASE = 233;
   /** RegularExpression Id. */
-  int PN_CHARS = 234;
+  int PN_CHARS_U = 234;
   /** RegularExpression Id. */
-  int PN_PREFIX = 235;
+  int PN_CHARS = 235;
   /** RegularExpression Id. */
-  int PN_LOCAL = 236;
+  int PN_PREFIX = 236;
   /** RegularExpression Id. */
-  int VARNAME = 237;
+  int PN_LOCAL = 237;
   /** RegularExpression Id. */
-  int PN_LOCAL_ESC = 238;
+  int VARNAME = 238;
   /** RegularExpression Id. */
-  int PLX = 239;
+  int PN_LOCAL_ESC = 239;
   /** RegularExpression Id. */
-  int HEX = 240;
+  int PLX = 240;
   /** RegularExpression Id. */
-  int PERCENT = 241;
+  int HEX = 241;
   /** RegularExpression Id. */
-  int UNKNOWN = 242;
+  int PERCENT = 242;
+  /** RegularExpression Id. */
+  int UNKNOWN = 243;
 
   /** Lexical state. */
   int DEFAULT = 0;
@@ -697,6 +699,7 @@ public interface ARQParserConstants {
     "\"\\\'\\\'\\\'\"",
     "<ECHAR>",
     "<UCHAR>",
+    "<UCHAR_DELIM>",
     "<UCHAR4>",
     "<UCHAR8>",
     "<STRING_LITERAL1>",
diff --git 
a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParserTokenManager.java
 
b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParserTokenManager.java
index 39cffb21c9..6b40e6e0d3 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParserTokenManager.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/javacc/ARQParserTokenManager.java
@@ -68,54 +68,54 @@ private int jjMoveStringLiteralDfa0_0(){
          jjmatchedKind = 1;
          return jjMoveNfa_0(0, 0);
       case 33:
-         jjmatchedKind = 217;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x2000L);
+         jjmatchedKind = 218;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x4000L);
       case 38:
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x10000000L);
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x20000000L);
       case 40:
-         jjmatchedKind = 193;
+         jjmatchedKind = 194;
          return jjMoveNfa_0(0, 0);
       case 41:
-         jjmatchedKind = 194;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x80000L);
+         jjmatchedKind = 195;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x100000L);
       case 42:
-         jjmatchedKind = 223;
+         jjmatchedKind = 224;
          return jjMoveNfa_0(0, 0);
       case 43:
-         jjmatchedKind = 221;
+         jjmatchedKind = 222;
          return jjMoveNfa_0(0, 0);
       case 44:
-         jjmatchedKind = 202;
+         jjmatchedKind = 203;
          return jjMoveNfa_0(0, 0);
       case 45:
-         jjmatchedKind = 222;
+         jjmatchedKind = 223;
          return jjMoveNfa_0(0, 0);
       case 46:
-         jjmatchedKind = 203;
+         jjmatchedKind = 204;
          return jjMoveNfa_0(0, 0);
       case 47:
-         jjmatchedKind = 224;
+         jjmatchedKind = 225;
          return jjMoveNfa_0(0, 0);
       case 58:
-         jjmatchedKind = 218;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x800000000L);
+         jjmatchedKind = 219;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x1000000000L);
       case 59:
-         jjmatchedKind = 201;
+         jjmatchedKind = 202;
          return jjMoveNfa_0(0, 0);
       case 60:
-         jjmatchedKind = 207;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x150000L);
+         jjmatchedKind = 208;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x2a0000L);
       case 61:
-         jjmatchedKind = 204;
+         jjmatchedKind = 205;
          return jjMoveNfa_0(0, 0);
       case 62:
-         jjmatchedKind = 206;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x220000L);
+         jjmatchedKind = 207;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x440000L);
       case 63:
-         jjmatchedKind = 230;
+         jjmatchedKind = 231;
          return jjMoveNfa_0(0, 0);
       case 64:
-         jjmatchedKind = 226;
+         jjmatchedKind = 227;
          return jjMoveNfa_0(0, 0);
       case 65:
          return jjMoveStringLiteralDfa1_0(0x1008021020000000L, 
0x2000000000021L, 0x20100000800L, 0x0L);
@@ -162,14 +162,14 @@ private int jjMoveStringLiteralDfa0_0(){
       case 89:
          return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x8L, 0x0L);
       case 91:
-         jjmatchedKind = 198;
+         jjmatchedKind = 199;
          return jjMoveNfa_0(0, 0);
       case 93:
-         jjmatchedKind = 199;
+         jjmatchedKind = 200;
          return jjMoveNfa_0(0, 0);
       case 94:
-         jjmatchedKind = 229;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x200000000L);
+         jjmatchedKind = 230;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x400000000L);
       case 97:
          jjmatchedKind = 19;
          return jjMoveStringLiteralDfa1_0(0x1008021020000000L, 
0x2000000000021L, 0x20100000800L, 0x0L);
@@ -216,16 +216,16 @@ private int jjMoveStringLiteralDfa0_0(){
       case 121:
          return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x8L, 0x0L);
       case 123:
-         jjmatchedKind = 196;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x400000L);
+         jjmatchedKind = 197;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x800000L);
       case 124:
-         jjmatchedKind = 228;
-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x8800000L);
+         jjmatchedKind = 229;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x11000000L);
       case 125:
-         jjmatchedKind = 197;
+         jjmatchedKind = 198;
          return jjMoveNfa_0(0, 0);
       case 126:
-         jjmatchedKind = 216;
+         jjmatchedKind = 217;
          return jjMoveNfa_0(0, 0);
       case 65279:
          jjmatchedKind = 9;
@@ -242,48 +242,48 @@ private int jjMoveStringLiteralDfa1_0(long active0, long 
active1, long active2,
    switch(curChar)
    {
       case 38:
-         if ((active3 & 0x10000000L) != 0L)
+         if ((active3 & 0x20000000L) != 0L)
          {
-            jjmatchedKind = 220;
+            jjmatchedKind = 221;
             jjmatchedPos = 1;
          }
          break;
       case 60:
-         if ((active3 & 0x100000L) != 0L)
+         if ((active3 & 0x200000L) != 0L)
          {
-            jjmatchedKind = 212;
+            jjmatchedKind = 213;
             jjmatchedPos = 1;
          }
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 
0L, active3, 0x40000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 
0L, active3, 0x80000L);
       case 61:
-         if ((active3 & 0x2000L) != 0L)
+         if ((active3 & 0x4000L) != 0L)
          {
-            jjmatchedKind = 205;
+            jjmatchedKind = 206;
             jjmatchedPos = 1;
          }
-         else if ((active3 & 0x10000L) != 0L)
+         else if ((active3 & 0x20000L) != 0L)
          {
-            jjmatchedKind = 208;
+            jjmatchedKind = 209;
             jjmatchedPos = 1;
          }
-         else if ((active3 & 0x20000L) != 0L)
+         else if ((active3 & 0x40000L) != 0L)
          {
-            jjmatchedKind = 209;
+            jjmatchedKind = 210;
             jjmatchedPos = 1;
          }
-         else if ((active3 & 0x800000000L) != 0L)
+         else if ((active3 & 0x1000000000L) != 0L)
          {
-            jjmatchedKind = 227;
+            jjmatchedKind = 228;
             jjmatchedPos = 1;
          }
          break;
       case 62:
-         if ((active3 & 0x200000L) != 0L)
+         if ((active3 & 0x400000L) != 0L)
          {
-            jjmatchedKind = 213;
+            jjmatchedKind = 214;
             jjmatchedPos = 1;
          }
-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 
0L, active3, 0x80000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 
0L, active3, 0x100000L);
       case 65:
          return jjMoveStringLiteralDfa2_0(active0, 0x4002004400100000L, 
active1, 0x1d83c0c00b808L, active2, 0xc00020L, active3, 0L);
       case 66:
@@ -357,9 +357,9 @@ private int jjMoveStringLiteralDfa1_0(long active0, long 
active1, long active2,
          }
          break;
       case 94:
-         if ((active3 & 0x200000000L) != 0L)
+         if ((active3 & 0x400000000L) != 0L)
          {
-            jjmatchedKind = 225;
+            jjmatchedKind = 226;
             jjmatchedPos = 1;
          }
          break;
@@ -436,21 +436,21 @@ private int jjMoveStringLiteralDfa1_0(long active0, long 
active1, long active2,
          }
          break;
       case 124:
-         if ((active3 & 0x400000L) != 0L)
+         if ((active3 & 0x800000L) != 0L)
          {
-            jjmatchedKind = 214;
+            jjmatchedKind = 215;
             jjmatchedPos = 1;
          }
-         else if ((active3 & 0x8000000L) != 0L)
+         else if ((active3 & 0x10000000L) != 0L)
          {
-            jjmatchedKind = 219;
+            jjmatchedKind = 220;
             jjmatchedPos = 1;
          }
          break;
       case 125:
-         if ((active3 & 0x800000L) != 0L)
+         if ((active3 & 0x1000000L) != 0L)
          {
-            jjmatchedKind = 215;
+            jjmatchedKind = 216;
             jjmatchedPos = 1;
          }
          break;
@@ -469,9 +469,9 @@ private int jjMoveStringLiteralDfa2_0(long old0, long 
active0, long old1, long a
    switch(curChar)
    {
       case 40:
-         if ((active3 & 0x40000L) != 0L)
+         if ((active3 & 0x80000L) != 0L)
          {
-            jjmatchedKind = 210;
+            jjmatchedKind = 211;
             jjmatchedPos = 2;
          }
          break;
@@ -483,9 +483,9 @@ private int jjMoveStringLiteralDfa2_0(long old0, long 
active0, long old1, long a
          }
          break;
       case 62:
-         if ((active3 & 0x80000L) != 0L)
+         if ((active3 & 0x100000L) != 0L)
          {
-            jjmatchedKind = 211;
+            jjmatchedKind = 212;
             jjmatchedPos = 2;
          }
          break;
@@ -2665,7 +2665,7 @@ private int jjMoveNfa_0(int startState, int curPos)
    catch(java.io.IOException e) { throw new Error("Internal Error"); }
    curPos = 0;
    int startsAt = 0;
-   jjnewStateCnt = 278;
+   jjnewStateCnt = 298;
    int i = 1;
    jjstateSet[0] = startState;
    int kind = 0x7fffffff;
@@ -2692,7 +2692,7 @@ private int jjMoveNfa_0(int startState, int curPos)
                   else if (curChar == 43)
                      { jjCheckNAddStates(11, 15); }
                   else if (curChar == 46)
-                     { jjCheckNAddTwoStates(243, 251); }
+                     { jjCheckNAddTwoStates(263, 271); }
                   else if (curChar == 58)
                   {
                      if (kind > 11)
@@ -2702,9 +2702,9 @@ private int jjMoveNfa_0(int startState, int curPos)
                   else if (curChar == 40)
                      { jjCheckNAddStates(20, 22); }
                   else if (curChar == 34)
-                     jjstateSet[jjnewStateCnt++] = 151;
+                     jjstateSet[jjnewStateCnt++] = 171;
                   else if (curChar == 39)
-                     jjstateSet[jjnewStateCnt++] = 127;
+                     jjstateSet[jjnewStateCnt++] = 143;
                   else if (curChar == 36)
                      { jjAddStates(23, 24); }
                   else if (curChar == 60)
@@ -2753,21 +2753,9 @@ private int jjMoveNfa_0(int startState, int curPos)
                   if (curChar == 62 && kind > 10)
                      kind = 10;
                   break;
-               case 10:
-                  if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 11;
-                  break;
                case 11:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 12;
-                  break;
-               case 12:
-                  if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 13;
-                  break;
-               case 13:
-                  if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 14;
+                     { jjAddStates(39, 40); }
                   break;
                case 14:
                   if ((0x3ff000000000000L & l) != 0L)
@@ -2778,758 +2766,790 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 16;
                   break;
                case 16:
-               case 21:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAdd(17); }
+                     jjstateSet[jjnewStateCnt++] = 17;
                   break;
                case 17:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddStates(25, 27); }
+                     jjstateSet[jjnewStateCnt++] = 18;
+                  break;
+               case 18:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 19;
                   break;
                case 19:
                   if ((0x3ff000000000000L & l) != 0L)
                      jjstateSet[jjnewStateCnt++] = 20;
                   break;
                case 20:
+               case 25:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 21;
+                     { jjCheckNAdd(21); }
                   break;
-               case 22:
-                  if (curChar == 58)
-                     { jjAddStates(39, 40); }
+               case 21:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAddStates(25, 27); }
                   break;
                case 23:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 24;
+                  break;
+               case 24:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 25;
+                  break;
+               case 26:
+                  if (curChar == 58)
+                     { jjAddStates(41, 42); }
+                  break;
+               case 27:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 13)
                      kind = 13;
-                  { jjCheckNAddStates(41, 43); }
+                  { jjCheckNAddStates(43, 45); }
                   break;
-               case 24:
+               case 28:
                   if ((0x3ff600000000000L & l) != 0L)
-                     { jjCheckNAddStates(41, 43); }
+                     { jjCheckNAddStates(43, 45); }
                   break;
-               case 25:
+               case 29:
                   if ((0x3ff200000000000L & l) != 0L && kind > 13)
                      kind = 13;
                   break;
-               case 32:
+               case 36:
                   if (curChar == 63)
                      { jjAddStates(31, 32); }
                   break;
-               case 33:
-               case 34:
+               case 37:
+               case 38:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 14)
                      kind = 14;
-                  { jjCheckNAddTwoStates(34, 35); }
+                  { jjCheckNAddTwoStates(38, 39); }
                   break;
-               case 38:
+               case 42:
                   if (curChar == 36)
                      { jjAddStates(23, 24); }
                   break;
-               case 39:
-               case 40:
+               case 43:
+               case 44:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 15)
                      kind = 15;
-                  { jjCheckNAddTwoStates(40, 41); }
+                  { jjCheckNAddTwoStates(44, 45); }
                   break;
-               case 46:
+               case 50:
                   if (curChar == 45)
-                     { jjCheckNAdd(47); }
+                     { jjCheckNAdd(51); }
                   break;
-               case 47:
+               case 51:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 16)
                      kind = 16;
-                  { jjCheckNAddStates(44, 46); }
+                  { jjCheckNAddStates(46, 48); }
                   break;
-               case 48:
+               case 52:
                   if (curChar != 45)
                      break;
                   if (kind > 16)
                      kind = 16;
-                  jjstateSet[jjnewStateCnt++] = 49;
+                  jjstateSet[jjnewStateCnt++] = 53;
                   break;
-               case 50:
+               case 54:
                   if (curChar == 45)
-                     jjstateSet[jjnewStateCnt++] = 48;
+                     jjstateSet[jjnewStateCnt++] = 52;
                   break;
-               case 52:
+               case 56:
                   if (curChar == 35)
-                     { jjCheckNAddStates(47, 52); }
+                     { jjCheckNAddStates(49, 54); }
                   break;
-               case 53:
+               case 57:
                   if ((0xffffffffffffdbffL & l) != 0L)
-                     { jjCheckNAddStates(47, 52); }
+                     { jjCheckNAddStates(49, 54); }
                   break;
-               case 54:
+               case 58:
                   if ((0x2400L & l) != 0L)
-                     { jjCheckNAddStates(53, 55); }
+                     { jjCheckNAddStates(55, 57); }
                   break;
-               case 55:
+               case 59:
                   if ((0x100003600L & l) != 0L)
-                     { jjCheckNAddStates(53, 55); }
+                     { jjCheckNAddStates(55, 57); }
                   break;
-               case 60:
+               case 64:
                   if (curChar == 10)
-                     { jjCheckNAddStates(53, 55); }
+                     { jjCheckNAddStates(55, 57); }
                   break;
-               case 61:
+               case 65:
                   if (curChar == 13)
-                     jjstateSet[jjnewStateCnt++] = 60;
+                     jjstateSet[jjnewStateCnt++] = 64;
                   break;
-               case 68:
+               case 72:
                   if ((0x8400000000L & l) != 0L && kind > 185)
                      kind = 185;
                   break;
-               case 69:
+               case 73:
                   if (curChar == 39)
                      { jjCheckNAddStates(36, 38); }
                   break;
-               case 70:
+               case 74:
                   if ((0xffffff7fffffdbffL & l) != 0L)
                      { jjCheckNAddStates(36, 38); }
                   break;
-               case 71:
-                  if (curChar == 39 && kind > 189)
-                     kind = 189;
+               case 75:
+                  if (curChar == 39 && kind > 190)
+                     kind = 190;
                   break;
-               case 73:
+               case 77:
                   if ((0x8400000000L & l) != 0L)
                      { jjCheckNAddStates(36, 38); }
                   break;
-               case 75:
+               case 80:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 76;
+                     { jjAddStates(58, 59); }
                   break;
-               case 76:
+               case 83:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 77;
+                     jjstateSet[jjnewStateCnt++] = 84;
                   break;
-               case 77:
+               case 84:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 78;
+                     jjstateSet[jjnewStateCnt++] = 85;
                   break;
-               case 78:
+               case 85:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 79;
+                     jjstateSet[jjnewStateCnt++] = 86;
                   break;
-               case 79:
+               case 86:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 80;
+                     jjstateSet[jjnewStateCnt++] = 87;
                   break;
-               case 80:
+               case 87:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 81;
+                     jjstateSet[jjnewStateCnt++] = 88;
                   break;
-               case 81:
-               case 86:
+               case 88:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAdd(82); }
+                     jjstateSet[jjnewStateCnt++] = 89;
                   break;
-               case 82:
+               case 89:
+               case 94:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAdd(90); }
+                  break;
+               case 90:
                   if ((0x3ff000000000000L & l) != 0L)
                      { jjCheckNAddStates(36, 38); }
                   break;
-               case 84:
+               case 92:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 85;
+                     jjstateSet[jjnewStateCnt++] = 93;
                   break;
-               case 85:
+               case 93:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 86;
+                     jjstateSet[jjnewStateCnt++] = 94;
                   break;
-               case 87:
+               case 95:
                   if (curChar == 34)
                      { jjCheckNAddStates(33, 35); }
                   break;
-               case 88:
+               case 96:
                   if ((0xfffffffbffffdbffL & l) != 0L)
                      { jjCheckNAddStates(33, 35); }
                   break;
-               case 89:
-                  if (curChar == 34 && kind > 190)
-                     kind = 190;
+               case 97:
+                  if (curChar == 34 && kind > 191)
+                     kind = 191;
                   break;
-               case 91:
+               case 99:
                   if ((0x8400000000L & l) != 0L)
                      { jjCheckNAddStates(33, 35); }
                   break;
-               case 93:
+               case 102:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 94;
+                     { jjAddStates(60, 61); }
                   break;
-               case 94:
+               case 105:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 95;
+                     jjstateSet[jjnewStateCnt++] = 106;
                   break;
-               case 95:
+               case 106:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 96;
+                     jjstateSet[jjnewStateCnt++] = 107;
                   break;
-               case 96:
+               case 107:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 97;
+                     jjstateSet[jjnewStateCnt++] = 108;
                   break;
-               case 97:
+               case 108:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 98;
+                     jjstateSet[jjnewStateCnt++] = 109;
                   break;
-               case 98:
+               case 109:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 99;
+                     jjstateSet[jjnewStateCnt++] = 110;
                   break;
-               case 99:
-               case 104:
+               case 110:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAdd(100); }
+                     jjstateSet[jjnewStateCnt++] = 111;
                   break;
-               case 100:
+               case 111:
+               case 116:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     { jjCheckNAdd(112); }
+                  break;
+               case 112:
                   if ((0x3ff000000000000L & l) != 0L)
                      { jjCheckNAddStates(33, 35); }
                   break;
-               case 102:
+               case 114:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 103;
+                     jjstateSet[jjnewStateCnt++] = 115;
                   break;
-               case 103:
+               case 115:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 104;
+                     jjstateSet[jjnewStateCnt++] = 116;
                   break;
-               case 105:
+               case 117:
                   if (curChar == 39)
-                     { jjCheckNAddStates(56, 59); }
+                     { jjCheckNAddStates(62, 65); }
                   break;
-               case 106:
-               case 109:
+               case 118:
+               case 121:
                   if (curChar == 39)
-                     { jjCheckNAddTwoStates(107, 110); }
+                     { jjCheckNAddTwoStates(119, 122); }
                   break;
-               case 107:
+               case 119:
                   if ((0xffffff7fffffffffL & l) != 0L)
-                     { jjCheckNAddStates(56, 59); }
+                     { jjCheckNAddStates(62, 65); }
                   break;
-               case 108:
+               case 120:
                   if (curChar == 39)
-                     { jjAddStates(60, 61); }
+                     { jjAddStates(66, 67); }
                   break;
-               case 111:
+               case 123:
                   if ((0x8400000000L & l) != 0L)
-                     { jjCheckNAddStates(56, 59); }
+                     { jjCheckNAddStates(62, 65); }
                   break;
-               case 113:
+               case 126:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 114;
+                     { jjAddStates(68, 69); }
                   break;
-               case 114:
+               case 129:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 115;
+                     jjstateSet[jjnewStateCnt++] = 130;
                   break;
-               case 115:
+               case 130:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 116;
+                     jjstateSet[jjnewStateCnt++] = 131;
                   break;
-               case 116:
+               case 131:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 117;
+                     jjstateSet[jjnewStateCnt++] = 132;
                   break;
-               case 117:
+               case 132:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 118;
+                     jjstateSet[jjnewStateCnt++] = 133;
                   break;
-               case 118:
+               case 133:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 119;
+                     jjstateSet[jjnewStateCnt++] = 134;
                   break;
-               case 119:
-               case 124:
+               case 134:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAdd(120); }
+                     jjstateSet[jjnewStateCnt++] = 135;
                   break;
-               case 120:
+               case 135:
+               case 140:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddStates(56, 59); }
+                     { jjCheckNAdd(136); }
                   break;
-               case 122:
+               case 136:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 123;
+                     { jjCheckNAddStates(62, 65); }
                   break;
-               case 123:
+               case 138:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 124;
+                     jjstateSet[jjnewStateCnt++] = 139;
                   break;
-               case 125:
-                  if (curChar == 39 && kind > 191)
-                     kind = 191;
+               case 139:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 140;
                   break;
-               case 126:
+               case 141:
+                  if (curChar == 39 && kind > 192)
+                     kind = 192;
+                  break;
+               case 142:
                   if (curChar == 39)
-                     jjstateSet[jjnewStateCnt++] = 125;
+                     jjstateSet[jjnewStateCnt++] = 141;
                   break;
-               case 127:
+               case 143:
                   if (curChar == 39)
-                     jjstateSet[jjnewStateCnt++] = 105;
+                     jjstateSet[jjnewStateCnt++] = 117;
                   break;
-               case 128:
+               case 144:
                   if (curChar == 39)
-                     jjstateSet[jjnewStateCnt++] = 127;
+                     jjstateSet[jjnewStateCnt++] = 143;
                   break;
-               case 129:
+               case 145:
                   if (curChar == 34)
-                     { jjCheckNAddStates(62, 65); }
+                     { jjCheckNAddStates(70, 73); }
                   break;
-               case 130:
-               case 133:
+               case 146:
+               case 149:
                   if (curChar == 34)
-                     { jjCheckNAddTwoStates(131, 134); }
+                     { jjCheckNAddTwoStates(147, 150); }
                   break;
-               case 131:
+               case 147:
                   if ((0xfffffffbffffffffL & l) != 0L)
-                     { jjCheckNAddStates(62, 65); }
+                     { jjCheckNAddStates(70, 73); }
                   break;
-               case 132:
+               case 148:
                   if (curChar == 34)
-                     { jjAddStates(66, 67); }
+                     { jjAddStates(74, 75); }
                   break;
-               case 135:
+               case 151:
                   if ((0x8400000000L & l) != 0L)
-                     { jjCheckNAddStates(62, 65); }
+                     { jjCheckNAddStates(70, 73); }
                   break;
-               case 137:
+               case 154:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 138;
+                     { jjAddStates(76, 77); }
                   break;
-               case 138:
+               case 157:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 139;
+                     jjstateSet[jjnewStateCnt++] = 158;
                   break;
-               case 139:
+               case 158:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 140;
+                     jjstateSet[jjnewStateCnt++] = 159;
                   break;
-               case 140:
+               case 159:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 141;
+                     jjstateSet[jjnewStateCnt++] = 160;
                   break;
-               case 141:
+               case 160:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 142;
+                     jjstateSet[jjnewStateCnt++] = 161;
                   break;
-               case 142:
+               case 161:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 143;
+                     jjstateSet[jjnewStateCnt++] = 162;
                   break;
-               case 143:
-               case 148:
+               case 162:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAdd(144); }
+                     jjstateSet[jjnewStateCnt++] = 163;
                   break;
-               case 144:
+               case 163:
+               case 168:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddStates(62, 65); }
+                     { jjCheckNAdd(164); }
                   break;
-               case 146:
+               case 164:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 147;
+                     { jjCheckNAddStates(70, 73); }
                   break;
-               case 147:
+               case 166:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 148;
+                     jjstateSet[jjnewStateCnt++] = 167;
                   break;
-               case 149:
-                  if (curChar == 34 && kind > 192)
-                     kind = 192;
+               case 167:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 168;
                   break;
-               case 150:
+               case 169:
+                  if (curChar == 34 && kind > 193)
+                     kind = 193;
+                  break;
+               case 170:
                   if (curChar == 34)
-                     jjstateSet[jjnewStateCnt++] = 149;
+                     jjstateSet[jjnewStateCnt++] = 169;
                   break;
-               case 151:
+               case 171:
                   if (curChar == 34)
-                     jjstateSet[jjnewStateCnt++] = 129;
+                     jjstateSet[jjnewStateCnt++] = 145;
                   break;
-               case 152:
+               case 172:
                   if (curChar == 34)
-                     jjstateSet[jjnewStateCnt++] = 151;
+                     jjstateSet[jjnewStateCnt++] = 171;
                   break;
-               case 153:
+               case 173:
                   if (curChar == 40)
                      { jjCheckNAddStates(20, 22); }
                   break;
-               case 154:
+               case 174:
                   if (curChar == 35)
-                     { jjCheckNAddStates(68, 73); }
+                     { jjCheckNAddStates(78, 83); }
                   break;
-               case 155:
+               case 175:
                   if ((0xffffffffffffdbffL & l) != 0L)
-                     { jjCheckNAddStates(68, 73); }
+                     { jjCheckNAddStates(78, 83); }
                   break;
-               case 156:
+               case 176:
                   if ((0x2400L & l) != 0L)
                      { jjCheckNAddStates(20, 22); }
                   break;
-               case 157:
+               case 177:
                   if ((0x100003600L & l) != 0L)
                      { jjCheckNAddStates(20, 22); }
                   break;
-               case 158:
-                  if (curChar == 41 && kind > 195)
-                     kind = 195;
+               case 178:
+                  if (curChar == 41 && kind > 196)
+                     kind = 196;
                   break;
-               case 159:
+               case 179:
                   if (curChar == 10)
                      { jjCheckNAddStates(20, 22); }
                   break;
-               case 160:
+               case 180:
                   if (curChar == 13)
-                     jjstateSet[jjnewStateCnt++] = 159;
+                     jjstateSet[jjnewStateCnt++] = 179;
                   break;
-               case 162:
+               case 182:
                   if (curChar == 35)
-                     { jjCheckNAddStates(74, 79); }
+                     { jjCheckNAddStates(84, 89); }
                   break;
-               case 163:
+               case 183:
                   if ((0xffffffffffffdbffL & l) != 0L)
-                     { jjCheckNAddStates(74, 79); }
+                     { jjCheckNAddStates(84, 89); }
                   break;
-               case 164:
+               case 184:
                   if ((0x2400L & l) != 0L)
-                     { jjCheckNAddStates(80, 82); }
+                     { jjCheckNAddStates(90, 92); }
                   break;
-               case 165:
+               case 185:
                   if ((0x100003600L & l) != 0L)
-                     { jjCheckNAddStates(80, 82); }
+                     { jjCheckNAddStates(90, 92); }
                   break;
-               case 167:
+               case 187:
                   if (curChar == 10)
-                     { jjCheckNAddStates(80, 82); }
+                     { jjCheckNAddStates(90, 92); }
                   break;
-               case 168:
+               case 188:
                   if (curChar == 13)
-                     jjstateSet[jjnewStateCnt++] = 167;
+                     jjstateSet[jjnewStateCnt++] = 187;
                   break;
-               case 170:
+               case 190:
                   if ((0x3ff600000000000L & l) != 0L)
-                     { jjAddStates(83, 85); }
+                     { jjAddStates(93, 95); }
                   break;
-               case 171:
+               case 191:
                   if ((0x3ff200000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 172;
+                     jjstateSet[jjnewStateCnt++] = 192;
                   break;
-               case 172:
+               case 192:
                   if (curChar == 58 && kind > 11)
                      kind = 11;
                   break;
-               case 176:
+               case 196:
                   if ((0x3ff600000000000L & l) != 0L)
-                     { jjAddStates(86, 88); }
+                     { jjAddStates(96, 98); }
                   break;
-               case 177:
+               case 197:
                   if ((0x3ff200000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 178;
+                     jjstateSet[jjnewStateCnt++] = 198;
                   break;
-               case 178:
+               case 198:
                   if (curChar == 58)
                      { jjCheckNAddStates(16, 19); }
                   break;
-               case 179:
+               case 199:
                   if ((0x7ff000000000000L & l) == 0L)
                      break;
                   if (kind > 12)
                      kind = 12;
-                  { jjCheckNAddStates(89, 93); }
+                  { jjCheckNAddStates(99, 103); }
                   break;
-               case 180:
+               case 200:
                   if ((0x7ff600000000000L & l) != 0L)
-                     { jjCheckNAddStates(89, 93); }
+                     { jjCheckNAddStates(99, 103); }
                   break;
-               case 181:
+               case 201:
                   if ((0x7ff200000000000L & l) != 0L && kind > 12)
                      kind = 12;
                   break;
-               case 185:
+               case 205:
                   if ((0xa800fffa00000000L & l) != 0L)
-                     { jjCheckNAddStates(89, 93); }
+                     { jjCheckNAddStates(99, 103); }
                   break;
-               case 186:
+               case 206:
                   if (curChar == 37)
-                     { jjAddStates(94, 95); }
+                     { jjAddStates(104, 105); }
                   break;
-               case 187:
+               case 207:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 188;
+                     jjstateSet[jjnewStateCnt++] = 208;
                   break;
-               case 188:
+               case 208:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddStates(89, 93); }
+                     { jjCheckNAddStates(99, 103); }
                   break;
-               case 189:
+               case 209:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 190;
+                     jjstateSet[jjnewStateCnt++] = 210;
                   break;
-               case 190:
+               case 210:
                   if ((0x3ff000000000000L & l) != 0L && kind > 12)
                      kind = 12;
                   break;
-               case 191:
+               case 211:
                   if ((0xa800fffa00000000L & l) != 0L && kind > 12)
                      kind = 12;
                   break;
-               case 194:
+               case 214:
                   if ((0xa800fffa00000000L & l) == 0L)
                      break;
                   if (kind > 12)
                      kind = 12;
-                  { jjCheckNAddStates(89, 93); }
+                  { jjCheckNAddStates(99, 103); }
                   break;
-               case 195:
+               case 215:
                   if (curChar == 37)
-                     jjstateSet[jjnewStateCnt++] = 196;
+                     jjstateSet[jjnewStateCnt++] = 216;
                   break;
-               case 196:
+               case 216:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 197;
+                     jjstateSet[jjnewStateCnt++] = 217;
                   break;
-               case 197:
+               case 217:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 12)
                      kind = 12;
-                  { jjCheckNAddStates(89, 93); }
+                  { jjCheckNAddStates(99, 103); }
                   break;
-               case 206:
+               case 226:
                   if (curChar != 58)
                      break;
                   if (kind > 11)
                      kind = 11;
                   { jjCheckNAddStates(16, 19); }
                   break;
-               case 209:
+               case 229:
                   if (curChar == 35)
-                     { jjCheckNAddStates(96, 101); }
+                     { jjCheckNAddStates(106, 111); }
                   break;
-               case 210:
+               case 230:
                   if ((0xffffffffffffdbffL & l) != 0L)
-                     { jjCheckNAddStates(96, 101); }
+                     { jjCheckNAddStates(106, 111); }
                   break;
-               case 211:
+               case 231:
                   if ((0x2400L & l) != 0L)
-                     { jjCheckNAddStates(102, 104); }
+                     { jjCheckNAddStates(112, 114); }
                   break;
-               case 212:
+               case 232:
                   if ((0x100003600L & l) != 0L)
-                     { jjCheckNAddStates(102, 104); }
+                     { jjCheckNAddStates(112, 114); }
                   break;
-               case 217:
+               case 237:
                   if (curChar == 10)
-                     { jjCheckNAddStates(102, 104); }
+                     { jjCheckNAddStates(112, 114); }
                   break;
-               case 218:
+               case 238:
                   if (curChar == 13)
-                     jjstateSet[jjnewStateCnt++] = 217;
+                     jjstateSet[jjnewStateCnt++] = 237;
                   break;
-               case 224:
+               case 244:
                   if (curChar == 35)
-                     { jjCheckNAddStates(105, 110); }
+                     { jjCheckNAddStates(115, 120); }
                   break;
-               case 225:
+               case 245:
                   if ((0xffffffffffffdbffL & l) != 0L)
-                     { jjCheckNAddStates(105, 110); }
+                     { jjCheckNAddStates(115, 120); }
                   break;
-               case 226:
+               case 246:
                   if ((0x2400L & l) != 0L)
-                     { jjCheckNAddStates(111, 113); }
+                     { jjCheckNAddStates(121, 123); }
                   break;
-               case 227:
+               case 247:
                   if ((0x100003600L & l) != 0L)
-                     { jjCheckNAddStates(111, 113); }
+                     { jjCheckNAddStates(121, 123); }
                   break;
-               case 233:
+               case 253:
                   if (curChar == 10)
-                     { jjCheckNAddStates(111, 113); }
+                     { jjCheckNAddStates(121, 123); }
                   break;
-               case 234:
+               case 254:
                   if (curChar == 13)
-                     jjstateSet[jjnewStateCnt++] = 233;
+                     jjstateSet[jjnewStateCnt++] = 253;
                   break;
-               case 239:
+               case 259:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 173)
                      kind = 173;
                   { jjCheckNAddStates(0, 5); }
                   break;
-               case 240:
+               case 260:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 173)
                      kind = 173;
-                  { jjCheckNAdd(240); }
+                  { jjCheckNAdd(260); }
                   break;
-               case 241:
+               case 261:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(241, 242); }
+                     { jjCheckNAddTwoStates(261, 262); }
                   break;
-               case 242:
+               case 262:
                   if (curChar == 46)
-                     { jjCheckNAdd(243); }
+                     { jjCheckNAdd(263); }
                   break;
-               case 243:
+               case 263:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 174)
                      kind = 174;
-                  { jjCheckNAdd(243); }
+                  { jjCheckNAdd(263); }
                   break;
-               case 244:
+               case 264:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddStates(114, 116); }
+                     { jjCheckNAddStates(124, 126); }
                   break;
-               case 245:
+               case 265:
                   if (curChar == 46)
-                     { jjCheckNAddTwoStates(246, 247); }
+                     { jjCheckNAddTwoStates(266, 267); }
                   break;
-               case 246:
+               case 266:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(246, 247); }
+                     { jjCheckNAddTwoStates(266, 267); }
                   break;
-               case 248:
+               case 268:
                   if ((0x280000000000L & l) != 0L)
-                     { jjCheckNAdd(249); }
+                     { jjCheckNAdd(269); }
                   break;
-               case 249:
+               case 269:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 175)
                      kind = 175;
-                  { jjCheckNAdd(249); }
+                  { jjCheckNAdd(269); }
                   break;
-               case 250:
+               case 270:
                   if (curChar == 46)
-                     { jjCheckNAddTwoStates(243, 251); }
+                     { jjCheckNAddTwoStates(263, 271); }
                   break;
-               case 251:
+               case 271:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(251, 247); }
+                     { jjCheckNAddTwoStates(271, 267); }
                   break;
-               case 252:
+               case 272:
                   if (curChar == 43)
                      { jjCheckNAddStates(11, 15); }
                   break;
-               case 253:
+               case 273:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 177)
                      kind = 177;
-                  { jjCheckNAdd(253); }
+                  { jjCheckNAdd(273); }
                   break;
-               case 254:
+               case 274:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(254, 255); }
+                     { jjCheckNAddTwoStates(274, 275); }
                   break;
-               case 255:
+               case 275:
                   if (curChar == 46)
-                     { jjCheckNAdd(256); }
+                     { jjCheckNAdd(276); }
                   break;
-               case 256:
+               case 276:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 178)
                      kind = 178;
-                  { jjCheckNAdd(256); }
+                  { jjCheckNAdd(276); }
                   break;
-               case 257:
+               case 277:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddStates(117, 119); }
+                     { jjCheckNAddStates(127, 129); }
                   break;
-               case 258:
+               case 278:
                   if (curChar == 46)
-                     { jjCheckNAddTwoStates(259, 260); }
+                     { jjCheckNAddTwoStates(279, 280); }
                   break;
-               case 259:
+               case 279:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(259, 260); }
+                     { jjCheckNAddTwoStates(279, 280); }
                   break;
-               case 261:
+               case 281:
                   if ((0x280000000000L & l) != 0L)
-                     { jjCheckNAdd(262); }
+                     { jjCheckNAdd(282); }
                   break;
-               case 262:
+               case 282:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 179)
                      kind = 179;
-                  { jjCheckNAdd(262); }
+                  { jjCheckNAdd(282); }
                   break;
-               case 263:
+               case 283:
                   if (curChar == 46)
-                     { jjCheckNAdd(264); }
+                     { jjCheckNAdd(284); }
                   break;
-               case 264:
+               case 284:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(264, 260); }
+                     { jjCheckNAddTwoStates(284, 280); }
                   break;
-               case 265:
+               case 285:
                   if (curChar == 45)
                      { jjCheckNAddStates(6, 10); }
                   break;
-               case 266:
+               case 286:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 180)
                      kind = 180;
-                  { jjCheckNAdd(266); }
+                  { jjCheckNAdd(286); }
                   break;
-               case 267:
+               case 287:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(267, 268); }
+                     { jjCheckNAddTwoStates(287, 288); }
                   break;
-               case 268:
+               case 288:
                   if (curChar == 46)
-                     { jjCheckNAdd(269); }
+                     { jjCheckNAdd(289); }
                   break;
-               case 269:
+               case 289:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 181)
                      kind = 181;
-                  { jjCheckNAdd(269); }
+                  { jjCheckNAdd(289); }
                   break;
-               case 270:
+               case 290:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddStates(120, 122); }
+                     { jjCheckNAddStates(130, 132); }
                   break;
-               case 271:
+               case 291:
                   if (curChar == 46)
-                     { jjCheckNAddTwoStates(272, 273); }
+                     { jjCheckNAddTwoStates(292, 293); }
                   break;
-               case 272:
+               case 292:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(272, 273); }
+                     { jjCheckNAddTwoStates(292, 293); }
                   break;
-               case 274:
+               case 294:
                   if ((0x280000000000L & l) != 0L)
-                     { jjCheckNAdd(275); }
+                     { jjCheckNAdd(295); }
                   break;
-               case 275:
+               case 295:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
                   if (kind > 182)
                      kind = 182;
-                  { jjCheckNAdd(275); }
+                  { jjCheckNAdd(295); }
                   break;
-               case 276:
+               case 296:
                   if (curChar == 46)
-                     { jjCheckNAdd(277); }
+                     { jjCheckNAdd(297); }
                   break;
-               case 277:
+               case 297:
                   if ((0x3ff000000000000L & l) != 0L)
-                     { jjCheckNAddTwoStates(277, 273); }
+                     { jjCheckNAddTwoStates(297, 293); }
                   break;
                default : break;
             }
@@ -3544,19 +3564,19 @@ private int jjMoveNfa_0(int startState, int curPos)
             {
                case 0:
                   if ((0x7fffffe07fffffeL & l) != 0L)
-                     { jjCheckNAddStates(123, 130); }
+                     { jjCheckNAddStates(133, 140); }
                   else if (curChar == 91)
-                     { jjCheckNAddStates(80, 82); }
+                     { jjCheckNAddStates(90, 92); }
                   else if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 68;
+                     jjstateSet[jjnewStateCnt++] = 72;
                   else if (curChar == 64)
-                     { jjCheckNAdd(45); }
+                     { jjCheckNAdd(49); }
                   else if (curChar == 95)
-                     jjstateSet[jjnewStateCnt++] = 22;
+                     jjstateSet[jjnewStateCnt++] = 26;
                   if ((0x1000000010L & l) != 0L)
-                     { jjAddStates(131, 132); }
+                     { jjAddStates(141, 142); }
                   else if ((0x20000000200L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 65;
+                     jjstateSet[jjnewStateCnt++] = 69;
                   break;
                case 1:
                   if (kind > 6)
@@ -3569,26 +3589,26 @@ private int jjMoveNfa_0(int startState, int curPos)
                   break;
                case 8:
                   if (curChar == 92)
-                     { jjAddStates(133, 134); }
+                     { jjAddStates(143, 145); }
                   break;
                case 9:
-                  if (curChar == 85)
+                  if (curChar == 117)
                      jjstateSet[jjnewStateCnt++] = 10;
                   break;
                case 10:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 11;
+                  if (curChar == 123)
+                     { jjCheckNAdd(11); }
                   break;
                case 11:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 12;
+                     { jjCheckNAddTwoStates(11, 12); }
                   break;
                case 12:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 13;
+                  if (curChar == 125)
+                     { jjCheckNAddStates(25, 27); }
                   break;
                case 13:
-                  if ((0x7e0000007eL & l) != 0L)
+                  if (curChar == 85)
                      jjstateSet[jjnewStateCnt++] = 14;
                   break;
                case 14:
@@ -3600,16 +3620,15 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 16;
                   break;
                case 16:
-               case 21:
                   if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAdd(17); }
+                     jjstateSet[jjnewStateCnt++] = 17;
                   break;
                case 17:
                   if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAddStates(25, 27); }
+                     jjstateSet[jjnewStateCnt++] = 18;
                   break;
                case 18:
-                  if (curChar == 117)
+                  if ((0x7e0000007eL & l) != 0L)
                      jjstateSet[jjnewStateCnt++] = 19;
                   break;
                case 19:
@@ -3617,171 +3636,171 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 20;
                   break;
                case 20:
+               case 25:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 21;
+                     { jjCheckNAdd(21); }
                   break;
-               case 23:
-                  if ((0x7fffffe87fffffeL & l) == 0L)
+               case 21:
+                  if ((0x7e0000007eL & l) != 0L)
+                     { jjCheckNAddStates(25, 27); }
+                  break;
+               case 22:
+                  if (curChar == 117)
+                     jjstateSet[jjnewStateCnt++] = 23;
+                  break;
+               case 23:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 24;
+                  break;
+               case 24:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 25;
+                  break;
+               case 27:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
                   if (kind > 13)
                      kind = 13;
-                  { jjCheckNAddStates(41, 43); }
+                  { jjCheckNAddStates(43, 45); }
                   break;
-               case 24:
+               case 28:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     { jjCheckNAddStates(41, 43); }
+                     { jjCheckNAddStates(43, 45); }
                   break;
-               case 25:
+               case 29:
                   if ((0x7fffffe87fffffeL & l) != 0L && kind > 13)
                      kind = 13;
                   break;
-               case 31:
+               case 35:
                   if (curChar == 95)
-                     jjstateSet[jjnewStateCnt++] = 22;
+                     jjstateSet[jjnewStateCnt++] = 26;
                   break;
-               case 33:
-               case 34:
+               case 37:
+               case 38:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
                   if (kind > 14)
                      kind = 14;
-                  { jjCheckNAddTwoStates(34, 35); }
+                  { jjCheckNAddTwoStates(38, 39); }
                   break;
-               case 39:
-               case 40:
+               case 43:
+               case 44:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
                   if (kind > 15)
                      kind = 15;
-                  { jjCheckNAddTwoStates(40, 41); }
+                  { jjCheckNAddTwoStates(44, 45); }
                   break;
-               case 44:
+               case 48:
                   if (curChar == 64)
-                     { jjCheckNAdd(45); }
+                     { jjCheckNAdd(49); }
                   break;
-               case 45:
+               case 49:
                   if ((0x7fffffe07fffffeL & l) == 0L)
                      break;
                   if (kind > 16)
                      kind = 16;
-                  { jjCheckNAddStates(135, 137); }
+                  { jjCheckNAddStates(146, 148); }
                   break;
-               case 47:
+               case 51:
                   if ((0x7fffffe07fffffeL & l) == 0L)
                      break;
                   if (kind > 16)
                      kind = 16;
-                  { jjCheckNAddStates(44, 46); }
+                  { jjCheckNAddStates(46, 48); }
                   break;
-               case 49:
+               case 53:
                   if ((0x7fffffe07fffffeL & l) == 0L)
                      break;
                   if (kind > 16)
                      kind = 16;
-                  jjstateSet[jjnewStateCnt++] = 49;
+                  jjstateSet[jjnewStateCnt++] = 53;
                   break;
-               case 51:
+               case 55:
                   if ((0x10000000100000L & l) != 0L)
-                     { jjCheckNAddStates(53, 55); }
+                     { jjCheckNAddStates(55, 57); }
                   break;
-               case 53:
-                  { jjCheckNAddStates(47, 52); }
+               case 57:
+                  { jjCheckNAddStates(49, 54); }
                   break;
-               case 56:
+               case 60:
                   if ((0x200000002L & l) != 0L && kind > 154)
                      kind = 154;
                   break;
-               case 57:
+               case 61:
                   if ((0x10000000100000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 56;
+                     jjstateSet[jjnewStateCnt++] = 60;
                   break;
-               case 58:
+               case 62:
                   if ((0x200000002L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 57;
+                     jjstateSet[jjnewStateCnt++] = 61;
                   break;
-               case 59:
+               case 63:
                   if ((0x1000000010L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 58;
+                     jjstateSet[jjnewStateCnt++] = 62;
                   break;
-               case 62:
+               case 66:
                   if ((0x4000000040000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 51;
+                     jjstateSet[jjnewStateCnt++] = 55;
                   break;
-               case 63:
+               case 67:
                   if ((0x2000000020L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 62;
+                     jjstateSet[jjnewStateCnt++] = 66;
                   break;
-               case 64:
+               case 68:
                   if ((0x8000000080000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 63;
+                     jjstateSet[jjnewStateCnt++] = 67;
                   break;
-               case 65:
+               case 69:
                   if ((0x400000004000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 64;
+                     jjstateSet[jjnewStateCnt++] = 68;
                   break;
-               case 66:
+               case 70:
                   if ((0x20000000200L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 65;
+                     jjstateSet[jjnewStateCnt++] = 69;
                   break;
-               case 67:
+               case 71:
                   if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 68;
+                     jjstateSet[jjnewStateCnt++] = 72;
                   break;
-               case 68:
+               case 72:
                   if ((0x14404410000000L & l) != 0L && kind > 185)
                      kind = 185;
                   break;
-               case 70:
+               case 74:
                   if ((0xffffffffefffffffL & l) != 0L)
                      { jjCheckNAddStates(36, 38); }
                   break;
-               case 72:
+               case 76:
                   if (curChar == 92)
-                     { jjAddStates(138, 140); }
+                     { jjAddStates(149, 152); }
                   break;
-               case 73:
+               case 77:
                   if ((0x14404410000000L & l) != 0L)
                      { jjCheckNAddStates(36, 38); }
                   break;
-               case 74:
-                  if (curChar == 85)
-                     jjstateSet[jjnewStateCnt++] = 75;
-                  break;
-               case 75:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 76;
-                  break;
-               case 76:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 77;
-                  break;
-               case 77:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 78;
-                  break;
                case 78:
-                  if ((0x7e0000007eL & l) != 0L)
+                  if (curChar == 117)
                      jjstateSet[jjnewStateCnt++] = 79;
                   break;
                case 79:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 80;
+                  if (curChar == 123)
+                     { jjCheckNAdd(80); }
                   break;
                case 80:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 81;
+                     { jjCheckNAddTwoStates(80, 81); }
                   break;
                case 81:
-               case 86:
-                  if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAdd(82); }
+                  if (curChar == 125)
+                     { jjCheckNAddStates(36, 38); }
                   break;
                case 82:
-                  if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAddStates(36, 38); }
+                  if (curChar == 85)
+                     jjstateSet[jjnewStateCnt++] = 83;
                   break;
                case 83:
-                  if (curChar == 117)
+                  if ((0x7e0000007eL & l) != 0L)
                      jjstateSet[jjnewStateCnt++] = 84;
                   break;
                case 84:
@@ -3792,85 +3811,106 @@ private int jjMoveNfa_0(int startState, int curPos)
                   if ((0x7e0000007eL & l) != 0L)
                      jjstateSet[jjnewStateCnt++] = 86;
                   break;
+               case 86:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 87;
+                  break;
+               case 87:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 88;
+                  break;
                case 88:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                     { jjCheckNAddStates(33, 35); }
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 89;
+                  break;
+               case 89:
+               case 94:
+                  if ((0x7e0000007eL & l) != 0L)
+                     { jjCheckNAdd(90); }
                   break;
                case 90:
-                  if (curChar == 92)
-                     { jjAddStates(141, 143); }
+                  if ((0x7e0000007eL & l) != 0L)
+                     { jjCheckNAddStates(36, 38); }
                   break;
                case 91:
-                  if ((0x14404410000000L & l) != 0L)
-                     { jjCheckNAddStates(33, 35); }
+                  if (curChar == 117)
+                     jjstateSet[jjnewStateCnt++] = 92;
                   break;
                case 92:
-                  if (curChar == 85)
+                  if ((0x7e0000007eL & l) != 0L)
                      jjstateSet[jjnewStateCnt++] = 93;
                   break;
                case 93:
                   if ((0x7e0000007eL & l) != 0L)
                      jjstateSet[jjnewStateCnt++] = 94;
                   break;
-               case 94:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 95;
-                  break;
-               case 95:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 96;
-                  break;
                case 96:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 97;
-                  break;
-               case 97:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 98;
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     { jjCheckNAddStates(33, 35); }
                   break;
                case 98:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 99;
+                  if (curChar == 92)
+                     { jjAddStates(153, 156); }
                   break;
                case 99:
-               case 104:
-                  if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAdd(100); }
+                  if ((0x14404410000000L & l) != 0L)
+                     { jjCheckNAddStates(33, 35); }
                   break;
                case 100:
-                  if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAddStates(33, 35); }
+                  if (curChar == 117)
+                     jjstateSet[jjnewStateCnt++] = 101;
                   break;
                case 101:
-                  if (curChar == 117)
-                     jjstateSet[jjnewStateCnt++] = 102;
+                  if (curChar == 123)
+                     { jjCheckNAdd(102); }
                   break;
                case 102:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 103;
+                     { jjCheckNAddTwoStates(102, 103); }
                   break;
                case 103:
+                  if (curChar == 125)
+                     { jjCheckNAddStates(33, 35); }
+                  break;
+               case 104:
+                  if (curChar == 85)
+                     jjstateSet[jjnewStateCnt++] = 105;
+                  break;
+               case 105:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 104;
+                     jjstateSet[jjnewStateCnt++] = 106;
+                  break;
+               case 106:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 107;
                   break;
                case 107:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                     { jjCheckNAddStates(56, 59); }
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 108;
+                  break;
+               case 108:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 109;
+                  break;
+               case 109:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 110;
                   break;
                case 110:
-                  if (curChar == 92)
-                     { jjAddStates(144, 146); }
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 111;
                   break;
                case 111:
-                  if ((0x14404410000000L & l) != 0L)
-                     { jjCheckNAddStates(56, 59); }
+               case 116:
+                  if ((0x7e0000007eL & l) != 0L)
+                     { jjCheckNAdd(112); }
                   break;
                case 112:
-                  if (curChar == 85)
-                     jjstateSet[jjnewStateCnt++] = 113;
+                  if ((0x7e0000007eL & l) != 0L)
+                     { jjCheckNAddStates(33, 35); }
                   break;
                case 113:
-                  if ((0x7e0000007eL & l) != 0L)
+                  if (curChar == 117)
                      jjstateSet[jjnewStateCnt++] = 114;
                   break;
                case 114:
@@ -3881,57 +3921,73 @@ private int jjMoveNfa_0(int startState, int curPos)
                   if ((0x7e0000007eL & l) != 0L)
                      jjstateSet[jjnewStateCnt++] = 116;
                   break;
-               case 116:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 117;
+               case 119:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     { jjCheckNAddStates(62, 65); }
                   break;
-               case 117:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 118;
+               case 122:
+                  if (curChar == 92)
+                     { jjAddStates(157, 160); }
                   break;
-               case 118:
-                  if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 119;
+               case 123:
+                  if ((0x14404410000000L & l) != 0L)
+                     { jjCheckNAddStates(62, 65); }
                   break;
-               case 119:
                case 124:
-                  if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAdd(120); }
+                  if (curChar == 117)
+                     jjstateSet[jjnewStateCnt++] = 125;
                   break;
-               case 120:
+               case 125:
+                  if (curChar == 123)
+                     { jjCheckNAdd(126); }
+                  break;
+               case 126:
                   if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAddStates(56, 59); }
+                     { jjCheckNAddTwoStates(126, 127); }
                   break;
-               case 121:
-                  if (curChar == 117)
-                     jjstateSet[jjnewStateCnt++] = 122;
+               case 127:
+                  if (curChar == 125)
+                     { jjCheckNAddStates(62, 65); }
                   break;
-               case 122:
+               case 128:
+                  if (curChar == 85)
+                     jjstateSet[jjnewStateCnt++] = 129;
+                  break;
+               case 129:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 123;
+                     jjstateSet[jjnewStateCnt++] = 130;
                   break;
-               case 123:
+               case 130:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 124;
+                     jjstateSet[jjnewStateCnt++] = 131;
                   break;
                case 131:
-                  if ((0xffffffffefffffffL & l) != 0L)
-                     { jjCheckNAddStates(62, 65); }
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 132;
+                  break;
+               case 132:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 133;
+                  break;
+               case 133:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 134;
                   break;
                case 134:
-                  if (curChar == 92)
-                     { jjAddStates(147, 149); }
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 135;
                   break;
                case 135:
-                  if ((0x14404410000000L & l) != 0L)
-                     { jjCheckNAddStates(62, 65); }
+               case 140:
+                  if ((0x7e0000007eL & l) != 0L)
+                     { jjCheckNAdd(136); }
                   break;
                case 136:
-                  if (curChar == 85)
-                     jjstateSet[jjnewStateCnt++] = 137;
+                  if ((0x7e0000007eL & l) != 0L)
+                     { jjCheckNAddStates(62, 65); }
                   break;
                case 137:
-                  if ((0x7e0000007eL & l) != 0L)
+                  if (curChar == 117)
                      jjstateSet[jjnewStateCnt++] = 138;
                   break;
                case 138:
@@ -3942,235 +3998,279 @@ private int jjMoveNfa_0(int startState, int curPos)
                   if ((0x7e0000007eL & l) != 0L)
                      jjstateSet[jjnewStateCnt++] = 140;
                   break;
-               case 140:
+               case 147:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     { jjCheckNAddStates(70, 73); }
+                  break;
+               case 150:
+                  if (curChar == 92)
+                     { jjAddStates(161, 164); }
+                  break;
+               case 151:
+                  if ((0x14404410000000L & l) != 0L)
+                     { jjCheckNAddStates(70, 73); }
+                  break;
+               case 152:
+                  if (curChar == 117)
+                     jjstateSet[jjnewStateCnt++] = 153;
+                  break;
+               case 153:
+                  if (curChar == 123)
+                     { jjCheckNAdd(154); }
+                  break;
+               case 154:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 141;
+                     { jjCheckNAddTwoStates(154, 155); }
                   break;
-               case 141:
+               case 155:
+                  if (curChar == 125)
+                     { jjCheckNAddStates(70, 73); }
+                  break;
+               case 156:
+                  if (curChar == 85)
+                     jjstateSet[jjnewStateCnt++] = 157;
+                  break;
+               case 157:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 142;
+                     jjstateSet[jjnewStateCnt++] = 158;
                   break;
-               case 142:
+               case 158:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 143;
+                     jjstateSet[jjnewStateCnt++] = 159;
                   break;
-               case 143:
-               case 148:
+               case 159:
                   if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAdd(144); }
+                     jjstateSet[jjnewStateCnt++] = 160;
                   break;
-               case 144:
+               case 160:
                   if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAddStates(62, 65); }
+                     jjstateSet[jjnewStateCnt++] = 161;
                   break;
-               case 145:
+               case 161:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 162;
+                  break;
+               case 162:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 163;
+                  break;
+               case 163:
+               case 168:
+                  if ((0x7e0000007eL & l) != 0L)
+                     { jjCheckNAdd(164); }
+                  break;
+               case 164:
+                  if ((0x7e0000007eL & l) != 0L)
+                     { jjCheckNAddStates(70, 73); }
+                  break;
+               case 165:
                   if (curChar == 117)
-                     jjstateSet[jjnewStateCnt++] = 146;
+                     jjstateSet[jjnewStateCnt++] = 166;
                   break;
-               case 146:
+               case 166:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 147;
+                     jjstateSet[jjnewStateCnt++] = 167;
                   break;
-               case 147:
+               case 167:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 148;
+                     jjstateSet[jjnewStateCnt++] = 168;
                   break;
-               case 155:
-                  { jjAddStates(68, 73); }
+               case 175:
+                  { jjAddStates(78, 83); }
                   break;
-               case 161:
+               case 181:
                   if (curChar == 91)
-                     { jjCheckNAddStates(80, 82); }
+                     { jjCheckNAddStates(90, 92); }
                   break;
-               case 163:
-                  { jjCheckNAddStates(74, 79); }
+               case 183:
+                  { jjCheckNAddStates(84, 89); }
                   break;
-               case 166:
-                  if (curChar == 93 && kind > 200)
-                     kind = 200;
+               case 186:
+                  if (curChar == 93 && kind > 201)
+                     kind = 201;
                   break;
-               case 169:
+               case 189:
                   if ((0x7fffffe07fffffeL & l) != 0L)
-                     { jjCheckNAddStates(123, 130); }
+                     { jjCheckNAddStates(133, 140); }
                   break;
-               case 170:
+               case 190:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     { jjCheckNAddStates(83, 85); }
+                     { jjCheckNAddStates(93, 95); }
                   break;
-               case 171:
+               case 191:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     { jjCheckNAdd(172); }
+                     { jjCheckNAdd(192); }
                   break;
-               case 176:
+               case 196:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     { jjCheckNAddStates(86, 88); }
+                     { jjCheckNAddStates(96, 98); }
                   break;
-               case 177:
+               case 197:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     { jjCheckNAdd(178); }
+                     { jjCheckNAdd(198); }
                   break;
-               case 179:
+               case 199:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
                   if (kind > 12)
                      kind = 12;
-                  { jjCheckNAddStates(89, 93); }
+                  { jjCheckNAddStates(99, 103); }
                   break;
-               case 180:
+               case 200:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     { jjCheckNAddStates(89, 93); }
+                     { jjCheckNAddStates(99, 103); }
                   break;
-               case 181:
+               case 201:
                   if ((0x7fffffe87fffffeL & l) != 0L && kind > 12)
                      kind = 12;
                   break;
-               case 184:
+               case 204:
                   if (curChar == 92)
-                     { jjAddStates(150, 151); }
+                     { jjAddStates(165, 166); }
                   break;
-               case 185:
+               case 205:
                   if ((0x4000000080000001L & l) != 0L)
-                     { jjCheckNAddStates(89, 93); }
+                     { jjCheckNAddStates(99, 103); }
                   break;
-               case 187:
+               case 207:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 188;
+                     jjstateSet[jjnewStateCnt++] = 208;
                   break;
-               case 188:
+               case 208:
                   if ((0x7e0000007eL & l) != 0L)
-                     { jjCheckNAddStates(89, 93); }
+                     { jjCheckNAddStates(99, 103); }
                   break;
-               case 189:
+               case 209:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 190;
+                     jjstateSet[jjnewStateCnt++] = 210;
                   break;
-               case 190:
+               case 210:
                   if ((0x7e0000007eL & l) != 0L && kind > 12)
                      kind = 12;
                   break;
-               case 191:
+               case 211:
                   if ((0x4000000080000001L & l) != 0L && kind > 12)
                      kind = 12;
                   break;
-               case 193:
+               case 213:
                   if (curChar == 92)
-                     jjstateSet[jjnewStateCnt++] = 194;
+                     jjstateSet[jjnewStateCnt++] = 214;
                   break;
-               case 194:
+               case 214:
                   if ((0x4000000080000001L & l) == 0L)
                      break;
                   if (kind > 12)
                      kind = 12;
-                  { jjCheckNAddStates(89, 93); }
+                  { jjCheckNAddStates(99, 103); }
                   break;
-               case 196:
+               case 216:
                   if ((0x7e0000007eL & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 197;
+                     jjstateSet[jjnewStateCnt++] = 217;
                   break;
-               case 197:
+               case 217:
                   if ((0x7e0000007eL & l) == 0L)
                      break;
                   if (kind > 12)
                      kind = 12;
-                  { jjCheckNAddStates(89, 93); }
+                  { jjCheckNAddStates(99, 103); }
                   break;
-               case 207:
+               case 227:
                   if ((0x1000000010L & l) != 0L)
-                     { jjAddStates(131, 132); }
+                     { jjAddStates(141, 142); }
                   break;
-               case 208:
+               case 228:
                   if ((0x2000000020L & l) != 0L)
-                     { jjCheckNAddStates(102, 104); }
+                     { jjCheckNAddStates(112, 114); }
                   break;
-               case 210:
-                  { jjCheckNAddStates(96, 101); }
+               case 230:
+                  { jjCheckNAddStates(106, 111); }
                   break;
-               case 213:
+               case 233:
                   if ((0x200000002L & l) != 0L && kind > 155)
                      kind = 155;
                   break;
-               case 214:
+               case 234:
                   if ((0x10000000100000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 213;
+                     jjstateSet[jjnewStateCnt++] = 233;
                   break;
-               case 215:
+               case 235:
                   if ((0x200000002L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 214;
+                     jjstateSet[jjnewStateCnt++] = 234;
                   break;
-               case 216:
+               case 236:
                   if ((0x1000000010L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 215;
+                     jjstateSet[jjnewStateCnt++] = 235;
                   break;
-               case 219:
+               case 239:
                   if ((0x10000000100000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 208;
+                     jjstateSet[jjnewStateCnt++] = 228;
                   break;
-               case 220:
+               case 240:
                   if ((0x2000000020L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 219;
+                     jjstateSet[jjnewStateCnt++] = 239;
                   break;
-               case 221:
+               case 241:
                   if ((0x100000001000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 220;
+                     jjstateSet[jjnewStateCnt++] = 240;
                   break;
-               case 222:
+               case 242:
                   if ((0x2000000020L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 221;
+                     jjstateSet[jjnewStateCnt++] = 241;
                   break;
-               case 223:
+               case 243:
                   if ((0x2000000020L & l) != 0L)
-                     { jjCheckNAddStates(111, 113); }
+                     { jjCheckNAddStates(121, 123); }
                   break;
-               case 225:
-                  { jjCheckNAddStates(105, 110); }
+               case 245:
+                  { jjCheckNAddStates(115, 120); }
                   break;
-               case 228:
+               case 248:
                   if ((0x2000000020L & l) != 0L && kind > 156)
                      kind = 156;
                   break;
-               case 229:
+               case 249:
                   if ((0x4000000040000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 228;
+                     jjstateSet[jjnewStateCnt++] = 248;
                   break;
-               case 230:
+               case 250:
                   if ((0x2000000020L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 229;
+                     jjstateSet[jjnewStateCnt++] = 249;
                   break;
-               case 231:
+               case 251:
                   if ((0x10000000100L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 230;
+                     jjstateSet[jjnewStateCnt++] = 250;
                   break;
-               case 232:
+               case 252:
                   if ((0x80000000800000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 231;
+                     jjstateSet[jjnewStateCnt++] = 251;
                   break;
-               case 235:
+               case 255:
                   if ((0x10000000100000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 223;
+                     jjstateSet[jjnewStateCnt++] = 243;
                   break;
-               case 236:
+               case 256:
                   if ((0x2000000020L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 235;
+                     jjstateSet[jjnewStateCnt++] = 255;
                   break;
-               case 237:
+               case 257:
                   if ((0x100000001000L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 236;
+                     jjstateSet[jjnewStateCnt++] = 256;
                   break;
-               case 238:
+               case 258:
                   if ((0x2000000020L & l) != 0L)
-                     jjstateSet[jjnewStateCnt++] = 237;
+                     jjstateSet[jjnewStateCnt++] = 257;
                   break;
-               case 247:
+               case 267:
                   if ((0x2000000020L & l) != 0L)
-                     { jjAddStates(152, 153); }
+                     { jjAddStates(167, 168); }
                   break;
-               case 260:
+               case 280:
                   if ((0x2000000020L & l) != 0L)
-                     { jjAddStates(154, 155); }
+                     { jjAddStates(169, 170); }
                   break;
-               case 273:
+               case 293:
                   if ((0x2000000020L & l) != 0L)
-                     { jjAddStates(156, 157); }
+                     { jjAddStates(171, 172); }
                   break;
                default : break;
             }
@@ -4189,9 +4289,9 @@ private int jjMoveNfa_0(int startState, int curPos)
             {
                case 0:
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(123, 130); }
+                     { jjCheckNAddStates(133, 140); }
                   if (jjCanMove_25(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(158, 159); }
+                     { jjAddStates(173, 174); }
                   break;
                case 1:
                   if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
@@ -4204,231 +4304,231 @@ private int jjMoveNfa_0(int startState, int curPos)
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
                      { jjAddStates(25, 27); }
                   break;
-               case 23:
+               case 27:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 13)
                      kind = 13;
-                  { jjCheckNAddStates(41, 43); }
+                  { jjCheckNAddStates(43, 45); }
                   break;
-               case 24:
+               case 28:
                   if (jjCanMove_2(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(41, 43); }
+                     { jjCheckNAddStates(43, 45); }
                   break;
-               case 25:
+               case 29:
                   if (jjCanMove_2(hiByte, i1, i2, l1, l2) && kind > 13)
                      kind = 13;
                   break;
-               case 26:
+               case 30:
                   if (jjCanMove_3(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(160, 161); }
+                     { jjAddStates(175, 176); }
                   break;
-               case 27:
+               case 31:
                   if (jjCanMove_4(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(41, 43); }
+                     { jjCheckNAddStates(43, 45); }
                   break;
-               case 28:
+               case 32:
                   if (jjCanMove_5(hiByte, i1, i2, l1, l2) && kind > 13)
                      kind = 13;
                   break;
-               case 29:
+               case 33:
                   if (jjCanMove_6(hiByte, i1, i2, l1, l2))
-                     jjstateSet[jjnewStateCnt++] = 30;
+                     jjstateSet[jjnewStateCnt++] = 34;
                   break;
-               case 30:
+               case 34:
                   if (!jjCanMove_7(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 13)
                      kind = 13;
-                  { jjCheckNAddStates(41, 43); }
+                  { jjCheckNAddStates(43, 45); }
                   break;
-               case 33:
+               case 37:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 14)
                      kind = 14;
-                  { jjCheckNAddTwoStates(34, 35); }
+                  { jjCheckNAddTwoStates(38, 39); }
                   break;
-               case 34:
+               case 38:
                   if (!jjCanMove_2(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 14)
                      kind = 14;
-                  { jjCheckNAddTwoStates(34, 35); }
+                  { jjCheckNAddTwoStates(38, 39); }
                   break;
-               case 35:
+               case 39:
                   if (jjCanMove_8(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAdd(36); }
+                     { jjCheckNAdd(40); }
                   break;
-               case 36:
+               case 40:
                   if (!jjCanMove_9(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 14)
                      kind = 14;
-                  { jjCheckNAddTwoStates(34, 35); }
+                  { jjCheckNAddTwoStates(38, 39); }
                   break;
-               case 37:
+               case 41:
                   if (jjCanMove_10(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAdd(36); }
+                     { jjCheckNAdd(40); }
                   break;
-               case 39:
+               case 43:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 15)
                      kind = 15;
-                  { jjCheckNAddTwoStates(40, 41); }
+                  { jjCheckNAddTwoStates(44, 45); }
                   break;
-               case 40:
+               case 44:
                   if (!jjCanMove_2(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 15)
                      kind = 15;
-                  { jjCheckNAddTwoStates(40, 41); }
+                  { jjCheckNAddTwoStates(44, 45); }
                   break;
-               case 41:
+               case 45:
                   if (jjCanMove_11(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAdd(42); }
+                     { jjCheckNAdd(46); }
                   break;
-               case 42:
+               case 46:
                   if (!jjCanMove_12(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 15)
                      kind = 15;
-                  { jjCheckNAddTwoStates(40, 41); }
+                  { jjCheckNAddTwoStates(44, 45); }
                   break;
-               case 43:
+               case 47:
                   if (jjCanMove_13(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAdd(42); }
+                     { jjCheckNAdd(46); }
                   break;
-               case 53:
+               case 57:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(47, 52); }
+                     { jjAddStates(49, 54); }
                   break;
-               case 70:
+               case 74:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
                      { jjAddStates(36, 38); }
                   break;
-               case 88:
+               case 96:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
                      { jjAddStates(33, 35); }
                   break;
-               case 107:
+               case 119:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(56, 59); }
+                     { jjAddStates(62, 65); }
                   break;
-               case 131:
+               case 147:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(62, 65); }
+                     { jjAddStates(70, 73); }
                   break;
-               case 155:
+               case 175:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(68, 73); }
+                     { jjAddStates(78, 83); }
                   break;
-               case 163:
+               case 183:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(74, 79); }
+                     { jjAddStates(84, 89); }
                   break;
-               case 169:
+               case 189:
                   if (jjCanMove_1(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(123, 130); }
+                     { jjCheckNAddStates(133, 140); }
                   break;
-               case 170:
+               case 190:
                   if (jjCanMove_2(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(83, 85); }
+                     { jjCheckNAddStates(93, 95); }
                   break;
-               case 171:
+               case 191:
                   if (jjCanMove_2(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAdd(172); }
+                     { jjCheckNAdd(192); }
                   break;
-               case 173:
+               case 193:
                   if (jjCanMove_14(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(162, 163); }
+                     { jjAddStates(177, 178); }
                   break;
-               case 174:
+               case 194:
                   if (jjCanMove_15(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(83, 85); }
+                     { jjCheckNAddStates(93, 95); }
                   break;
-               case 175:
+               case 195:
                   if (jjCanMove_16(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAdd(172); }
+                     { jjCheckNAdd(192); }
                   break;
-               case 176:
+               case 196:
                   if (jjCanMove_2(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(86, 88); }
+                     { jjCheckNAddStates(96, 98); }
                   break;
-               case 177:
+               case 197:
                   if (jjCanMove_2(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAdd(178); }
+                     { jjCheckNAdd(198); }
                   break;
-               case 179:
+               case 199:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 12)
                      kind = 12;
-                  { jjCheckNAddStates(89, 93); }
+                  { jjCheckNAddStates(99, 103); }
                   break;
-               case 180:
+               case 200:
                   if (jjCanMove_2(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(89, 93); }
+                     { jjCheckNAddStates(99, 103); }
                   break;
-               case 181:
+               case 201:
                   if (jjCanMove_2(hiByte, i1, i2, l1, l2) && kind > 12)
                      kind = 12;
                   break;
-               case 182:
+               case 202:
                   if (jjCanMove_17(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(164, 165); }
+                     { jjAddStates(179, 180); }
                   break;
-               case 183:
+               case 203:
                   if (jjCanMove_18(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(89, 93); }
+                     { jjCheckNAddStates(99, 103); }
                   break;
-               case 192:
+               case 212:
                   if (jjCanMove_19(hiByte, i1, i2, l1, l2) && kind > 12)
                      kind = 12;
                   break;
-               case 198:
+               case 218:
                   if (jjCanMove_20(hiByte, i1, i2, l1, l2))
-                     jjstateSet[jjnewStateCnt++] = 199;
+                     jjstateSet[jjnewStateCnt++] = 219;
                   break;
-               case 199:
+               case 219:
                   if (!jjCanMove_21(hiByte, i1, i2, l1, l2))
                      break;
                   if (kind > 12)
                      kind = 12;
-                  { jjCheckNAddStates(89, 93); }
+                  { jjCheckNAddStates(99, 103); }
                   break;
-               case 200:
+               case 220:
                   if (jjCanMove_22(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(166, 167); }
+                     { jjAddStates(181, 182); }
                   break;
-               case 201:
+               case 221:
                   if (jjCanMove_23(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(86, 88); }
+                     { jjCheckNAddStates(96, 98); }
                   break;
-               case 202:
+               case 222:
                   if (jjCanMove_24(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAdd(178); }
+                     { jjCheckNAdd(198); }
                   break;
-               case 203:
+               case 223:
                   if (jjCanMove_25(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(158, 159); }
+                     { jjAddStates(173, 174); }
                   break;
-               case 204:
+               case 224:
                   if (jjCanMove_26(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(168, 171); }
+                     { jjCheckNAddStates(183, 186); }
                   break;
-               case 205:
+               case 225:
                   if (jjCanMove_27(hiByte, i1, i2, l1, l2))
-                     { jjCheckNAddStates(172, 175); }
+                     { jjCheckNAddStates(187, 190); }
                   break;
-               case 210:
+               case 230:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(96, 101); }
+                     { jjAddStates(106, 111); }
                   break;
-               case 225:
+               case 245:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
-                     { jjAddStates(105, 110); }
+                     { jjAddStates(115, 120); }
                   break;
                default : if (i1 == 0 || l1 == 0 || i2 == 0 ||  l2 == 0) break; 
else break;
             }
@@ -4441,7 +4541,7 @@ private int jjMoveNfa_0(int startState, int curPos)
          kind = 0x7fffffff;
       }
       ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 278 - (jjnewStateCnt = startsAt)))
+      if ((i = jjnewStateCnt) == (startsAt = 298 - (jjnewStateCnt = startsAt)))
          break;
       try { curChar = input_stream.readChar(); }
       catch(java.io.IOException e) { break; }
@@ -4482,7 +4582,7 @@ null, null, null, null, null, null, null, null, null, 
null, null, null, null, nu
 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, 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, "\50", 
+null, null, null, null, null, null, null, null, null, null, null, null, null, 
"\50", 
 "\51", null, "\173", "\175", "\133", "\135", null, "\73", "\54", "\56", "\75", 
 "\41\75", "\76", "\74", "\74\75", "\76\75", "\74\74\50", "\51\76\76", 
"\74\74", 
 "\76\76", "\173\174", "\174\175", "\176", "\41", "\72", "\174\174", "\46\46", 
"\53", 
@@ -4512,17 +4612,18 @@ protected Token jjFillToken()
    return t;
 }
 static final int[] jjnextStates = {
-   240, 241, 242, 244, 245, 247, 266, 267, 268, 270, 276, 253, 254, 255, 257, 
263, 
-   179, 193, 195, 198, 154, 157, 158, 39, 43, 6, 7, 8, 1, 2, 4, 33, 
-   37, 88, 89, 90, 70, 71, 72, 23, 29, 24, 25, 26, 46, 47, 50, 52, 
-   53, 54, 61, 55, 59, 52, 55, 59, 106, 107, 108, 110, 109, 126, 130, 131, 
-   132, 134, 133, 150, 154, 155, 156, 160, 157, 158, 162, 163, 164, 168, 165, 
166, 
-   162, 165, 166, 170, 171, 173, 176, 177, 200, 180, 181, 182, 184, 186, 187, 
189, 
-   209, 210, 211, 218, 212, 216, 209, 212, 216, 224, 225, 226, 234, 227, 232, 
224, 
-   227, 232, 244, 245, 247, 257, 258, 260, 270, 271, 273, 170, 171, 172, 176, 
177, 
-   178, 200, 173, 222, 238, 9, 18, 45, 46, 50, 73, 74, 83, 91, 92, 101, 
-   111, 112, 121, 135, 136, 145, 185, 191, 248, 249, 261, 262, 274, 275, 204, 
205, 
-   27, 28, 174, 175, 183, 192, 201, 202, 170, 171, 172, 173, 176, 177, 178, 
200, 
+   260, 261, 262, 264, 265, 267, 286, 287, 288, 290, 296, 273, 274, 275, 277, 
283, 
+   199, 213, 215, 218, 174, 177, 178, 43, 47, 6, 7, 8, 1, 2, 4, 37, 
+   41, 96, 97, 98, 74, 75, 76, 11, 12, 27, 33, 28, 29, 30, 50, 51, 
+   54, 56, 57, 58, 65, 59, 63, 56, 59, 63, 80, 81, 102, 103, 118, 119, 
+   120, 122, 121, 142, 126, 127, 146, 147, 148, 150, 149, 170, 154, 155, 174, 
175, 
+   176, 180, 177, 178, 182, 183, 184, 188, 185, 186, 182, 185, 186, 190, 191, 
193, 
+   196, 197, 220, 200, 201, 202, 204, 206, 207, 209, 229, 230, 231, 238, 232, 
236, 
+   229, 232, 236, 244, 245, 246, 254, 247, 252, 244, 247, 252, 264, 265, 267, 
277, 
+   278, 280, 290, 291, 293, 190, 191, 192, 196, 197, 198, 220, 193, 242, 258, 
9, 
+   13, 22, 49, 50, 54, 77, 78, 82, 91, 99, 100, 104, 113, 123, 124, 128, 
+   137, 151, 152, 156, 165, 205, 211, 268, 269, 281, 282, 294, 295, 224, 225, 
31, 
+   32, 194, 195, 203, 212, 221, 222, 190, 191, 192, 193, 196, 197, 198, 220, 
 };
 private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, 
long l2)
 {
@@ -5002,7 +5103,7 @@ private void jjCheckNAddStates(int start, int end)
   {
     int i;
     jjround = 0x80000001;
-    for (i = 278; i-- > 0;)
+    for (i = 298; i-- > 0;)
       jjrounds[i] = 0x80000000;
   }
 
@@ -5040,10 +5141,10 @@ 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, -1, -1, -1, -1, 
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, 
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 };
 static final long[] jjtoToken = {
-   0xfffffffffff9fe01L, 0xffffffffffffffffL, 0xe27eefffffffffffL, 
0x7fffffffffL, 
+   0xfffffffffff9fe01L, 0xffffffffffffffffL, 0xc27eefffffffffffL, 
0xffffffffffL, 
 };
 static final long[] jjtoSkip = {
    0x7eL, 0x0L, 0x0L, 0x0L, 
@@ -5056,8 +5157,8 @@ static final long[] jjtoMore = {
 };
     protected SimpleCharStream  input_stream;
 
-    private final int[] jjrounds = new int[278];
-    private final int[] jjstateSet = new int[2 * 278];
+    private final int[] jjrounds = new int[298];
+    private final int[] jjstateSet = new int[2 * 298];
     private final StringBuilder jjimage = new StringBuilder();
     private StringBuilder image = jjimage;
     private int jjimageLen;
diff --git 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QuerySyntaxTest.java
 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QuerySyntaxTest.java
index 17365b02b7..c981e880c0 100644
--- 
a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QuerySyntaxTest.java
+++ 
b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QuerySyntaxTest.java
@@ -58,7 +58,7 @@ public class QuerySyntaxTest extends AbstractManifestTest {
         } catch (QueryException qEx) {
             if ( expectLegalSyntax ) {
                 String filename = SparqlTestLib.getAction(manifestEntry);
-                System.out.printf("==== Syntax test %s : %s\n", 
FileOps.basename(filename), "expected postive, got negative");
+                System.out.printf("==== Syntax test %s : %s\n", 
FileOps.basename(filename), "expected positive, got negative");
                 LibTest.printFile(filename);
                 throw qEx;
             }
diff --git a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl 
b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl
index cc02540b09..95ce414b9b 100644
--- a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/manifest.ttl
@@ -70,6 +70,15 @@
 :test_42
 :test_43
 :test_44
+:test_45
+:test_46
+:test_47
+:test_48
+:test_49
+:test_50
+:test_51
+:test_52
+:test_53
 ) .
 
 :test_1 rdf:type   mfx:PositiveSyntaxTestARQ ;
@@ -247,49 +256,94 @@
    mf:name    "syntax-median-01.arq" ;
    mf:action  <syntax-median-01.arq> ;.
 
-:test_36 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_36 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-delim-hex-escape-01.arq" ;
+   mf:action  <syntax-delim-hex-escape-01.arq> ;.
+
+:test_37 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-delim-hex-escape-02.arq" ;
+   mf:action  <syntax-delim-hex-escape-02.arq> ;.
+
+:test_38 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-delim-hex-escape-03.arq" ;
+   mf:action  <syntax-delim-hex-escape-03.arq> ;.
+
+:test_39 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-delim-hex-escape-04.arq" ;
+   mf:action  <syntax-delim-hex-escape-04.arq> ;.
+
+:test_40 rdf:type   mfx:PositiveSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-delim-hex-escape-05.arq" ;
+   mf:action  <syntax-delim-hex-escape-05.arq> ;.
+
+:test_41 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-scope-bad-01.arq" ;
    mf:action  <syntax-scope-bad-01.arq> ;.
 
-:test_37 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_42 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-scope-bad-02.arq" ;
    mf:action  <syntax-scope-bad-02.arq> ;.
 
-:test_38 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_43 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-agg-expr-bad-01.arq" ;
    mf:action  <syntax-agg-expr-bad-01.arq> ;.
 
-:test_39 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_44 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-agg-expr-bad-02.arq" ;
    mf:action  <syntax-agg-expr-bad-02.arq> ;.
 
-:test_40 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_45 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-agg-expr-bad-03.arq" ;
    mf:action  <syntax-agg-expr-bad-03.arq> ;.
 
-:test_41 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_46 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-subquery-bad-01.arq" ;
    mf:action  <syntax-subquery-bad-01.arq> ;.
 
-:test_42 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_47 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-subquery-bad-02.arq" ;
    mf:action  <syntax-subquery-bad-02.arq> ;.
 
-:test_43 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_48 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-let-bad-01.arq" ;
    mf:action  <syntax-let-bad-01.arq> ;.
 
-:test_44 rdf:type   mfx:NegativeSyntaxTestARQ ;
+:test_49 rdf:type   mfx:NegativeSyntaxTestARQ ;
    dawgt:approval dawgt:NotClassified ;
    mf:name    "syntax-quad-construct-bad-01.arq" ;
    mf:action  <syntax-quad-construct-bad-01.arq> ;.
 
+:test_50 rdf:type   mfx:NegativeSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-delim-hex-escape-bad-01.arq" ;
+   mf:action  <syntax-delim-hex-escape-bad-01.arq> ;.
+
+:test_51 rdf:type   mfx:NegativeSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-delim-hex-escape-bad-02.arq" ;
+   mf:action  <syntax-delim-hex-escape-bad-02.arq> ;.
+
+:test_52 rdf:type   mfx:NegativeSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-delim-hex-escape-bad-03.arq" ;
+   mf:action  <syntax-delim-hex-escape-bad-03.arq> ;.
+
+:test_53 rdf:type   mfx:NegativeSyntaxTestARQ ;
+   dawgt:approval dawgt:NotClassified ;
+   mf:name    "syntax-delim-hex-escape-bad-04.arq" ;
+   mf:action  <syntax-delim-hex-escape-bad-04.arq> ;.
+
 
diff --git 
a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-01.arq 
b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-01.arq
new file mode 100644
index 0000000000..2e223d95ab
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-01.arq
@@ -0,0 +1,2 @@
+PREFIX : <http://example/>
+ASK { :s :p "\u{41}" }
diff --git 
a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-02.arq 
b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-02.arq
new file mode 100644
index 0000000000..84e708b463
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-02.arq
@@ -0,0 +1,2 @@
+PREFIX : <http://example/>
+ASK { :s :p "\u{0}" }
diff --git 
a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-03.arq 
b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-03.arq
new file mode 100644
index 0000000000..88b90623b5
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-03.arq
@@ -0,0 +1,2 @@
+PREFIX : <http://example/>
+ASK { :s :p "\u{1F0A1}" }
diff --git 
a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-04.arq 
b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-04.arq
new file mode 100644
index 0000000000..77e2e1c86e
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-04.arq
@@ -0,0 +1,2 @@
+PREFIX : <http://example/>
+ASK { :s :p "\u{01F0A1}" }
diff --git 
a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-05.arq 
b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-05.arq
new file mode 100644
index 0000000000..8f62e8a287
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-05.arq
@@ -0,0 +1,2 @@
+PREFIX : <http://example/>
+ASK { :s :p "\u{10FFFF}" }
diff --git 
a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-01.arq 
b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-01.arq
new file mode 100644
index 0000000000..fb05803ab5
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-01.arq
@@ -0,0 +1,2 @@
+PREFIX : <http://example/>
+ASK { :s :p "\u{}" }
diff --git 
a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-02.arq 
b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-02.arq
new file mode 100644
index 0000000000..6188f5ae1f
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-02.arq
@@ -0,0 +1,2 @@
+PREFIX : <http://example/>
+ASK { :s :p "\u{12345678}" }
diff --git 
a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-03.arq 
b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-03.arq
new file mode 100644
index 0000000000..d75f2a2fb5
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-03.arq
@@ -0,0 +1,2 @@
+PREFIX : <http://example/>
+ASK { :s :p "\u{00000000}" }
diff --git 
a/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-04.arq 
b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-04.arq
new file mode 100644
index 0000000000..db1b9ad7e4
--- /dev/null
+++ b/jena-arq/testing/ARQ/Syntax/Syntax-ARQ/syntax-delim-hex-escape-bad-04.arq
@@ -0,0 +1,2 @@
+PREFIX : <http://example/>
+ASK { :s :p "\u{1234567}" }
diff --git a/jena-arq/testing/ARQ/Syntax/syn-arq.sh 
b/jena-arq/testing/ARQ/Syntax/syn-arq.sh
index 17479777b3..ef15d0bf74 100644
--- a/jena-arq/testing/ARQ/Syntax/syn-arq.sh
+++ b/jena-arq/testing/ARQ/Syntax/syn-arq.sh
@@ -361,3 +361,57 @@ WHERE
    }
 EOF
 
+# Delimited escape sequences \{H..H}
+##     @Test public void unescape_unicode_20()   { 
test_unesc_unicode("\\u{41}", "A") ; }
+
+##     @Test public void unescape_unicode_21()   { 
test_unesc_unicode("\\u{000000}", "\u0000") ; }
+##     @Test public void unescape_unicode_22()   { 
test_unesc_unicode("\\u{1F0A1}", "🂡") ; }
+##     @Test public void unescape_unicode_23()   { 
test_unesc_unicode("\\u{01F0A1}", "🂡") ; }
+##     @Test public void unescape_unicode_24()   { 
test_unesc_unicode("\\u{10FFFF}", 0x10FFFF) ; }
+
+N=0
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-delim-hex-escape-" $N arq) <<EOF
+PREFIX : <http://example/>
+ASK { :s :p "\\u{41}" }
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-delim-hex-escape-" $N arq) <<EOF
+PREFIX : <http://example/>
+ASK { :s :p "\\u{0}" }
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-delim-hex-escape-" $N arq) <<EOF
+PREFIX : <http://example/>
+ASK { :s :p "\\u{1F0A1}" }
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-delim-hex-escape-" $N arq) <<EOF
+PREFIX : <http://example/>
+ASK { :s :p "\\u{01F0A1}" }
+EOF
+
+N=$((N+1)) ; testGood $ARQ $(fname "syntax-delim-hex-escape-" $N arq) <<EOF
+PREFIX : <http://example/>
+ASK { :s :p "\\u{10FFFF}" }
+EOF
+
+N=0
+N=$((N+1)) ; testBad $ARQ $(fname "syntax-delim-hex-escape-bad-" $N arq) <<EOF
+PREFIX : <http://example/>
+ASK { :s :p "\\u{}" }
+EOF
+
+N=$((N+1)) ; testBad $ARQ $(fname "syntax-delim-hex-escape-bad-" $N arq) <<EOF
+PREFIX : <http://example/>
+ASK { :s :p "\\u{12345678}" }
+EOF
+
+N=$((N+1)) ; testBad $ARQ $(fname "syntax-delim-hex-escape-bad-" $N arq) <<EOF
+PREFIX : <http://example/>
+ASK { :s :p "\\u{00000000}" }
+EOF
+
+N=$((N+1)) ; testBad $ARQ $(fname "syntax-delim-hex-escape-bad-" $N arq) <<EOF
+PREFIX : <http://example/>
+ASK { :s :p "\\u{1234567}" }
+EOF

Reply via email to