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 ffbe19ab0d46de4724438e83bc9e1d199749e944
Author: Andy Seaborne <[email protected]>
AuthorDate: Wed Apr 23 22:46:09 2025 +0100

    GH-3146: VERSION for javacc-turtle parser
---
 jena-arq/Grammar/Turtle/turtle.jj                  |  32 +-
 .../jena/riot/lang/extra/LangParserBase.java       |   9 +-
 .../jena/riot/lang/extra/javacc/TurtleJavacc.java  | 165 +++++---
 .../lang/extra/javacc/TurtleJavaccConstants.java   | 130 ++++---
 .../extra/javacc/TurtleJavaccTokenManager.java     | 416 ++++++++++++---------
 5 files changed, 444 insertions(+), 308 deletions(-)

diff --git a/jena-arq/Grammar/Turtle/turtle.jj 
b/jena-arq/Grammar/Turtle/turtle.jj
index ca1c11e4ae..0c37b9eae2 100644
--- a/jena-arq/Grammar/Turtle/turtle.jj
+++ b/jena-arq/Grammar/Turtle/turtle.jj
@@ -86,7 +86,7 @@ void Statement() : {}
 }
 
 // Turtle [3] directive
-void Directive() : { Token t ; String iri ; }
+void Directive() : { Token t ; String iri ; String verStr ;}
 {
     <PREFIX> t = <PNAME_NS> iri = IRIREF()
     { String s = canonicalPrefix(t.image, t.beginLine, t.beginColumn) ;
@@ -94,9 +94,27 @@ void Directive() : { Token t ; String iri ; }
  |
     t = <BASE> iri = IRIREF()
     { setBase(iri, t.beginLine, t.beginColumn) ; }
+ |
+    t = <VERSION> verStr = VersionSpecificer()
+    { declareVersion(verStr, t.beginLine, t.beginColumn); }
 }
 
-void DirectiveOld() : { Token t ; String iri ; }
+String VersionSpecificer() : {  Token t; String verStr; }
+{
+  
+  ( t = <STRING_LITERAL1> { verStr = stripQuotes(t.image) ; }
+  | t = <STRING_LITERAL2> { verStr = stripQuotes(t.image) ; }
+//   | t = <STRING_LITERAL_LONG1> { verStr = stripQuotes3(t.image) ; }
+//   | t = <STRING_LITERAL_LONG2> { verStr = stripQuotes3(t.image) ; }
+  )
+    {
+      checkString(verStr, t.beginLine, t.beginColumn) ;
+      verStr = unescapeStr(verStr,  t.beginLine, t.beginColumn) ;
+      return verStr ;
+    }  
+}
+
+void DirectiveOld() : { Token t ; Token t2 ; String iri ; String verStr ; }
 {
     <PREFIX_OLD> t = <PNAME_NS> iri = IRIREF() <DOT>
     { String s = canonicalPrefix(t.image, t.beginLine, t.beginColumn) ;
@@ -104,6 +122,9 @@ void DirectiveOld() : { Token t ; String iri ; }
  |
     t = <BASE_OLD> iri = IRIREF() <DOT>
     { setBase(iri, t.beginLine, t.beginColumn) ; }
+ |
+    t = <VERSION_OLD> verStr = VersionSpecificer() <DOT>
+    { declareVersion(verStr, t.beginLine, t.beginColumn); }
 }
 
 void Triples() : { Node n; }
@@ -260,10 +281,11 @@ String LangTag() : { Token t ; }
 
 Token AnyDirective() : { Token t ; }
 {
-    ( t = <PREFIX> | t = <BASE> ) { return t ; }
+    ( t = <PREFIX_OLD> | t = <BASE_OLD> | t = <VERSION_OLD> )
+    { return t ; }
 }
 
-// Turtle [133s BooleanLiteral
+// Turtle [133s] BooleanLiteral
 Node BooleanLiteral() : {}
 {
   <TRUE> { return XSD_TRUE ; }
@@ -436,12 +458,14 @@ TOKEN : // Case sensitive tokens.
   <KW_A:  "a" >
 | < PREFIX_OLD:      "@prefix" >
 | < BASE_OLD:        "@base" > 
+| < VERSION_OLD:     "@version" > 
 }
 
 TOKEN [IGNORE_CASE] :
 {
    < BASE:        "base" >
 |  < PREFIX:      "prefix" >
+|  < VERSION:     "version" >
 
 |  < TRUE:        "true" >
 |  < FALSE:       "false" >
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/LangParserBase.java 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/LangParserBase.java
index a3948ff792..83573de14a 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/LangParserBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/LangParserBase.java
@@ -158,10 +158,6 @@ public class LangParserBase {
         String prefix = pname.substring(0, idx);
         String localPart = pname.substring(idx+1);
         localPart = LangParserLib.unescapePName(localPart, line, column);
-
-        if ( localPart.contains("\\") )
-            System.out.println("X");
-
         String expansion = profile.getPrefixMap().expand(prefix, localPart);
         if ( expansion == null ) {
             if ( ARQ.isTrue(ARQ.fixupUndefinedPrefixes) )
@@ -190,6 +186,11 @@ public class LangParserBase {
         profile.getPrefixMap().add(prefix,iri);
         stream.prefix(prefix, iri);
     }
+
+    protected void declareVersion(String version, int line, int column) {
+        stream.version(version);
+    }
+
     protected void emitTriple(int line, int column, Node s, Node p, Node o) {
         stream.triple(Triple.create(s, p, o));
     }
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavacc.java
 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavacc.java
index 403ac258b1..26dfc7a578 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavacc.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavacc.java
@@ -34,8 +34,10 @@ public class TurtleJavacc extends LangParserBase implements 
TurtleJavaccConstant
       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
       case PREFIX_OLD:
       case BASE_OLD:
+      case VERSION_OLD:
       case BASE:
       case PREFIX:
+      case VERSION:
       case IRIref:
       case LPAREN:
       case LBRACKET:
@@ -72,12 +74,14 @@ public class TurtleJavacc extends LangParserBase implements 
TurtleJavaccConstant
   final public void Statement() throws ParseException {
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case BASE:
-    case PREFIX:{
+    case PREFIX:
+    case VERSION:{
       Directive();
       break;
       }
     case PREFIX_OLD:
-    case BASE_OLD:{
+    case BASE_OLD:
+    case VERSION_OLD:{
       DirectiveOld();
       break;
       }
@@ -101,7 +105,7 @@ public class TurtleJavacc extends LangParserBase implements 
TurtleJavaccConstant
 }
 
 // Turtle [3] directive
-  final public void Directive() throws ParseException {Token t ; String iri ;
+  final public void Directive() throws ParseException {Token t ; String iri ; 
String verStr ;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case PREFIX:{
       jj_consume_token(PREFIX);
@@ -117,6 +121,12 @@ String s = canonicalPrefix(t.image, t.beginLine, 
t.beginColumn) ;
 setBase(iri, t.beginLine, t.beginColumn) ;
       break;
       }
+    case VERSION:{
+      t = jj_consume_token(VERSION);
+      verStr = VersionSpecificer();
+declareVersion(verStr, t.beginLine, t.beginColumn);
+      break;
+      }
     default:
       jj_la1[3] = jj_gen;
       jj_consume_token(-1);
@@ -124,7 +134,30 @@ setBase(iri, t.beginLine, t.beginColumn) ;
     }
 }
 
-  final public void DirectiveOld() throws ParseException {Token t ; String iri 
;
+  final public String VersionSpecificer() throws ParseException {Token t; 
String verStr;
+    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+    case STRING_LITERAL1:{
+      t = jj_consume_token(STRING_LITERAL1);
+verStr = stripQuotes(t.image) ;
+      break;
+      }
+    case STRING_LITERAL2:{
+      t = jj_consume_token(STRING_LITERAL2);
+verStr = stripQuotes(t.image) ;
+      break;
+      }
+    default:
+      jj_la1[4] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+checkString(verStr, t.beginLine, t.beginColumn) ;
+      verStr = unescapeStr(verStr,  t.beginLine, t.beginColumn) ;
+      {if ("" != null) return verStr ;}
+    throw new Error("Missing return statement in function");
+}
+
+  final public void DirectiveOld() throws ParseException {Token t ; Token t2 ; 
String iri ; String verStr ;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case PREFIX_OLD:{
       jj_consume_token(PREFIX_OLD);
@@ -142,8 +175,15 @@ String s = canonicalPrefix(t.image, t.beginLine, 
t.beginColumn) ;
 setBase(iri, t.beginLine, t.beginColumn) ;
       break;
       }
+    case VERSION_OLD:{
+      t = jj_consume_token(VERSION_OLD);
+      verStr = VersionSpecificer();
+      jj_consume_token(DOT);
+declareVersion(verStr, t.beginLine, t.beginColumn);
+      break;
+      }
     default:
-      jj_la1[4] = jj_gen;
+      jj_la1[5] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -172,7 +212,7 @@ setBase(iri, t.beginLine, t.beginColumn) ;
         break;
         }
       default:
-        jj_la1[5] = jj_gen;
+        jj_la1[6] = jj_gen;
         ;
       }
       break;
@@ -188,13 +228,13 @@ setBase(iri, t.beginLine, t.beginColumn) ;
         break;
         }
       default:
-        jj_la1[6] = jj_gen;
+        jj_la1[7] = jj_gen;
         ;
       }
       break;
       }
     default:
-      jj_la1[7] = jj_gen;
+      jj_la1[8] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -211,7 +251,7 @@ setBase(iri, t.beginLine, t.beginColumn) ;
         break;
         }
       default:
-        jj_la1[8] = jj_gen;
+        jj_la1[9] = jj_gen;
         break label_2;
       }
       jj_consume_token(SEMICOLON);
@@ -225,7 +265,7 @@ setBase(iri, t.beginLine, t.beginColumn) ;
         break;
         }
       default:
-        jj_la1[9] = jj_gen;
+        jj_la1[10] = jj_gen;
         ;
       }
     }
@@ -243,7 +283,7 @@ emitTriple(token.beginLine, token.beginColumn, s, p, o) ;
         break;
         }
       default:
-        jj_la1[10] = jj_gen;
+        jj_la1[11] = jj_gen;
         break label_3;
       }
       jj_consume_token(COMMA);
@@ -268,7 +308,7 @@ p = nRDFtype ;
       break;
       }
     default:
-      jj_la1[11] = jj_gen;
+      jj_la1[12] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -295,7 +335,7 @@ s = createURI(iri, token.beginLine, token.beginColumn) ;
       break;
       }
     default:
-      jj_la1[12] = jj_gen;
+      jj_la1[13] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -354,7 +394,7 @@ o = createURI(iri, token.beginLine, token.beginColumn) ;
       break;
       }
     default:
-      jj_la1[13] = jj_gen;
+      jj_la1[14] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -387,7 +427,7 @@ o = createURI(iri, token.beginLine, token.beginColumn) ;
       break;
       }
     default:
-      jj_la1[14] = jj_gen;
+      jj_la1[15] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -434,7 +474,7 @@ int line = t.beginLine; int column = t.beginColumn;
         break;
         }
       default:
-        jj_la1[15] = jj_gen;
+        jj_la1[16] = jj_gen;
         break label_4;
       }
 Node cell = createListNode(line, column) ;
@@ -480,7 +520,7 @@ if ( lastCell != null )
       break;
       }
     default:
-      jj_la1[16] = jj_gen;
+      jj_la1[17] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -492,13 +532,15 @@ if ( lastCell != null )
     lex = String();
 String lang = null ; String uri = null ;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
-    case BASE:
-    case PREFIX:
+    case PREFIX_OLD:
+    case BASE_OLD:
+    case VERSION_OLD:
     case DATATYPE:
     case LANG_DIR:{
       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
-      case BASE:
-      case PREFIX:
+      case PREFIX_OLD:
+      case BASE_OLD:
+      case VERSION_OLD:
       case LANG_DIR:{
         lang = LangTag();
         break;
@@ -509,14 +551,14 @@ String lang = null ; String uri = null ;
         break;
         }
       default:
-        jj_la1[17] = jj_gen;
+        jj_la1[18] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
       }
     default:
-      jj_la1[18] = jj_gen;
+      jj_la1[19] = jj_gen;
       ;
     }
 {if ("" != null) return createLiteral(lex, lang, uri, token.beginLine, 
token.beginColumn) ;}
@@ -529,13 +571,14 @@ String lang = null ; String uri = null ;
       t = jj_consume_token(LANG_DIR);
       break;
       }
-    case BASE:
-    case PREFIX:{
+    case PREFIX_OLD:
+    case BASE_OLD:
+    case VERSION_OLD:{
       t = AnyDirective();
       break;
       }
     default:
-      jj_la1[19] = jj_gen;
+      jj_la1[20] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -545,16 +588,20 @@ String lang = stripChars(t.image, 1) ; {if ("" != null) 
return lang ;}
 
   final public Token AnyDirective() throws ParseException {Token t ;
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
-    case PREFIX:{
-      t = jj_consume_token(PREFIX);
+    case PREFIX_OLD:{
+      t = jj_consume_token(PREFIX_OLD);
       break;
       }
-    case BASE:{
-      t = jj_consume_token(BASE);
+    case BASE_OLD:{
+      t = jj_consume_token(BASE_OLD);
+      break;
+      }
+    case VERSION_OLD:{
+      t = jj_consume_token(VERSION_OLD);
       break;
       }
     default:
-      jj_la1[20] = jj_gen;
+      jj_la1[21] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -562,7 +609,7 @@ String lang = stripChars(t.image, 1) ; {if ("" != null) 
return lang ;}
     throw new Error("Missing return statement in function");
 }
 
-// Turtle [133s BooleanLiteral
+// Turtle [133s] BooleanLiteral
   final public Node BooleanLiteral() throws ParseException {
     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
     case TRUE:{
@@ -576,7 +623,7 @@ String lang = stripChars(t.image, 1) ; {if ("" != null) 
return lang ;}
       break;
       }
     default:
-      jj_la1[21] = jj_gen;
+      jj_la1[22] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -607,7 +654,7 @@ lex = stripQuotes3(t.image) ;
       break;
       }
     default:
-      jj_la1[22] = jj_gen;
+      jj_la1[23] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -632,7 +679,7 @@ checkString(lex, t.beginLine, t.beginColumn) ;
       break;
       }
     default:
-      jj_la1[23] = jj_gen;
+      jj_la1[24] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -653,7 +700,7 @@ checkString(lex, t.beginLine, t.beginColumn) ;
       break;
       }
     default:
-      jj_la1[24] = jj_gen;
+      jj_la1[25] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -674,7 +721,7 @@ checkString(lex, t.beginLine, t.beginColumn) ;
       break;
       }
     default:
-      jj_la1[25] = jj_gen;
+      jj_la1[26] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -709,14 +756,14 @@ n = createURI(iriStr, token.beginLine, token.beginColumn) 
;
         break;
         }
       default:
-        jj_la1[26] = jj_gen;
+        jj_la1[27] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
       }
     default:
-      jj_la1[27] = jj_gen;
+      jj_la1[28] = jj_gen;
       ;
     }
 if ( n == null ) n = createBNode(t.beginLine, t.beginColumn) ;
@@ -735,7 +782,7 @@ if ( n == null ) n = createBNode(t.beginLine, 
t.beginColumn) ;
       break;
       }
     default:
-      jj_la1[28] = jj_gen;
+      jj_la1[29] = jj_gen;
       ;
     }
 reifId = emitTripleReifier(tok.beginLine, tok.beginColumn, reifId, s, p, o);
@@ -764,7 +811,7 @@ s = createURI(iri, token.beginLine, token.beginColumn) ;
       break;
       }
     default:
-      jj_la1[29] = jj_gen;
+      jj_la1[30] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -808,7 +855,7 @@ o = createURI(iri, token.beginLine, token.beginColumn) ;
       break;
       }
     default:
-      jj_la1[30] = jj_gen;
+      jj_la1[31] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -842,7 +889,7 @@ o = createURI(iri, token.beginLine, token.beginColumn) ;
       break;
       }
     default:
-      jj_la1[31] = jj_gen;
+      jj_la1[32] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -882,7 +929,7 @@ o = createURI(iri, token.beginLine, token.beginColumn) ;
       break;
       }
     default:
-      jj_la1[32] = jj_gen;
+      jj_la1[33] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -901,7 +948,7 @@ o = createURI(iri, token.beginLine, token.beginColumn) ;
         break;
         }
       default:
-        jj_la1[33] = jj_gen;
+        jj_la1[34] = jj_gen;
         break label_5;
       }
       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
@@ -918,7 +965,7 @@ clearReifierId();
         break;
         }
       default:
-        jj_la1[34] = jj_gen;
+        jj_la1[35] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -940,7 +987,7 @@ clearReifierId();
   public Token jj_nt;
   private int jj_ntk;
   private int jj_gen;
-  final private int[] jj_la1 = new int[35];
+  final private int[] jj_la1 = new int[36];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -950,13 +997,13 @@ clearReifierId();
           jj_la1_init_2();
        }
        private static void jj_la1_init_0() {
-          jj_la1_0 = new int[] 
{0x21e00,0x10000,0x21e00,0x1800,0x600,0x20100,0x20100,0x20000,0x0,0x20100,0x0,0x20100,0x20000,0x80e26000,0x80e06000,0x80e26000,0xe00000,0x1800,0x1800,0x1800,0x1800,0x6000,0x80000000,0x20000,0x0,0x0,0x20000,0x20000,0x0,0x20000,0x80e26000,0x20000,0x80e26000,0x0,0x0,};
+          jj_la1_0 = new int[] 
{0x87e00,0x40000,0x87e00,0x7000,0x0,0xe00,0x80100,0x80100,0x80000,0x0,0x80100,0x0,0x80100,0x80000,0x3898000,0x3818000,0x3898000,0x3800000,0xe00,0xe00,0xe00,0xe00,0x18000,0x0,0x80000,0x0,0x0,0x80000,0x80000,0x0,0x80000,0x3898000,0x80000,0x3898000,0x0,0x0,};
        }
        private static void jj_la1_init_1() {
-          jj_la1_1 = new int[] 
{0x3820288,0x0,0x3820288,0x0,0x0,0x1800000,0x1800000,0x3820288,0x400,0x1800000,0x800,0x1800000,0x3800208,0x382828f,0x7,0x382828f,0x0,0x4002000,0x4002000,0x4000000,0x0,0x0,0x7,0x1800000,0x1800000,0x2000200,0x3800200,0x3800200,0x200000,0x3820200,0x3828207,0x3800200,0x3808207,0x280000,0x280000,};
+          jj_la1_1 = new int[] 
{0xe080a20,0x0,0xe080a20,0x0,0x6,0x0,0x6000000,0x6000000,0xe080a20,0x1000,0x6000000,0x2000,0x6000000,0xe000820,0xe0a0a3e,0x1e,0xe0a0a3e,0x0,0x10008000,0x10008000,0x10000000,0x0,0x0,0x1e,0x6000000,0x6000000,0x8000800,0xe000800,0xe000800,0x800000,0xe080800,0xe0a081e,0xe000800,0xe02081e,0xa00000,0xa00000,};
        }
        private static void jj_la1_init_2() {
-          jj_la1_2 = 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,};
+          jj_la1_2 = 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,};
        }
 
   /** Constructor with InputStream. */
@@ -970,7 +1017,7 @@ clearReifierId();
         token = new Token();
         jj_ntk = -1;
         jj_gen = 0;
-        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+        for (int i = 0; i < 36; i++) jj_la1[i] = -1;
   }
 
   /** Reinitialise. */
@@ -984,7 +1031,7 @@ clearReifierId();
         token = new Token();
         jj_ntk = -1;
         jj_gen = 0;
-        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+        for (int i = 0; i < 36; i++) jj_la1[i] = -1;
   }
 
   /** Constructor. */
@@ -994,7 +1041,7 @@ clearReifierId();
         token = new Token();
         jj_ntk = -1;
         jj_gen = 0;
-        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+        for (int i = 0; i < 36; i++) jj_la1[i] = -1;
   }
 
   /** Reinitialise. */
@@ -1012,7 +1059,7 @@ clearReifierId();
         token = new Token();
         jj_ntk = -1;
         jj_gen = 0;
-        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+        for (int i = 0; i < 36; i++) jj_la1[i] = -1;
   }
 
   /** Constructor with generated Token Manager. */
@@ -1021,7 +1068,7 @@ clearReifierId();
         token = new Token();
         jj_ntk = -1;
         jj_gen = 0;
-        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+        for (int i = 0; i < 36; i++) jj_la1[i] = -1;
   }
 
   /** Reinitialise. */
@@ -1030,7 +1077,7 @@ clearReifierId();
         token = new Token();
         jj_ntk = -1;
         jj_gen = 0;
-        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+        for (int i = 0; i < 36; i++) jj_la1[i] = -1;
   }
 
   private Token jj_consume_token(int kind) throws ParseException {
@@ -1081,12 +1128,12 @@ clearReifierId();
   /** Generate ParseException. */
   public ParseException generateParseException() {
         jj_expentries.clear();
-        boolean[] la1tokens = new boolean[73];
+        boolean[] la1tokens = new boolean[75];
         if (jj_kind >= 0) {
           la1tokens[jj_kind] = true;
           jj_kind = -1;
         }
-        for (int i = 0; i < 35; i++) {
+        for (int i = 0; i < 36; i++) {
           if (jj_la1[i] == jj_gen) {
                 for (int j = 0; j < 32; j++) {
                   if ((jj_la1_0[i] & (1<<j)) != 0) {
@@ -1101,7 +1148,7 @@ clearReifierId();
                 }
           }
         }
-        for (int i = 0; i < 73; i++) {
+        for (int i = 0; i < 75; i++) {
           if (la1tokens[i]) {
                 jj_expentry = new int[1];
                 jj_expentry[0] = i;
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavaccConstants.java
 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavaccConstants.java
index f6b80ecbcd..cae13afc6a 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavaccConstants.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavaccConstants.java
@@ -39,129 +39,133 @@ public interface TurtleJavaccConstants {
   /** RegularExpression Id. */
   int BASE_OLD = 10;
   /** RegularExpression Id. */
-  int BASE = 11;
+  int VERSION_OLD = 11;
   /** RegularExpression Id. */
-  int PREFIX = 12;
+  int BASE = 12;
   /** RegularExpression Id. */
-  int TRUE = 13;
+  int PREFIX = 13;
   /** RegularExpression Id. */
-  int FALSE = 14;
+  int VERSION = 14;
   /** RegularExpression Id. */
-  int WSC = 15;
+  int TRUE = 15;
   /** RegularExpression Id. */
-  int BOM = 16;
+  int FALSE = 16;
   /** RegularExpression Id. */
-  int IRIref = 17;
+  int WSC = 17;
   /** RegularExpression Id. */
-  int PLUS = 18;
+  int BOM = 18;
   /** RegularExpression Id. */
-  int MINUS = 19;
+  int IRIref = 19;
   /** RegularExpression Id. */
-  int DIGITS = 20;
+  int PLUS = 20;
   /** RegularExpression Id. */
-  int INTEGER = 21;
+  int MINUS = 21;
   /** RegularExpression Id. */
-  int DECIMAL = 22;
+  int DIGITS = 22;
   /** RegularExpression Id. */
-  int DOUBLE = 23;
+  int INTEGER = 23;
   /** RegularExpression Id. */
-  int EXPONENT = 24;
+  int DECIMAL = 24;
   /** RegularExpression Id. */
-  int QUOTE_3D = 25;
+  int DOUBLE = 25;
   /** RegularExpression Id. */
-  int QUOTE_3S = 26;
+  int EXPONENT = 26;
   /** RegularExpression Id. */
-  int ECHAR = 27;
+  int QUOTE_3D = 27;
   /** RegularExpression Id. */
-  int UCHAR = 28;
+  int QUOTE_3S = 28;
   /** RegularExpression Id. */
-  int UCHAR4 = 29;
+  int ECHAR = 29;
   /** RegularExpression Id. */
-  int UCHAR8 = 30;
+  int UCHAR = 30;
   /** RegularExpression Id. */
-  int STRING_LITERAL1 = 31;
+  int UCHAR4 = 31;
   /** RegularExpression Id. */
-  int STRING_LITERAL2 = 32;
+  int UCHAR8 = 32;
   /** RegularExpression Id. */
-  int STRING_LITERAL_LONG1 = 33;
+  int STRING_LITERAL1 = 33;
   /** RegularExpression Id. */
-  int STRING_LITERAL_LONG2 = 34;
+  int STRING_LITERAL2 = 34;
   /** RegularExpression Id. */
-  int LPAREN = 35;
+  int STRING_LITERAL_LONG1 = 35;
   /** RegularExpression Id. */
-  int RPAREN = 36;
+  int STRING_LITERAL_LONG2 = 36;
   /** RegularExpression Id. */
-  int LBRACE = 37;
+  int LPAREN = 37;
   /** RegularExpression Id. */
-  int RBRACE = 38;
+  int RPAREN = 38;
   /** RegularExpression Id. */
-  int LBRACKET = 39;
+  int LBRACE = 39;
   /** RegularExpression Id. */
-  int RBRACKET = 40;
+  int RBRACE = 40;
   /** RegularExpression Id. */
-  int ANON = 41;
+  int LBRACKET = 41;
   /** RegularExpression Id. */
-  int SEMICOLON = 42;
+  int RBRACKET = 42;
   /** RegularExpression Id. */
-  int COMMA = 43;
+  int ANON = 43;
   /** RegularExpression Id. */
-  int DOT = 44;
+  int SEMICOLON = 44;
   /** RegularExpression Id. */
-  int DATATYPE = 45;
+  int COMMA = 45;
   /** RegularExpression Id. */
-  int AT = 46;
+  int DOT = 46;
   /** RegularExpression Id. */
-  int L_TRIPLE = 47;
+  int DATATYPE = 47;
   /** RegularExpression Id. */
-  int R_TRIPLE = 48;
+  int AT = 48;
   /** RegularExpression Id. */
-  int LT2 = 49;
+  int L_TRIPLE = 49;
   /** RegularExpression Id. */
-  int GT2 = 50;
+  int R_TRIPLE = 50;
   /** RegularExpression Id. */
-  int L_ANN = 51;
+  int LT2 = 51;
   /** RegularExpression Id. */
-  int R_ANN = 52;
+  int GT2 = 52;
   /** RegularExpression Id. */
-  int TILDE = 53;
+  int L_ANN = 53;
   /** RegularExpression Id. */
-  int VBAR = 54;
+  int R_ANN = 54;
   /** RegularExpression Id. */
-  int PNAME_NS = 55;
+  int TILDE = 55;
   /** RegularExpression Id. */
-  int PNAME_LN = 56;
+  int VBAR = 56;
   /** RegularExpression Id. */
-  int BLANK_NODE_LABEL = 57;
+  int PNAME_NS = 57;
   /** RegularExpression Id. */
-  int LANG_DIR = 58;
+  int PNAME_LN = 58;
   /** RegularExpression Id. */
-  int A2Z = 59;
+  int BLANK_NODE_LABEL = 59;
   /** RegularExpression Id. */
-  int A2ZN = 60;
+  int LANG_DIR = 60;
   /** RegularExpression Id. */
-  int SURROGATE_PAIR = 61;
+  int A2Z = 61;
   /** RegularExpression Id. */
-  int PN_CHARS_BASE = 62;
+  int A2ZN = 62;
   /** RegularExpression Id. */
-  int PN_CHARS_U = 63;
+  int SURROGATE_PAIR = 63;
   /** RegularExpression Id. */
-  int PN_CHARS = 64;
+  int PN_CHARS_BASE = 64;
   /** RegularExpression Id. */
-  int PN_PREFIX = 65;
+  int PN_CHARS_U = 65;
   /** RegularExpression Id. */
-  int PN_LOCAL = 66;
+  int PN_CHARS = 66;
   /** RegularExpression Id. */
-  int VARNAME = 67;
+  int PN_PREFIX = 67;
   /** RegularExpression Id. */
-  int PN_LOCAL_ESC = 68;
+  int PN_LOCAL = 68;
   /** RegularExpression Id. */
-  int PLX = 69;
+  int VARNAME = 69;
   /** RegularExpression Id. */
-  int HEX = 70;
+  int PN_LOCAL_ESC = 70;
   /** RegularExpression Id. */
-  int PERCENT = 71;
+  int PLX = 71;
   /** RegularExpression Id. */
-  int UNKNOWN = 72;
+  int HEX = 72;
+  /** RegularExpression Id. */
+  int PERCENT = 73;
+  /** RegularExpression Id. */
+  int UNKNOWN = 74;
 
   /** Lexical state. */
   int DEFAULT = 0;
@@ -179,8 +183,10 @@ public interface TurtleJavaccConstants {
     "\"a\"",
     "\"@prefix\"",
     "\"@base\"",
+    "\"@version\"",
     "\"base\"",
     "\"prefix\"",
+    "\"version\"",
     "\"true\"",
     "\"false\"",
     "<WSC>",
diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavaccTokenManager.java
 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavaccTokenManager.java
index d1f85309f1..c30117f43e 100644
--- 
a/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavaccTokenManager.java
+++ 
b/jena-arq/src/main/java/org/apache/jena/riot/lang/extra/javacc/TurtleJavaccTokenManager.java
@@ -56,74 +56,78 @@ private int jjMoveStringLiteralDfa0_0(){
          jjmatchedKind = 1;
          return jjMoveNfa_0(0, 0);
       case 40:
-         jjmatchedKind = 35;
+         jjmatchedKind = 37;
          return jjMoveNfa_0(0, 0);
       case 41:
-         jjmatchedKind = 36;
-         return jjMoveStringLiteralDfa1_0(0x1000000000000L);
+         jjmatchedKind = 38;
+         return jjMoveStringLiteralDfa1_0(0x4000000000000L);
       case 43:
-         jjmatchedKind = 18;
+         jjmatchedKind = 20;
          return jjMoveNfa_0(0, 0);
       case 44:
-         jjmatchedKind = 43;
+         jjmatchedKind = 45;
          return jjMoveNfa_0(0, 0);
       case 45:
-         jjmatchedKind = 19;
+         jjmatchedKind = 21;
          return jjMoveNfa_0(0, 0);
       case 46:
-         jjmatchedKind = 44;
+         jjmatchedKind = 46;
          return jjMoveNfa_0(0, 0);
       case 59:
-         jjmatchedKind = 42;
+         jjmatchedKind = 44;
          return jjMoveNfa_0(0, 0);
       case 60:
-         return jjMoveStringLiteralDfa1_0(0x2800000000000L);
+         return jjMoveStringLiteralDfa1_0(0xa000000000000L);
       case 62:
-         return jjMoveStringLiteralDfa1_0(0x4000000000000L);
+         return jjMoveStringLiteralDfa1_0(0x10000000000000L);
       case 64:
-         jjmatchedKind = 46;
-         return jjMoveStringLiteralDfa1_0(0x600L);
+         jjmatchedKind = 48;
+         return jjMoveStringLiteralDfa1_0(0xe00L);
       case 66:
-         return jjMoveStringLiteralDfa1_0(0x800L);
+         return jjMoveStringLiteralDfa1_0(0x1000L);
       case 70:
-         return jjMoveStringLiteralDfa1_0(0x4000L);
+         return jjMoveStringLiteralDfa1_0(0x10000L);
       case 80:
-         return jjMoveStringLiteralDfa1_0(0x1000L);
-      case 84:
          return jjMoveStringLiteralDfa1_0(0x2000L);
+      case 84:
+         return jjMoveStringLiteralDfa1_0(0x8000L);
+      case 86:
+         return jjMoveStringLiteralDfa1_0(0x4000L);
       case 91:
-         jjmatchedKind = 39;
+         jjmatchedKind = 41;
          return jjMoveNfa_0(0, 0);
       case 93:
-         jjmatchedKind = 40;
+         jjmatchedKind = 42;
          return jjMoveNfa_0(0, 0);
       case 94:
-         return jjMoveStringLiteralDfa1_0(0x200000000000L);
+         return jjMoveStringLiteralDfa1_0(0x800000000000L);
       case 97:
          jjmatchedKind = 8;
          return jjMoveNfa_0(0, 0);
       case 98:
-         return jjMoveStringLiteralDfa1_0(0x800L);
+         return jjMoveStringLiteralDfa1_0(0x1000L);
       case 102:
-         return jjMoveStringLiteralDfa1_0(0x4000L);
+         return jjMoveStringLiteralDfa1_0(0x10000L);
       case 112:
-         return jjMoveStringLiteralDfa1_0(0x1000L);
-      case 116:
          return jjMoveStringLiteralDfa1_0(0x2000L);
+      case 116:
+         return jjMoveStringLiteralDfa1_0(0x8000L);
+      case 118:
+         return jjMoveStringLiteralDfa1_0(0x4000L);
       case 123:
-         jjmatchedKind = 37;
-         return jjMoveStringLiteralDfa1_0(0x8000000000000L);
+         jjmatchedKind = 39;
+         return jjMoveStringLiteralDfa1_0(0x20000000000000L);
       case 124:
-         jjmatchedKind = 54;
-         return jjMoveStringLiteralDfa1_0(0x10000000000000L);
+         jjmatchedKind = 56;
+         return jjMoveStringLiteralDfa1_0(0x40000000000000L);
       case 125:
-         jjmatchedKind = 38;
+         jjmatchedKind = 40;
          return jjMoveNfa_0(0, 0);
       case 126:
-         jjmatchedKind = 53;
+         jjmatchedKind = 55;
          return jjMoveNfa_0(0, 0);
       case 65279:
-         jjmatchedKind = 16;
+         jjmatchedKind = 18;
          return jjMoveNfa_0(0, 0);
       default :
          return jjMoveNfa_0(0, 0);
@@ -137,49 +141,55 @@ private int jjMoveStringLiteralDfa1_0(long active0){
    switch(curChar)
    {
       case 60:
-         if ((active0 & 0x2000000000000L) != 0L)
+         if ((active0 & 0x8000000000000L) != 0L)
          {
-            jjmatchedKind = 49;
+            jjmatchedKind = 51;
             jjmatchedPos = 1;
          }
-         return jjMoveStringLiteralDfa2_0(active0, 0x800000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000000000L);
       case 62:
-         if ((active0 & 0x4000000000000L) != 0L)
+         if ((active0 & 0x10000000000000L) != 0L)
          {
-            jjmatchedKind = 50;
+            jjmatchedKind = 52;
             jjmatchedPos = 1;
          }
-         return jjMoveStringLiteralDfa2_0(active0, 0x1000000000000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L);
       case 65:
-         return jjMoveStringLiteralDfa2_0(active0, 0x4800L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x11000L);
+      case 69:
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000L);
       case 82:
-         return jjMoveStringLiteralDfa2_0(active0, 0x3000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0xa000L);
       case 94:
-         if ((active0 & 0x200000000000L) != 0L)
+         if ((active0 & 0x800000000000L) != 0L)
          {
-            jjmatchedKind = 45;
+            jjmatchedKind = 47;
             jjmatchedPos = 1;
          }
          break;
       case 97:
-         return jjMoveStringLiteralDfa2_0(active0, 0x4800L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x11000L);
       case 98:
          return jjMoveStringLiteralDfa2_0(active0, 0x400L);
+      case 101:
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000L);
       case 112:
          return jjMoveStringLiteralDfa2_0(active0, 0x200L);
       case 114:
-         return jjMoveStringLiteralDfa2_0(active0, 0x3000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0xa000L);
+      case 118:
+         return jjMoveStringLiteralDfa2_0(active0, 0x800L);
       case 124:
-         if ((active0 & 0x8000000000000L) != 0L)
+         if ((active0 & 0x20000000000000L) != 0L)
          {
-            jjmatchedKind = 51;
+            jjmatchedKind = 53;
             jjmatchedPos = 1;
          }
          break;
       case 125:
-         if ((active0 & 0x10000000000000L) != 0L)
+         if ((active0 & 0x40000000000000L) != 0L)
          {
-            jjmatchedKind = 52;
+            jjmatchedKind = 54;
             jjmatchedPos = 1;
          }
          break;
@@ -198,39 +208,41 @@ private int jjMoveStringLiteralDfa2_0(long old0, long 
active0){
    switch(curChar)
    {
       case 40:
-         if ((active0 & 0x800000000000L) != 0L)
+         if ((active0 & 0x2000000000000L) != 0L)
          {
-            jjmatchedKind = 47;
+            jjmatchedKind = 49;
             jjmatchedPos = 2;
          }
          break;
       case 62:
-         if ((active0 & 0x1000000000000L) != 0L)
+         if ((active0 & 0x4000000000000L) != 0L)
          {
-            jjmatchedKind = 48;
+            jjmatchedKind = 50;
             jjmatchedPos = 2;
          }
          break;
       case 69:
-         return jjMoveStringLiteralDfa3_0(active0, 0x1000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x2000L);
       case 76:
+         return jjMoveStringLiteralDfa3_0(active0, 0x10000L);
+      case 82:
          return jjMoveStringLiteralDfa3_0(active0, 0x4000L);
       case 83:
-         return jjMoveStringLiteralDfa3_0(active0, 0x800L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x1000L);
       case 85:
-         return jjMoveStringLiteralDfa3_0(active0, 0x2000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x8000L);
       case 97:
          return jjMoveStringLiteralDfa3_0(active0, 0x400L);
       case 101:
-         return jjMoveStringLiteralDfa3_0(active0, 0x1000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x2800L);
       case 108:
-         return jjMoveStringLiteralDfa3_0(active0, 0x4000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x10000L);
       case 114:
-         return jjMoveStringLiteralDfa3_0(active0, 0x200L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x4200L);
       case 115:
-         return jjMoveStringLiteralDfa3_0(active0, 0x800L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x1000L);
       case 117:
-         return jjMoveStringLiteralDfa3_0(active0, 0x2000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x8000L);
       default :
          break;
    }
@@ -246,37 +258,39 @@ private int jjMoveStringLiteralDfa3_0(long old0, long 
active0){
    switch(curChar)
    {
       case 69:
-         if ((active0 & 0x800L) != 0L)
+         if ((active0 & 0x1000L) != 0L)
          {
-            jjmatchedKind = 11;
+            jjmatchedKind = 12;
             jjmatchedPos = 3;
          }
-         else if ((active0 & 0x2000L) != 0L)
+         else if ((active0 & 0x8000L) != 0L)
          {
-            jjmatchedKind = 13;
+            jjmatchedKind = 15;
             jjmatchedPos = 3;
          }
          break;
       case 70:
-         return jjMoveStringLiteralDfa4_0(active0, 0x1000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x2000L);
       case 83:
-         return jjMoveStringLiteralDfa4_0(active0, 0x4000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x14000L);
       case 101:
-         if ((active0 & 0x800L) != 0L)
+         if ((active0 & 0x1000L) != 0L)
          {
-            jjmatchedKind = 11;
+            jjmatchedKind = 12;
             jjmatchedPos = 3;
          }
-         else if ((active0 & 0x2000L) != 0L)
+         else if ((active0 & 0x8000L) != 0L)
          {
-            jjmatchedKind = 13;
+            jjmatchedKind = 15;
             jjmatchedPos = 3;
          }
          return jjMoveStringLiteralDfa4_0(active0, 0x200L);
       case 102:
-         return jjMoveStringLiteralDfa4_0(active0, 0x1000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x2000L);
+      case 114:
+         return jjMoveStringLiteralDfa4_0(active0, 0x800L);
       case 115:
-         return jjMoveStringLiteralDfa4_0(active0, 0x4400L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x14400L);
       default :
          break;
    }
@@ -292,30 +306,32 @@ private int jjMoveStringLiteralDfa4_0(long old0, long 
active0){
    switch(curChar)
    {
       case 69:
-         if ((active0 & 0x4000L) != 0L)
+         if ((active0 & 0x10000L) != 0L)
          {
-            jjmatchedKind = 14;
+            jjmatchedKind = 16;
             jjmatchedPos = 4;
          }
          break;
       case 73:
-         return jjMoveStringLiteralDfa5_0(active0, 0x1000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x6000L);
       case 101:
          if ((active0 & 0x400L) != 0L)
          {
             jjmatchedKind = 10;
             jjmatchedPos = 4;
          }
-         else if ((active0 & 0x4000L) != 0L)
+         else if ((active0 & 0x10000L) != 0L)
          {
-            jjmatchedKind = 14;
+            jjmatchedKind = 16;
             jjmatchedPos = 4;
          }
          break;
       case 102:
          return jjMoveStringLiteralDfa5_0(active0, 0x200L);
       case 105:
-         return jjMoveStringLiteralDfa5_0(active0, 0x1000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x6000L);
+      case 115:
+         return jjMoveStringLiteralDfa5_0(active0, 0x800L);
       default :
          break;
    }
@@ -330,19 +346,23 @@ private int jjMoveStringLiteralDfa5_0(long old0, long 
active0){
    }
    switch(curChar)
    {
+      case 79:
+         return jjMoveStringLiteralDfa6_0(active0, 0x4000L);
       case 88:
-         if ((active0 & 0x1000L) != 0L)
+         if ((active0 & 0x2000L) != 0L)
          {
-            jjmatchedKind = 12;
+            jjmatchedKind = 13;
             jjmatchedPos = 5;
          }
          break;
       case 105:
-         return jjMoveStringLiteralDfa6_0(active0, 0x200L);
+         return jjMoveStringLiteralDfa6_0(active0, 0xa00L);
+      case 111:
+         return jjMoveStringLiteralDfa6_0(active0, 0x4000L);
       case 120:
-         if ((active0 & 0x1000L) != 0L)
+         if ((active0 & 0x2000L) != 0L)
          {
-            jjmatchedKind = 12;
+            jjmatchedKind = 13;
             jjmatchedPos = 5;
          }
          break;
@@ -360,6 +380,22 @@ private int jjMoveStringLiteralDfa6_0(long old0, long 
active0){
    }
    switch(curChar)
    {
+      case 78:
+         if ((active0 & 0x4000L) != 0L)
+         {
+            jjmatchedKind = 14;
+            jjmatchedPos = 6;
+         }
+         break;
+      case 110:
+         if ((active0 & 0x4000L) != 0L)
+         {
+            jjmatchedKind = 14;
+            jjmatchedPos = 6;
+         }
+         break;
+      case 111:
+         return jjMoveStringLiteralDfa7_0(active0, 0x800L);
       case 120:
          if ((active0 & 0x200L) != 0L)
          {
@@ -372,6 +408,27 @@ private int jjMoveStringLiteralDfa6_0(long old0, long 
active0){
    }
    return jjMoveNfa_0(0, 6);
 }
+private int jjMoveStringLiteralDfa7_0(long old0, long active0){
+   if (((active0 &= old0)) == 0L)
+      return jjMoveNfa_0(0, 6);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(0, 6);
+   }
+   switch(curChar)
+   {
+      case 110:
+         if ((active0 & 0x800L) != 0L)
+         {
+            jjmatchedKind = 11;
+            jjmatchedPos = 7;
+         }
+         break;
+      default :
+         break;
+   }
+   return jjMoveNfa_0(0, 7);
+}
 static final long[] jjbitVec0 = {
    0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 
0xffffffffffffffffL
 };
@@ -442,16 +499,16 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 0:
                   if ((0x3ff000000000000L & l) != 0L)
                   {
-                     if (kind > 21)
-                        kind = 21;
+                     if (kind > 23)
+                        kind = 23;
                      { jjCheckNAddStates(0, 6); }
                   }
                   else if ((0x280000000000L & l) != 0L)
                      { jjCheckNAddStates(7, 11); }
                   else if (curChar == 58)
                   {
-                     if (kind > 55)
-                        kind = 55;
+                     if (kind > 57)
+                        kind = 57;
                      { jjCheckNAddStates(12, 15); }
                   }
                   else if (curChar == 46)
@@ -501,8 +558,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(16, 18); }
                   break;
                case 7:
-                  if (curChar == 62 && kind > 17)
-                     kind = 17;
+                  if (curChar == 62 && kind > 19)
+                     kind = 19;
                   break;
                case 10:
                   if ((0x3ff000000000000L & l) != 0L)
@@ -554,8 +611,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(25, 27); }
                   break;
                case 24:
-                  if (curChar == 39 && kind > 31)
-                     kind = 31;
+                  if (curChar == 39 && kind > 33)
+                     kind = 33;
                   break;
                case 26:
                   if ((0x8400000000L & l) != 0L)
@@ -611,8 +668,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(22, 24); }
                   break;
                case 42:
-                  if (curChar == 34 && kind > 32)
-                     kind = 32;
+                  if (curChar == 34 && kind > 34)
+                     kind = 34;
                   break;
                case 44:
                   if ((0x8400000000L & l) != 0L)
@@ -722,8 +779,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 77;
                   break;
                case 78:
-                  if (curChar == 39 && kind > 33)
-                     kind = 33;
+                  if (curChar == 39 && kind > 35)
+                     kind = 35;
                   break;
                case 79:
                   if (curChar == 39)
@@ -800,8 +857,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 101;
                   break;
                case 102:
-                  if (curChar == 34 && kind > 34)
-                     kind = 34;
+                  if (curChar == 34 && kind > 36)
+                     kind = 36;
                   break;
                case 103:
                   if (curChar == 34)
@@ -846,8 +903,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 115:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 57)
-                     kind = 57;
+                  if (kind > 59)
+                     kind = 59;
                   { jjCheckNAddStates(51, 53); }
                   break;
                case 116:
@@ -855,8 +912,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(51, 53); }
                   break;
                case 117:
-                  if ((0x3ff200000000000L & l) != 0L && kind > 57)
-                     kind = 57;
+                  if ((0x3ff200000000000L & l) != 0L && kind > 59)
+                     kind = 59;
                   break;
                case 126:
                   if (curChar == 45)
@@ -865,15 +922,15 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 127:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 58)
-                     kind = 58;
+                  if (kind > 60)
+                     kind = 60;
                   { jjCheckNAddStates(54, 56); }
                   break;
                case 128:
                   if (curChar != 45)
                      break;
-                  if (kind > 58)
-                     kind = 58;
+                  if (kind > 60)
+                     kind = 60;
                   jjstateSet[jjnewStateCnt++] = 129;
                   break;
                case 130:
@@ -887,8 +944,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 132:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 21)
-                     kind = 21;
+                  if (kind > 23)
+                     kind = 23;
                   { jjCheckNAdd(132); }
                   break;
                case 133:
@@ -902,8 +959,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 135:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 22)
-                     kind = 22;
+                  if (kind > 24)
+                     kind = 24;
                   { jjCheckNAdd(135); }
                   break;
                case 136:
@@ -921,8 +978,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 140:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 23)
-                     kind = 23;
+                  if (kind > 25)
+                     kind = 25;
                   { jjCheckNAdd(140); }
                   break;
                case 141:
@@ -948,8 +1005,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 147:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 23)
-                     kind = 23;
+                  if (kind > 25)
+                     kind = 25;
                   { jjCheckNAdd(147); }
                   break;
                case 148:
@@ -963,15 +1020,15 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 151:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 23)
-                     kind = 23;
+                  if (kind > 25)
+                     kind = 25;
                   { jjCheckNAdd(151); }
                   break;
                case 152:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 21)
-                     kind = 21;
+                  if (kind > 23)
+                     kind = 23;
                   { jjCheckNAddStates(0, 6); }
                   break;
                case 153:
@@ -987,8 +1044,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 157;
                   break;
                case 157:
-                  if (curChar == 58 && kind > 55)
-                     kind = 55;
+                  if (curChar == 58 && kind > 57)
+                     kind = 57;
                   break;
                case 161:
                   if ((0x3ff600000000000L & l) != 0L)
@@ -1005,8 +1062,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 164:
                   if ((0x7ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 56)
-                     kind = 56;
+                  if (kind > 58)
+                     kind = 58;
                   { jjCheckNAddStates(67, 71); }
                   break;
                case 165:
@@ -1014,8 +1071,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(67, 71); }
                   break;
                case 166:
-                  if ((0x7ff200000000000L & l) != 0L && kind > 56)
-                     kind = 56;
+                  if ((0x7ff200000000000L & l) != 0L && kind > 58)
+                     kind = 58;
                   break;
                case 170:
                   if ((0xa800fffa00000000L & l) != 0L)
@@ -1038,18 +1095,18 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 175;
                   break;
                case 175:
-                  if ((0x3ff000000000000L & l) != 0L && kind > 56)
-                     kind = 56;
+                  if ((0x3ff000000000000L & l) != 0L && kind > 58)
+                     kind = 58;
                   break;
                case 176:
-                  if ((0xa800fffa00000000L & l) != 0L && kind > 56)
-                     kind = 56;
+                  if ((0xa800fffa00000000L & l) != 0L && kind > 58)
+                     kind = 58;
                   break;
                case 179:
                   if ((0xa800fffa00000000L & l) == 0L)
                      break;
-                  if (kind > 56)
-                     kind = 56;
+                  if (kind > 58)
+                     kind = 58;
                   { jjCheckNAddStates(67, 71); }
                   break;
                case 180:
@@ -1063,15 +1120,15 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 182:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 56)
-                     kind = 56;
+                  if (kind > 58)
+                     kind = 58;
                   { jjCheckNAddStates(67, 71); }
                   break;
                case 191:
                   if (curChar != 58)
                      break;
-                  if (kind > 55)
-                     kind = 55;
+                  if (kind > 57)
+                     kind = 57;
                   { jjCheckNAddStates(12, 15); }
                   break;
                default : break;
@@ -1409,14 +1466,14 @@ private int jjMoveNfa_0(int startState, int curPos)
                   { jjCheckNAddStates(40, 45); }
                   break;
                case 111:
-                  if (curChar == 93 && kind > 41)
-                     kind = 41;
+                  if (curChar == 93 && kind > 43)
+                     kind = 43;
                   break;
                case 115:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 57)
-                     kind = 57;
+                  if (kind > 59)
+                     kind = 59;
                   { jjCheckNAddStates(51, 53); }
                   break;
                case 116:
@@ -1424,8 +1481,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(51, 53); }
                   break;
                case 117:
-                  if ((0x7fffffe87fffffeL & l) != 0L && kind > 57)
-                     kind = 57;
+                  if ((0x7fffffe87fffffeL & l) != 0L && kind > 59)
+                     kind = 59;
                   break;
                case 123:
                   if (curChar == 95)
@@ -1438,22 +1495,22 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 125:
                   if ((0x7fffffe07fffffeL & l) == 0L)
                      break;
-                  if (kind > 58)
-                     kind = 58;
+                  if (kind > 60)
+                     kind = 60;
                   { jjCheckNAddStates(96, 98); }
                   break;
                case 127:
                   if ((0x7fffffe07fffffeL & l) == 0L)
                      break;
-                  if (kind > 58)
-                     kind = 58;
+                  if (kind > 60)
+                     kind = 60;
                   { jjCheckNAddStates(54, 56); }
                   break;
                case 129:
                   if ((0x7fffffe07fffffeL & l) == 0L)
                      break;
-                  if (kind > 58)
-                     kind = 58;
+                  if (kind > 60)
+                     kind = 60;
                   jjstateSet[jjnewStateCnt++] = 129;
                   break;
                case 138:
@@ -1491,8 +1548,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 164:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 56)
-                     kind = 56;
+                  if (kind > 58)
+                     kind = 58;
                   { jjCheckNAddStates(67, 71); }
                   break;
                case 165:
@@ -1500,8 +1557,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(67, 71); }
                   break;
                case 166:
-                  if ((0x7fffffe87fffffeL & l) != 0L && kind > 56)
-                     kind = 56;
+                  if ((0x7fffffe87fffffeL & l) != 0L && kind > 58)
+                     kind = 58;
                   break;
                case 169:
                   if (curChar == 92)
@@ -1524,12 +1581,12 @@ private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 175;
                   break;
                case 175:
-                  if ((0x7e0000007eL & l) != 0L && kind > 56)
-                     kind = 56;
+                  if ((0x7e0000007eL & l) != 0L && kind > 58)
+                     kind = 58;
                   break;
                case 176:
-                  if ((0x4000000080000001L & l) != 0L && kind > 56)
-                     kind = 56;
+                  if ((0x4000000080000001L & l) != 0L && kind > 58)
+                     kind = 58;
                   break;
                case 178:
                   if (curChar == 92)
@@ -1538,8 +1595,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 179:
                   if ((0x4000000080000001L & l) == 0L)
                      break;
-                  if (kind > 56)
-                     kind = 56;
+                  if (kind > 58)
+                     kind = 58;
                   { jjCheckNAddStates(67, 71); }
                   break;
                case 181:
@@ -1549,8 +1606,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 182:
                   if ((0x7e0000007eL & l) == 0L)
                      break;
-                  if (kind > 56)
-                     kind = 56;
+                  if (kind > 58)
+                     kind = 58;
                   { jjCheckNAddStates(67, 71); }
                   break;
                default : break;
@@ -1608,8 +1665,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 115:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                      break;
-                  if (kind > 57)
-                     kind = 57;
+                  if (kind > 59)
+                     kind = 59;
                   { jjCheckNAddStates(51, 53); }
                   break;
                case 116:
@@ -1617,8 +1674,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(51, 53); }
                   break;
                case 117:
-                  if (jjCanMove_2(hiByte, i1, i2, l1, l2) && kind > 57)
-                     kind = 57;
+                  if (jjCanMove_2(hiByte, i1, i2, l1, l2) && kind > 59)
+                     kind = 59;
                   break;
                case 118:
                   if (jjCanMove_3(hiByte, i1, i2, l1, l2))
@@ -1629,8 +1686,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(51, 53); }
                   break;
                case 120:
-                  if (jjCanMove_5(hiByte, i1, i2, l1, l2) && kind > 57)
-                     kind = 57;
+                  if (jjCanMove_5(hiByte, i1, i2, l1, l2) && kind > 59)
+                     kind = 59;
                   break;
                case 121:
                   if (jjCanMove_6(hiByte, i1, i2, l1, l2))
@@ -1639,8 +1696,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 122:
                   if (!jjCanMove_7(hiByte, i1, i2, l1, l2))
                      break;
-                  if (kind > 57)
-                     kind = 57;
+                  if (kind > 59)
+                     kind = 59;
                   { jjCheckNAddStates(51, 53); }
                   break;
                case 154:
@@ -1678,8 +1735,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 164:
                   if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                      break;
-                  if (kind > 56)
-                     kind = 56;
+                  if (kind > 58)
+                     kind = 58;
                   { jjCheckNAddStates(67, 71); }
                   break;
                case 165:
@@ -1687,8 +1744,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(67, 71); }
                   break;
                case 166:
-                  if (jjCanMove_2(hiByte, i1, i2, l1, l2) && kind > 56)
-                     kind = 56;
+                  if (jjCanMove_2(hiByte, i1, i2, l1, l2) && kind > 58)
+                     kind = 58;
                   break;
                case 167:
                   if (jjCanMove_11(hiByte, i1, i2, l1, l2))
@@ -1699,8 +1756,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                      { jjCheckNAddStates(67, 71); }
                   break;
                case 177:
-                  if (jjCanMove_13(hiByte, i1, i2, l1, l2) && kind > 56)
-                     kind = 56;
+                  if (jjCanMove_13(hiByte, i1, i2, l1, l2) && kind > 58)
+                     kind = 58;
                   break;
                case 183:
                   if (jjCanMove_14(hiByte, i1, i2, l1, l2))
@@ -1709,8 +1766,8 @@ private int jjMoveNfa_0(int startState, int curPos)
                case 184:
                   if (!jjCanMove_15(hiByte, i1, i2, l1, l2))
                      break;
-                  if (kind > 56)
-                     kind = 56;
+                  if (kind > 58)
+                     kind = 58;
                   { jjCheckNAddStates(67, 71); }
                   break;
                case 185:
@@ -1777,12 +1834,13 @@ private int jjMoveNfa_0(int startState, int curPos)
 /** Token literal values. */
 public static final String[] jjstrLiteralImages = {
 "", null, null, null, null, null, null, null, "\141", 
-"\100\160\162\145\146\151\170", "\100\142\141\163\145", null, null, null, 
null, null, "\ufeff", null, "\53", 
-"\55", null, null, null, null, null, null, null, null, null, null, null, null, 
null, 
-null, null, "\50", "\51", "\173", "\175", "\133", "\135", null, "\73", "\54", 
"\56", 
-"\136\136", "\100", "\74\74\50", "\51\76\76", "\74\74", "\76\76", "\173\174", 
"\174\175", 
-"\176", "\174", null, null, null, null, null, null, null, null, null, null, 
null, null, 
-null, null, null, null, null, null, };
+"\100\160\162\145\146\151\170", "\100\142\141\163\145", 
"\100\166\145\162\163\151\157\156", null, null, null, 
+null, null, null, "\ufeff", null, "\53", "\55", null, null, null, null, null, 
null, 
+null, null, null, null, null, null, null, null, null, "\50", "\51", "\173", 
"\175", 
+"\133", "\135", null, "\73", "\54", "\56", "\136\136", "\100", "\74\74\50", 
+"\51\76\76", "\74\74", "\76\76", "\173\174", "\174\175", "\176", "\174", null, 
null, null, 
+null, null, null, null, null, null, null, null, null, null, null, null, null, 
null, 
+null, };
 protected Token jjFillToken()
 {
    final Token t;
@@ -2265,10 +2323,10 @@ public static final String[] lexStateNames = {
 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, 
 };
 static final long[] jjtoToken = {
-   0x7ffffff80ef7f01L, 0x0L, 
+   0x1ffffffe03bdff01L, 0x0L, 
 };
 static final long[] jjtoSkip = {
    0xbeL, 0x0L, 

Reply via email to