Merge pull request #997 from afs/rdf-star-expr

JENA-2101: Expression use of <<>>
diff --git a/jena-arq/Grammar/arq.jj b/jena-arq/Grammar/arq.jj
index f3fa3fd..b61188b 100644
--- a/jena-arq/Grammar/arq.jj
+++ b/jena-arq/Grammar/arq.jj
@@ -1361,9 +1361,28 @@
   | n = NumericLiteral() { return asExpr(n) ; }
   | n = BooleanLiteral() { return asExpr(n) ; }
   | n = Var() { return asExpr(n) ; }
-  | n = TripleTerm() { return asExpr(n) ; }
+  | n = ExprTripleTerm() { return asExpr(n) ; }
   )
 }
+Node ExprVarOrTerm() : { Node n; String s;}
+{
+  ( s = iri() { n = createNode(s); }
+  | n = RDFLiteral()
+  | n = NumericLiteral()
+  | n = BooleanLiteral()
+  | n = Var()
+  )
+  { return n; }
+}
+Node ExprTripleTerm() : { Token t ; Node s,p,o,n; }
+{ t = <LT2>
+  s = ExprVarOrTerm()
+  p = Verb()
+  o = ExprVarOrTerm()
+  { n = createTripleTerm(s, p, o, t.beginLine, t.beginColumn); }
+  <GT2>
+  { return n; }
+}
 Expr BrackettedExpression() : { Expr expr ; }
 {
     <LPAREN> expr = Expression() <RPAREN> { return expr ; }
diff --git a/jena-arq/Grammar/main.jj b/jena-arq/Grammar/main.jj
index ab39cd9..5281fb5 100644
--- a/jena-arq/Grammar/main.jj
+++ b/jena-arq/Grammar/main.jj
@@ -1855,6 +1855,7 @@
   | expr = PrimaryExpression() { return expr ; }
 }
 
+#ifndef ARQ
 Expr PrimaryExpression() : { Expr expr ; Node n ; }
 {
   ( expr = BrackettedExpression() { return expr ; }
@@ -1866,19 +1867,53 @@
   | n = NumericLiteral()  { return asExpr(n) ; }
   | n = BooleanLiteral()  { return asExpr(n) ; }
   | n = Var()             { return asExpr(n) ; }
-#ifdef ARQ
-// Not necessary. In expressions, use "TRIPLE(?s,?p,?o)"
-  | n = TripleTerm()      { return asExpr(n) ; }
+  )
+}
 #endif
 #ifdef ARQ
+Expr PrimaryExpression() : { Expr expr ; Node n ; }
+{
+  ( expr = BrackettedExpression() { return expr ; }
+  | expr = BuiltInCall()   { return expr ; }  
+  | expr = iriOrFunction() { return expr ; }
+// NOT  | n = VarOrTerm()    { return asExpr(n) ; }
+// Because of iriOrFunction
+// Can't use iri() here
+  | n = RDFLiteral()      { return asExpr(n) ; }
+  | n = NumericLiteral()  { return asExpr(n) ; }
+  | n = BooleanLiteral()  { return asExpr(n) ; }
+  | n = Var()             { return asExpr(n) ; }
+  | n = ExprTripleTerm()  { return asExpr(n) ; }
 // and not SPARQL 11
 // needs checking.
 // Use this for ?var(args)
 //  |  expr = VarOrFunction()  { return expr ; }
-#endif
   )
 }
 
+Node ExprVarOrTerm() : { Node n; String s;}
+{
+  ( s = iri() { n = createNode(s); }
+  | n = RDFLiteral()
+  | n = NumericLiteral()
+  | n = BooleanLiteral()
+  | n = Var()
+  )
+  { return n; }
+}
+
+// Embedded triple in expressions
+Node ExprTripleTerm() : { Token t ; Node s,p,o,n; }
+{ t = <LT2>
+  s = ExprVarOrTerm()
+  p = Verb()
+  o = ExprVarOrTerm()
+  { n = createTripleTerm(s, p, o, t.beginLine, t.beginColumn); }
+  <GT2>
+  { return n; }
+}
+#endif
+
 Expr BrackettedExpression() : { Expr expr ; }
 {
     <LPAREN> expr = Expression() <RPAREN>  { return expr ; }
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
index 36c3fa3..c3d6eb6 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/arq/ARQParser.java
@@ -4968,7 +4968,7 @@
       break;
       }
     case LT2:{
-      n = TripleTerm();
+      n = ExprTripleTerm();
 {if ("" != null) return asExpr(n) ;}
       break;
       }
@@ -4980,6 +4980,64 @@
     throw new Error("Missing return statement in function");
   }
 
+  final public Node ExprVarOrTerm() throws ParseException {Node n; String s;
+    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
+    case IRIref:
+    case PNAME_NS:
+    case PNAME_LN:{
+      s = iri();
+n = createNode(s);
+      break;
+      }
+    case STRING_LITERAL1:
+    case STRING_LITERAL2:
+    case STRING_LITERAL_LONG1:
+    case STRING_LITERAL_LONG2:{
+      n = RDFLiteral();
+      break;
+      }
+    case INTEGER:
+    case DECIMAL:
+    case DOUBLE:
+    case INTEGER_POSITIVE:
+    case DECIMAL_POSITIVE:
+    case DOUBLE_POSITIVE:
+    case INTEGER_NEGATIVE:
+    case DECIMAL_NEGATIVE:
+    case DOUBLE_NEGATIVE:{
+      n = NumericLiteral();
+      break;
+      }
+    case TRUE:
+    case FALSE:{
+      n = BooleanLiteral();
+      break;
+      }
+    case VAR1:
+    case VAR2:{
+      n = Var();
+      break;
+      }
+    default:
+      jj_la1[153] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+{if ("" != null) return n;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Node ExprTripleTerm() throws ParseException {Token t ; Node s,p,o,n;
+    t = jj_consume_token(LT2);
+    s = ExprVarOrTerm();
+    p = Verb();
+    o = ExprVarOrTerm();
+n = createTripleTerm(s, p, o, t.beginLine, t.beginColumn);
+    jj_consume_token(GT2);
+{if ("" != null) return n;}
+    throw new Error("Missing return statement in function");
+  }
+
   final public Expr BrackettedExpression() throws ParseException {Expr expr ;
     jj_consume_token(LPAREN);
     expr = Expression();
@@ -5086,7 +5144,7 @@
         break;
         }
       default:
-        jj_la1[153] = jj_gen;
+        jj_la1[154] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -5376,7 +5434,7 @@
           break;
           }
         default:
-          jj_la1[154] = jj_gen;
+          jj_la1[155] = jj_gen;
           break label_42;
         }
         jj_consume_token(COMMA);
@@ -5529,7 +5587,7 @@
       break;
       }
     default:
-      jj_la1[155] = jj_gen;
+      jj_la1[156] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -5549,7 +5607,7 @@
       break;
       }
     default:
-      jj_la1[156] = jj_gen;
+      jj_la1[157] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -5570,7 +5628,7 @@
       break;
       }
     default:
-      jj_la1[157] = jj_gen;
+      jj_la1[158] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -5593,7 +5651,7 @@
       break;
       }
     default:
-      jj_la1[158] = jj_gen;
+      jj_la1[159] = jj_gen;
       ;
     }
     jj_consume_token(RPAREN);
@@ -5633,7 +5691,7 @@
         break;
         }
       default:
-        jj_la1[159] = jj_gen;
+        jj_la1[160] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
@@ -5747,7 +5805,7 @@
         break;
         }
       default:
-        jj_la1[160] = jj_gen;
+        jj_la1[161] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -5766,7 +5824,7 @@
         break;
         }
       default:
-        jj_la1[161] = jj_gen;
+        jj_la1[162] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5784,7 +5842,7 @@
         break;
         }
       default:
-        jj_la1[162] = jj_gen;
+        jj_la1[163] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5802,7 +5860,7 @@
         break;
         }
       default:
-        jj_la1[163] = jj_gen;
+        jj_la1[164] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5820,7 +5878,7 @@
         break;
         }
       default:
-        jj_la1[164] = jj_gen;
+        jj_la1[165] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5838,7 +5896,7 @@
         break;
         }
       default:
-        jj_la1[165] = jj_gen;
+        jj_la1[166] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5856,7 +5914,7 @@
         break;
         }
       default:
-        jj_la1[166] = jj_gen;
+        jj_la1[167] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5874,7 +5932,7 @@
         break;
         }
       default:
-        jj_la1[167] = jj_gen;
+        jj_la1[168] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5892,7 +5950,7 @@
         break;
         }
       default:
-        jj_la1[168] = jj_gen;
+        jj_la1[169] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5913,7 +5971,7 @@
             break;
             }
           default:
-            jj_la1[169] = jj_gen;
+            jj_la1[170] = jj_gen;
             ;
           }
         } else {
@@ -5927,7 +5985,7 @@
             break;
             }
           default:
-            jj_la1[170] = jj_gen;
+            jj_la1[171] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
@@ -5935,7 +5993,7 @@
         break;
         }
       default:
-        jj_la1[171] = jj_gen;
+        jj_la1[172] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
@@ -5952,7 +6010,7 @@
         break;
         }
       default:
-        jj_la1[172] = jj_gen;
+        jj_la1[173] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5970,7 +6028,7 @@
         break;
         }
       default:
-        jj_la1[173] = jj_gen;
+        jj_la1[174] = jj_gen;
         ;
       }
       expr = Expression();
@@ -5988,7 +6046,7 @@
         break;
         }
       default:
-        jj_la1[174] = jj_gen;
+        jj_la1[175] = jj_gen;
         ;
       }
       expr = Expression();
@@ -6006,7 +6064,7 @@
         break;
         }
       default:
-        jj_la1[175] = jj_gen;
+        jj_la1[176] = jj_gen;
         ;
       }
       expr = Expression();
@@ -6024,7 +6082,7 @@
         break;
         }
       default:
-        jj_la1[176] = jj_gen;
+        jj_la1[177] = jj_gen;
         ;
       }
       expr = Expression();
@@ -6042,7 +6100,7 @@
         break;
         }
       default:
-        jj_la1[177] = jj_gen;
+        jj_la1[178] = jj_gen;
         ;
       }
       expr = Expression();
@@ -6060,7 +6118,7 @@
       break;
       }
     default:
-      jj_la1[178] = jj_gen;
+      jj_la1[179] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -6083,7 +6141,7 @@
       break;
       }
     default:
-      jj_la1[179] = jj_gen;
+      jj_la1[180] = jj_gen;
       ;
     }
 if ( a == null )
@@ -6117,14 +6175,14 @@
         break;
         }
       default:
-        jj_la1[180] = jj_gen;
+        jj_la1[181] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
       break;
       }
     default:
-      jj_la1[181] = jj_gen;
+      jj_la1[182] = jj_gen;
       ;
     }
 {if ("" != null) return createLiteral(lex, lang, uri) ;}
@@ -6152,7 +6210,7 @@
       break;
       }
     default:
-      jj_la1[182] = jj_gen;
+      jj_la1[183] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -6178,7 +6236,7 @@
       break;
       }
     default:
-      jj_la1[183] = jj_gen;
+      jj_la1[184] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -6203,7 +6261,7 @@
       break;
       }
     default:
-      jj_la1[184] = jj_gen;
+      jj_la1[185] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -6228,7 +6286,7 @@
       break;
       }
     default:
-      jj_la1[185] = jj_gen;
+      jj_la1[186] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -6248,7 +6306,7 @@
       break;
       }
     default:
-      jj_la1[186] = jj_gen;
+      jj_la1[187] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -6278,7 +6336,7 @@
       break;
       }
     default:
-      jj_la1[187] = jj_gen;
+      jj_la1[188] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -6302,7 +6360,7 @@
       break;
       }
     default:
-      jj_la1[188] = jj_gen;
+      jj_la1[189] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -6322,7 +6380,7 @@
       break;
       }
     default:
-      jj_la1[189] = jj_gen;
+      jj_la1[190] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -6342,7 +6400,7 @@
       break;
       }
     default:
-      jj_la1[190] = jj_gen;
+      jj_la1[191] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -6395,20 +6453,6 @@
     finally { jj_save(4, xla); }
   }
 
-  private boolean jj_3R_119()
- {
-    if (jj_scan_token(NOT)) return true;
-    if (jj_scan_token(EXISTS)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_118()
- {
-    if (jj_scan_token(EXISTS)) return true;
-    if (jj_3R_141()) return true;
-    return false;
-  }
-
   private boolean jj_3R_116()
  {
     if (jj_scan_token(REPLACE)) return true;
@@ -6416,6 +6460,27 @@
     return false;
   }
 
+  private boolean jj_3R_115()
+ {
+    if (jj_scan_token(SUBSTR)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_117()
+ {
+    if (jj_scan_token(REGEX)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_107()
+ {
+    if (jj_scan_token(OBJECT)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
   private boolean jj_3_2()
  {
     if (jj_scan_token(SEMICOLON)) return true;
@@ -6465,33 +6530,6 @@
     return false;
   }
 
-  private boolean jj_3R_115()
- {
-    if (jj_scan_token(SUBSTR)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_154()
- {
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_117()
- {
-    if (jj_scan_token(REGEX)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_107()
- {
-    if (jj_scan_token(OBJECT)) return true;
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
   private boolean jj_3R_106()
  {
     if (jj_scan_token(PREDICATE)) return true;
@@ -6513,6 +6551,12 @@
     return false;
   }
 
+  private boolean jj_3R_154()
+ {
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
   private boolean jj_3R_103()
  {
     if (jj_scan_token(IS_TRIPLE)) return true;
@@ -6538,12 +6582,6 @@
     return false;
   }
 
-  private boolean jj_3R_155()
- {
-    if (jj_scan_token(LBRACKET)) return true;
-    return false;
-  }
-
   private boolean jj_3R_99()
  {
     if (jj_scan_token(IS_NUMERIC)) return true;
@@ -6551,12 +6589,6 @@
     return false;
   }
 
-  private boolean jj_3R_148()
- {
-    if (jj_3R_155()) return true;
-    return false;
-  }
-
   private boolean jj_3R_98()
  {
     if (jj_scan_token(IS_LITERAL)) return true;
@@ -6564,23 +6596,6 @@
     return false;
   }
 
-  private boolean jj_3R_123()
- {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_3R_147()) {
-    jj_scanpos = xsp;
-    if (jj_3R_148()) return true;
-    }
-    return false;
-  }
-
-  private boolean jj_3R_147()
- {
-    if (jj_3R_154()) return true;
-    return false;
-  }
-
   private boolean jj_3R_97()
  {
     if (jj_scan_token(IS_BLANK)) return true;
@@ -6623,6 +6638,12 @@
     return false;
   }
 
+  private boolean jj_3R_155()
+ {
+    if (jj_scan_token(LBRACKET)) return true;
+    return false;
+  }
+
   private boolean jj_3R_91()
  {
     if (jj_scan_token(IF)) return true;
@@ -6630,6 +6651,29 @@
     return false;
   }
 
+  private boolean jj_3R_148()
+ {
+    if (jj_3R_155()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_123()
+ {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_147()) {
+    jj_scanpos = xsp;
+    if (jj_3R_148()) return true;
+    }
+    return false;
+  }
+
+  private boolean jj_3R_147()
+ {
+    if (jj_3R_154()) return true;
+    return false;
+  }
+
   private boolean jj_3R_90()
  {
     if (jj_scan_token(CALL)) return true;
@@ -7150,12 +7194,24 @@
     return false;
   }
 
+  private boolean jj_3R_150()
+ {
+    if (jj_scan_token(IRIref)) return true;
+    return false;
+  }
+
   private boolean jj_3R_141()
  {
     if (jj_scan_token(LBRACE)) return true;
     return false;
   }
 
+  private boolean jj_3R_178()
+ {
+    if (jj_scan_token(ANON)) return true;
+    return false;
+  }
+
   private boolean jj_3_3()
  {
     if (jj_scan_token(DOT)) return true;
@@ -7163,18 +7219,6 @@
     return false;
   }
 
-  private boolean jj_3R_150()
- {
-    if (jj_scan_token(IRIref)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_178()
- {
-    if (jj_scan_token(ANON)) return true;
-    return false;
-  }
-
   private boolean jj_3R_168()
  {
     Token xsp;
@@ -7334,12 +7378,6 @@
     return false;
   }
 
-  private boolean jj_3_1()
- {
-    if (jj_3R_43()) return true;
-    return false;
-  }
-
   private boolean jj_3R_191()
  {
     if (jj_scan_token(DOUBLE_POSITIVE)) return true;
@@ -7422,9 +7460,9 @@
     return false;
   }
 
-  private boolean jj_3R_163()
+  private boolean jj_3_1()
  {
-    if (jj_scan_token(NIL)) return true;
+    if (jj_3R_43()) return true;
     return false;
   }
 
@@ -7442,6 +7480,18 @@
     return false;
   }
 
+  private boolean jj_3R_165()
+ {
+    if (jj_3R_171()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_163()
+ {
+    if (jj_scan_token(NIL)) return true;
+    return false;
+  }
+
   private boolean jj_3R_162()
  {
     if (jj_3R_168()) return true;
@@ -7542,12 +7592,6 @@
     return false;
   }
 
-  private boolean jj_3R_165()
- {
-    if (jj_3R_171()) return true;
-    return false;
-  }
-
   private boolean jj_3R_143()
  {
     if (jj_scan_token(PREFIX)) return true;
@@ -7580,6 +7624,13 @@
     return false;
   }
 
+  private boolean jj_3R_139()
+ {
+    if (jj_scan_token(AGG)) return true;
+    if (jj_3R_149()) return true;
+    return false;
+  }
+
   private boolean jj_3R_44()
  {
     Token xsp;
@@ -7590,30 +7641,6 @@
     return false;
   }
 
-  private boolean jj_3R_140()
- {
-    if (jj_scan_token(LPAREN)) return true;
-    return false;
-  }
-
-  private boolean jj_3R_114()
- {
-    Token xsp;
-    xsp = jj_scanpos;
-    if (jj_scan_token(181)) {
-    jj_scanpos = xsp;
-    if (jj_3R_140()) return true;
-    }
-    return false;
-  }
-
-  private boolean jj_3R_139()
- {
-    if (jj_scan_token(AGG)) return true;
-    if (jj_3R_149()) return true;
-    return false;
-  }
-
   private boolean jj_3R_138()
  {
     if (jj_scan_token(VAR_POP)) return true;
@@ -7621,12 +7648,6 @@
     return false;
   }
 
-  private boolean jj_3R_151()
- {
-    if (jj_scan_token(LT2)) return true;
-    return false;
-  }
-
   private boolean jj_3R_137()
  {
     if (jj_scan_token(VAR_SAMP)) return true;
@@ -7634,6 +7655,12 @@
     return false;
   }
 
+  private boolean jj_3R_140()
+ {
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
   private boolean jj_3R_136()
  {
     if (jj_scan_token(VARIANCE)) return true;
@@ -7641,12 +7668,6 @@
     return false;
   }
 
-  private boolean jj_3R_146()
- {
-    if (jj_3R_153()) return true;
-    return false;
-  }
-
   private boolean jj_3R_135()
  {
     if (jj_scan_token(STDEV_POP)) return true;
@@ -7654,18 +7675,6 @@
     return false;
   }
 
-  private boolean jj_3R_145()
- {
-    if (jj_3R_152()) return true;
-    return false;
-  }
-
-  private boolean jj_3R_144()
- {
-    if (jj_3R_151()) return true;
-    return false;
-  }
-
   private boolean jj_3R_134()
  {
     if (jj_scan_token(STDEV_SAMP)) return true;
@@ -7673,16 +7682,13 @@
     return false;
   }
 
-  private boolean jj_3R_122()
+  private boolean jj_3R_114()
  {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_144()) {
+    if (jj_scan_token(181)) {
     jj_scanpos = xsp;
-    if (jj_3R_145()) {
-    jj_scanpos = xsp;
-    if (jj_3R_146()) return true;
-    }
+    if (jj_3R_140()) return true;
     }
     return false;
   }
@@ -7701,6 +7707,12 @@
     return false;
   }
 
+  private boolean jj_3R_151()
+ {
+    if (jj_scan_token(LT2)) return true;
+    return false;
+  }
+
   private boolean jj_3R_132()
  {
     if (jj_scan_token(GROUP_CONCAT)) return true;
@@ -7708,6 +7720,12 @@
     return false;
   }
 
+  private boolean jj_3R_146()
+ {
+    if (jj_3R_153()) return true;
+    return false;
+  }
+
   private boolean jj_3R_131()
  {
     if (jj_scan_token(SAMPLE)) return true;
@@ -7715,6 +7733,18 @@
     return false;
   }
 
+  private boolean jj_3R_145()
+ {
+    if (jj_3R_152()) return true;
+    return false;
+  }
+
+  private boolean jj_3R_144()
+ {
+    if (jj_3R_151()) return true;
+    return false;
+  }
+
   private boolean jj_3R_130()
  {
     if (jj_scan_token(MODE)) return true;
@@ -7722,6 +7752,20 @@
     return false;
   }
 
+  private boolean jj_3R_122()
+ {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_144()) {
+    jj_scanpos = xsp;
+    if (jj_3R_145()) {
+    jj_scanpos = xsp;
+    if (jj_3R_146()) return true;
+    }
+    }
+    return false;
+  }
+
   private boolean jj_3R_129()
  {
     if (jj_scan_token(MEDIAN)) return true;
@@ -7817,6 +7861,20 @@
     return false;
   }
 
+  private boolean jj_3R_119()
+ {
+    if (jj_scan_token(NOT)) return true;
+    if (jj_scan_token(EXISTS)) return true;
+    return false;
+  }
+
+  private boolean jj_3R_118()
+ {
+    if (jj_scan_token(EXISTS)) return true;
+    if (jj_3R_141()) return true;
+    return false;
+  }
+
   /** Generated Token Manager. */
   public ARQParserTokenManager token_source;
   SimpleCharStream jj_input_stream;
@@ -7828,7 +7886,7 @@
   private Token jj_scanpos, jj_lastpos;
   private int jj_la;
   private int jj_gen;
-  final private int[] jj_la1 = new int[191];
+  final private int[] jj_la1 = new int[192];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -7848,28 +7906,28 @@
       jj_la1_init_7();
    }
    private static void jj_la1_init_0() {
-      jj_la1_0 = new int[] {0x1e400000,0x200,0x300000,0x300000,0x0,0x1800000,0x1800000,0x1c00,0x0,0xdc00,0xdc00,0xdc00,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0xc000,0x1c00,0x0,0x0,0x0,0x80000000,0x60000000,0xdc00,0x0,0xdc00,0x1c00,0xdc00,0x0,0xdc00,0xdc00,0x40000000,0x20000000,0x60000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0xfc00,0x0,0x0,0xfc00,0xfc00,0xfc00,0x0,0x0,0xfc00,0x0,0xfc00,0x0,0x400000,0xfc00,0x0,0x0,0xfc00,0xfc00,0x0,0x0,0x0,0xc000,0x1c00,0xc000,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0x1c00,0x800000,0x0,0x0,0x0,0x0,0x0,0xfc00,0x8dc00,0x0,0x8dc00,0x8dc00,0x0,0xfc00,0x88dc00,0x88dc00,0x0,0x88dc00,0x88dc00,0x0,0x0,0x0,0x0,0x0,0x881c00,0x0,0x0,0x0,0x0,0x881c00,0x0,0x81c00,0x81c00,0x81c00,0x81c00,0x0,0x0,0xfc00,0xfc00,0x0,0x0,0xfc00,0xfc00,0xfc00,0x81c00,0x1c00,0xdc00,0xfc00,0xc000,0x3c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0xdc00,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x0,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x1800,0x2000,};
+      jj_la1_0 = new int[] {0x1e400000,0x200,0x300000,0x300000,0x0,0x1800000,0x1800000,0x1c00,0x0,0xdc00,0xdc00,0xdc00,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0xc000,0x1c00,0x0,0x0,0x0,0x80000000,0x60000000,0xdc00,0x0,0xdc00,0x1c00,0xdc00,0x0,0xdc00,0xdc00,0x40000000,0x20000000,0x60000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0xfc00,0x0,0x0,0xfc00,0xfc00,0xfc00,0x0,0x0,0xfc00,0x0,0xfc00,0x0,0x400000,0xfc00,0x0,0x0,0xfc00,0xfc00,0x0,0x0,0x0,0xc000,0x1c00,0xc000,0x0,0x0,0x1c00,0x0,0x1c00,0x0,0x1c00,0x800000,0x0,0x0,0x0,0x0,0x0,0xfc00,0x8dc00,0x0,0x8dc00,0x8dc00,0x0,0xfc00,0x88dc00,0x88dc00,0x0,0x88dc00,0x88dc00,0x0,0x0,0x0,0x0,0x0,0x881c00,0x0,0x0,0x0,0x0,0x881c00,0x0,0x81c00,0x81c00,0x81c00,0x81c00,0x0,0x0,0xfc00,0xfc00,0x0,0x0,0xfc00,0xfc00,0xfc00,0x81c00,0x1c00,0xdc00,0xfc00,0xc000,0x3c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdc00,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0xdc00,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x0,0x800000,0x800000,0x800000,0x800000,0x800000,0x800000,0x0,0x0,0x10000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00,0x1800,0x2000,};
    }
    private static void jj_la1_init_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x800000,0xf87f0000,0xf87f0000,0xf87f0000,0x40,0x40,0xc0,0x0,0x0,0x40,0x80,0x40,0x40,0x0,0x0,0x20,0x80,0x1000000,0x2000000,0x0,0x0,0xf87f0000,0x800000,0xf87f0000,0xf87f0000,0xf87f0018,0x18,0xf87f0000,0xf87f0018,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x200,0x200,0x220,0x0,0x200,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x60f602,0x0,0x0,0x0,0x0,0x60f602,0x0,0x0,0x4,0x0,0x0,0x0,0x4,0x0,0x4,0x800,0xf87f0000,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,0x400000,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf87f0000,0xf87f0000,0x0,0x0,0xf87f0000,0x0,0x0,0x0,0x0,0xf87f0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x800000,0xf87f0000,0xf87f0000,0xf87f0000,0x40,0x40,0xc0,0x0,0x0,0x40,0x80,0x40,0x40,0x0,0x0,0x20,0x80,0x1000000,0x2000000,0x0,0x0,0xf87f0000,0x800000,0xf87f0000,0xf87f0000,0xf87f0018,0x18,0xf87f0000,0xf87f0018,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x200,0x200,0x220,0x0,0x200,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x60f602,0x0,0x0,0x0,0x0,0x60f602,0x0,0x0,0x4,0x0,0x0,0x0,0x4,0x0,0x4,0x800,0xf87f0000,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,0x400000,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf87f0000,0xf87f0000,0x0,0x0,0x0,0xf87f0000,0x0,0x0,0x0,0x0,0xf87f0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_2() {
-      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff97b7ff,0xff97b7ff,0xff97b7ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff97b7ff,0x0,0xff97b7ff,0xff97b7ff,0xff97b7ff,0x0,0xff97b7ff,0xff97b7ff,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,0x800,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff97b7ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x600000,0x600000,0x0,0x600000,0x600000,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x4000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff97b7ff,0xff97b7ff,0x0,0x0,0xff97b7ff,0x0,0x0,0x0,0x0,0xff97b7ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7ff,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,0xff97b7ff,0xff97b7ff,0xff97b7ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff97b7ff,0x0,0xff97b7ff,0xff97b7ff,0xff97b7ff,0x0,0xff97b7ff,0xff97b7ff,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,0x800,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff97b7ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x600000,0x600000,0x0,0x600000,0x600000,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x4000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff97b7ff,0xff97b7ff,0x0,0x0,0x0,0xff97b7ff,0x0,0x0,0x0,0x0,0xff97b7ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_3() {
-      jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0xffffffff,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0xffffffff,0xffffffff,0xffffffff,0x0,0xffffffff,0xffffffff,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,0xffffffff,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,0xffffffff,0xffffffff,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0xffffffff,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_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0xffffffff,0xffffffff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffffffff,0x0,0xffffffff,0xffffffff,0xffffffff,0x0,0xffffffff,0xffffffff,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,0xffffffff,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,0xffffffff,0xffffffff,0x0,0x0,0x0,0xffffffff,0x0,0x0,0x0,0x0,0xffffffff,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,};
    }
    private static void jj_la1_init_4() {
-      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000180,0x0,0x800001f7,0x800001f7,0x800001f7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000180,0x0,0x0,0x0,0x0,0x0,0x0,0x77,0x0,0x77,0x77,0x77,0x0,0x77,0x77,0x0,0x0,0x0,0x0,0x0,0x109ffc00,0x109ffc00,0x400000,0x1000000,0x400000,0x400000,0x400000,0x400000,0x400000,0x400000,0x10000000,0x400,0xc00,0x20000000,0x0,0x0,0x4000000,0xc000000,0x80000180,0x0,0x0,0x80000180,0x80000180,0x80000180,0x0,0x0,0x80000180,0x0,0x80000180,0x0,0x0,0x80000180,0x0,0x0,0x80000180,0x80000180,0x0,0x0,0x400000,0x0,0x80000180,0x0,0x0,0x0,0x80000180,0x0,0x80000180,0x0,0x77,0x0,0x0,0x0,0x0,0x0,0x0,0x80000180,0x0,0x0,0x0,0x0,0x0,0x80000180,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000180,0x80000180,0x0,0x0,0x80000180,0x80000180,0x80000180,0x0,0x80000180,0x0,0x0,0x0,0x80000180,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800001f7,0x800001f7,0x0,0x0,0x77,0x0,0x0,0x0,0x0,0x800001f7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x180,0x0,0x0,0x0,0x0,};
+      jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000180,0x0,0x800001f7,0x800001f7,0x800001f7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000180,0x0,0x0,0x0,0x0,0x0,0x0,0x77,0x0,0x77,0x77,0x77,0x0,0x77,0x77,0x0,0x0,0x0,0x0,0x0,0x109ffc00,0x109ffc00,0x400000,0x1000000,0x400000,0x400000,0x400000,0x400000,0x400000,0x400000,0x10000000,0x400,0xc00,0x20000000,0x0,0x0,0x4000000,0xc000000,0x80000180,0x0,0x0,0x80000180,0x80000180,0x80000180,0x0,0x0,0x80000180,0x0,0x80000180,0x0,0x0,0x80000180,0x0,0x0,0x80000180,0x80000180,0x0,0x0,0x400000,0x0,0x80000180,0x0,0x0,0x0,0x80000180,0x0,0x80000180,0x0,0x77,0x0,0x0,0x0,0x0,0x0,0x0,0x80000180,0x0,0x0,0x0,0x0,0x0,0x80000180,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000180,0x80000180,0x0,0x0,0x80000180,0x80000180,0x80000180,0x0,0x80000180,0x0,0x0,0x0,0x80000180,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800001f7,0x800001f7,0x80000180,0x0,0x0,0x77,0x0,0x0,0x0,0x0,0x800001f7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x180,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_init_5() {
-      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780ff,0x0,0xf80ff,0xf80ff,0xf80ff,0x0,0x0,0x400000,0x0,0x0,0x0,0x400000,0x0,0x0,0x10000000,0x780ff,0x0,0x0,0x0,0x0,0x0,0x0,0x80000,0x0,0x80000,0x80000,0x80000,0x0,0x80000,0x80000,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x52f80ff,0x0,0x20000000,0x52f80ff,0x52f80ff,0x52f80ff,0x400000,0x20000000,0x52f80ff,0x0,0x52f80ff,0x20000000,0x0,0x52f80ff,0x400000,0x20000000,0x52f80ff,0x52f80ff,0x20000000,0x400000,0x0,0x280000,0x780ff,0x0,0x280000,0x280000,0x780ff,0x280000,0x780ff,0x0,0x80000,0x0,0x10000000,0x280000,0x10000000,0x280000,0x20000000,0x52f80ff,0x0,0x8000000,0x0,0x0,0x10000000,0x52f80ff,0x80000,0x80000,0x8000000,0x80000,0x80000,0x10000000,0x0,0x0,0x0,0x400000,0x80000,0x800000,0x10800000,0x10000000,0x400000,0x80000,0x0,0x0,0x80000,0x0,0x0,0x1080000,0x1080000,0x52f80ff,0x52f80ff,0x0,0x0,0x52f80ff,0x52f80ff,0x42780ff,0x0,0x780ff,0x0,0x4000000,0x0,0x42780ff,0x0,0x0,0xc0000000,0xc0000000,0xfc,0xfc,0x0,0x0,0xfc,0x0,0x0,0xf80ff,0xf80ff,0x280000,0x10000000,0x0,0x10000000,0x10000000,0x10000000,0x0,0xf80ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x8000000,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x280000,0x0,0x0,0xff,0x3,0x1c,0xe0,0x0,0x78000,0x0,0x0,0x4000000,};
+      jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780ff,0x0,0xf80ff,0xf80ff,0xf80ff,0x0,0x0,0x400000,0x0,0x0,0x0,0x400000,0x0,0x0,0x10000000,0x780ff,0x0,0x0,0x0,0x0,0x0,0x0,0x80000,0x0,0x80000,0x80000,0x80000,0x0,0x80000,0x80000,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x52f80ff,0x0,0x20000000,0x52f80ff,0x52f80ff,0x52f80ff,0x400000,0x20000000,0x52f80ff,0x0,0x52f80ff,0x20000000,0x0,0x52f80ff,0x400000,0x20000000,0x52f80ff,0x52f80ff,0x20000000,0x400000,0x0,0x280000,0x780ff,0x0,0x280000,0x280000,0x780ff,0x280000,0x780ff,0x0,0x80000,0x0,0x10000000,0x280000,0x10000000,0x280000,0x20000000,0x52f80ff,0x0,0x8000000,0x0,0x0,0x10000000,0x52f80ff,0x80000,0x80000,0x8000000,0x80000,0x80000,0x10000000,0x0,0x0,0x0,0x400000,0x80000,0x800000,0x10800000,0x10000000,0x400000,0x80000,0x0,0x0,0x80000,0x0,0x0,0x1080000,0x1080000,0x52f80ff,0x52f80ff,0x0,0x0,0x52f80ff,0x52f80ff,0x42780ff,0x0,0x780ff,0x0,0x4000000,0x0,0x42780ff,0x0,0x0,0xc0000000,0xc0000000,0xfc,0xfc,0x0,0x0,0xfc,0x0,0x0,0xf80ff,0xf80ff,0x780ff,0x280000,0x10000000,0x0,0x10000000,0x10000000,0x10000000,0x0,0xf80ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x8000000,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x280000,0x0,0x0,0xff,0x3,0x1c,0xe0,0x0,0x78000,0x0,0x0,0x4000000,};
    }
    private static void jj_la1_init_6() {
-      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x8000,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,0x0,0x0,0x20,0x20,0x20,0x0,0x0,0x20,0x0,0x20,0x0,0x0,0x20,0x0,0x0,0x20,0x20,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x20,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x20,0x200100,0x200100,0x0,0x200100,0x200100,0x0,0x100000,0x210000,0x210000,0x100a000,0x200100,0x0,0x0,0xa000,0x100a000,0x100,0x100000,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x20,0x20,0x40,0x40,0x20,0x20,0x20,0x0,0x20,0x0,0x0,0x0,0x0,0x800,0x1000,0xf,0xf,0x6000,0x0,0x18000,0x18000,0x6000,0x18000,0x18000,0x6120,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe120,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x8000,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,0x0,0x0,0x20,0x20,0x20,0x0,0x0,0x20,0x0,0x20,0x0,0x0,0x20,0x0,0x0,0x20,0x20,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x20,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x20,0x200100,0x200100,0x0,0x200100,0x200100,0x0,0x100000,0x210000,0x210000,0x100a000,0x200100,0x0,0x0,0xa000,0x100a000,0x100,0x100000,0x200000,0x200000,0x0,0x200000,0x0,0x0,0x20,0x20,0x40,0x40,0x20,0x20,0x20,0x0,0x20,0x0,0x0,0x0,0x0,0x800,0x1000,0xf,0xf,0x6000,0x0,0x18000,0x18000,0x6000,0x18000,0x18000,0x6120,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe120,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    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,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,};
+      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,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,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[5];
   private boolean jj_rescan = false;
@@ -7886,7 +7944,7 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 191; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 192; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7901,7 +7959,7 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 191; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 192; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7912,7 +7970,7 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 191; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 192; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7923,7 +7981,7 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 191; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 192; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7933,7 +7991,7 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 191; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 192; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -7943,7 +8001,7 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 191; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 192; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -8061,7 +8119,7 @@
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 191; i++) {
+    for (int i = 0; i < 192; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {