瀏覽代碼

HADOOP-1768 Hbase shell FS command using Hadoop FsShell operations

M  src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/HelpContents.java
    Add mention of new 'fs' operator.
A src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/FsCommand.java
M src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/HBaseShell.jj
    Added support of new 'fs' operator.
M src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/ParserTokenManager.java
M src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/ParserConstants.java
M src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/Parser.java
    Generated files.  Changes come of mods to HBaseShell.jj
    


git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@569484 13f79535-47bb-0310-9956-ffa450edef68
Michael Stack 17 年之前
父節點
當前提交
f916db4e92

+ 2 - 0
src/contrib/hbase/CHANGES.txt

@@ -6,6 +6,8 @@ Trunk (unreleased changes)
   INCOMPATIBLE CHANGES
 
   NEW FEATURES
+    HADOOP-1768 FS command using Hadoop FsShell operations
+    (Edward Yoon via Stack)
 
   OPTIMIZATIONS
 

+ 49 - 0
src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/FsCommand.java

@@ -0,0 +1,49 @@
+/**
+ * Copyright 2007 The Apache Software Foundation
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.shell;
+
+import java.util.List;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FsShell;
+import org.apache.hadoop.util.ToolRunner;
+
+public class FsCommand extends BasicCommand {
+  private List<String> query;
+
+  public ReturnMsg execute(Configuration conf) {
+    FsShell shell = new FsShell();
+    try {
+      ToolRunner.run(shell, getQuery());
+      shell.close();
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
+    return null;
+  }
+
+  public void setQuery(List<String> query) {
+    this.query = query;
+  }
+
+  private String[] getQuery() {
+    return query.toArray(new String[] {});
+  }
+}

+ 23 - 1
src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/HBaseShell.jj

@@ -68,6 +68,7 @@ TOKEN:
  | <DESCRIBE: "describe">
  | <CREATE: "create">	
  | <DROP: "drop">
+ | <FS: "fs">
  | <EXIT: "exit">
  | <INSERT: "insert">
  | <DELETE: "delete">
@@ -92,7 +93,7 @@ TOKEN:
 
 TOKEN :
 {
-   <ID: ["a"-"z","A"-"Z","_","-","."] ( ["a"-"z","A"-"Z","_","0"-"9","-","."] )* >
+   <ID: ["a"-"z","A"-"Z","_","-",".","/"] ( ["a"-"z","A"-"Z","_","0"-"9","-",".","/"] )* >
  | <NUM: ( ["0"-"9"] )+ >
  | <STRING: (["A"-"Z","a"-"z","0"-"9"])+ >
  | <QUOTED_STRING: "\"" (~["\""])+ "\"" >
@@ -129,6 +130,7 @@ Command cmdStatement() :
      | cmd = deleteCommand()
      | cmd = selectCommand()
      | cmd = clearCommand()
+     | cmd = fsCommand()
   )
    {
        return cmd;
@@ -143,6 +145,25 @@ ExitCommand exitCommand() :
    <EXIT>  { return exit; }
 }
 
+FsCommand fsCommand() :
+{
+  Token t = null;
+  FsCommand fs = new FsCommand();
+  List<String> query = new ArrayList<String>();
+}
+{
+  <FS>
+  (
+      t = <ID>
+      { query.add(t.image.toString()); }
+  )*
+  
+  {
+    fs.setQuery(query);
+    return fs;
+  }
+}
+
 HelpCommand helpCommand() :
 {
   Token t = null;
@@ -162,6 +183,7 @@ HelpCommand helpCommand() :
        | t=<DELETE>
        | t=<SELECT>
        | t=<CLEAR>
+       | t=<FS>
        | t=<ID>
      ) { argument = t.image.toString(); }
    ]

+ 2 - 0
src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/HelpContents.java

@@ -31,6 +31,8 @@ public class HelpContents {
     Map<String, String[]> load = new HashMap<String, String[]>();
 
     load.put("SHOW", new String[] { "List all tables.", "SHOW TABLES;" });
+    load.put("FS", new String[] { "Hadoop FsShell operations.",
+      "FS -copyFromLocal /home/user/backup.dat fs/user/backup;" });
     load.put("CLEAR", new String[] {"Clear the screen.", "CLEAR;"} );
     load.put("DESCRIBE", new String[] { "Describe a table's columnfamilies.",
         "DESCRIBE <table_name>;" });

+ 2 - 4
src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/HelpManager.java

@@ -50,15 +50,13 @@ public class HelpManager {
 
   public static void printHelp(String cmd) {
     if (cmd.equals("")) {
-      System.out.println("\nType 'help <command>;' to see command-specific "
+      System.out.println("Type 'help <command>;' to see command-specific "
           + "usage.\n");
       for (Map.Entry<String, String[]> helpMap : help.entrySet()) {
         wrapping(helpMap.getKey(), helpMap.getValue(), false);
       }
-      System.out.println();
     } else {
       if (help.containsKey(cmd.toUpperCase())) {
-        System.out.println();
         String[] msg = help.get(cmd.toUpperCase());
         wrapping(cmd.toUpperCase(), msg, true);
       } else {
@@ -78,6 +76,6 @@ public class HelpManager {
     }
 
     if (example)
-      System.out.println("\n>>> " + cmdType[1] + "\n");
+      System.out.println("\n>>> " + cmdType[1]);
   }
 }

+ 3 - 3
src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/ShowCommand.java

@@ -26,7 +26,7 @@ import org.apache.hadoop.hbase.HBaseAdmin;
 import org.apache.hadoop.hbase.HTableDescriptor;
 
 public class ShowCommand extends BasicCommand {
-  
+
   private String command;
 
   public ReturnMsg execute(Configuration conf) {
@@ -35,7 +35,7 @@ public class ShowCommand extends BasicCommand {
 
     try {
       HBaseAdmin admin = new HBaseAdmin(conf);
-      
+
       int tableLength = 0;
       if ("tables".equals(this.command)) {
         HTableDescriptor[] tables = admin.listTables();
@@ -62,5 +62,5 @@ public class ShowCommand extends BasicCommand {
   public void setArgument(String argument) {
     this.command = argument;
   }
-  
+
 }

+ 68 - 36
src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/Parser.java

@@ -56,11 +56,12 @@ public class Parser implements ParserConstants {
     case DESCRIBE:
     case CREATE:
     case DROP:
+    case FS:
     case EXIT:
     case INSERT:
     case DELETE:
     case SELECT:
-    case 36:
+    case 37:
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case HELP:
       case CLEAR:
@@ -68,6 +69,7 @@ public class Parser implements ParserConstants {
       case DESCRIBE:
       case CREATE:
       case DROP:
+      case FS:
       case EXIT:
       case INSERT:
       case DELETE:
@@ -78,7 +80,7 @@ public class Parser implements ParserConstants {
         jj_la1[0] = jj_gen;
         ;
       }
-      jj_consume_token(36);
+      jj_consume_token(37);
       break;
     case 0:
       jj_consume_token(0);
@@ -125,6 +127,9 @@ public class Parser implements ParserConstants {
     case CLEAR:
       cmd = clearCommand();
       break;
+    case FS:
+      cmd = fsCommand();
+      break;
     default:
       jj_la1[2] = jj_gen;
       jj_consume_token(-1);
@@ -141,6 +146,29 @@ public class Parser implements ParserConstants {
     throw new Error("Missing return statement in function");
   }
 
+  final public FsCommand fsCommand() throws ParseException {
+  Token t = null;
+  FsCommand fs = new FsCommand();
+  List<String> query = new ArrayList<String>();
+    jj_consume_token(FS);
+    label_1:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ID:
+        ;
+        break;
+      default:
+        jj_la1[3] = jj_gen;
+        break label_1;
+      }
+      t = jj_consume_token(ID);
+        query.add(t.image.toString());
+    }
+    fs.setQuery(query);
+    {if (true) return fs;}
+    throw new Error("Missing return statement in function");
+  }
+
   final public HelpCommand helpCommand() throws ParseException {
   Token t = null;
   HelpCommand help = new HelpCommand();
@@ -152,6 +180,7 @@ public class Parser implements ParserConstants {
     case DESCRIBE:
     case CREATE:
     case DROP:
+    case FS:
     case EXIT:
     case INSERT:
     case DELETE:
@@ -185,18 +214,21 @@ public class Parser implements ParserConstants {
       case CLEAR:
         t = jj_consume_token(CLEAR);
         break;
+      case FS:
+        t = jj_consume_token(FS);
+        break;
       case ID:
         t = jj_consume_token(ID);
         break;
       default:
-        jj_la1[3] = jj_gen;
+        jj_la1[4] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
          argument = t.image.toString();
       break;
     default:
-      jj_la1[4] = jj_gen;
+      jj_la1[5] = jj_gen;
       ;
     }
       help.setArgument(argument);
@@ -214,7 +246,7 @@ public class Parser implements ParserConstants {
       argument = getString();
       break;
     default:
-      jj_la1[5] = jj_gen;
+      jj_la1[6] = jj_gen;
       ;
     }
       show.setArgument(argument);
@@ -232,7 +264,7 @@ public class Parser implements ParserConstants {
       argument = getString();
       break;
     default:
-      jj_la1[6] = jj_gen;
+      jj_la1[7] = jj_gen;
       ;
     }
       desc.setArgument(argument);
@@ -263,7 +295,7 @@ public class Parser implements ParserConstants {
         }
       break;
     default:
-      jj_la1[7] = jj_gen;
+      jj_la1[8] = jj_gen;
       ;
     }
     {if (true) return create;}
@@ -280,7 +312,7 @@ public class Parser implements ParserConstants {
       argument = getString();
       break;
     default:
-      jj_la1[8] = jj_gen;
+      jj_la1[9] = jj_gen;
       ;
     }
       drop.setArgument(argument);
@@ -350,7 +382,7 @@ public class Parser implements ParserConstants {
         }
       break;
     default:
-      jj_la1[9] = jj_gen;
+      jj_la1[10] = jj_gen;
       ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -365,7 +397,7 @@ public class Parser implements ParserConstants {
         }
       break;
     default:
-      jj_la1[10] = jj_gen;
+      jj_la1[11] = jj_gen;
       ;
     }
     {if (true) return select;}
@@ -392,7 +424,7 @@ public class Parser implements ParserConstants {
       t = jj_consume_token(QUOTED_STRING);
       break;
     default:
-      jj_la1[11] = jj_gen;
+      jj_la1[12] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -418,15 +450,15 @@ public class Parser implements ParserConstants {
         exception.add(pe.toString());
         result.put("error", exception);
       }
-    label_1:
+    label_2:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case AND:
         ;
         break;
       default:
-        jj_la1[12] = jj_gen;
-        break label_1;
+        jj_la1[13] = jj_gen;
+        break label_2;
       }
       jj_consume_token(AND);
       try{
@@ -466,7 +498,7 @@ public class Parser implements ParserConstants {
       tSearchName = jj_consume_token(COLUMNFAMILIES);
       break;
     default:
-      jj_la1[13] = jj_gen;
+      jj_la1[14] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -478,7 +510,7 @@ public class Parser implements ParserConstants {
       tComparator = jj_consume_token(NOTEQUAL);
       break;
     default:
-      jj_la1[14] = jj_gen;
+      jj_la1[15] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -507,7 +539,7 @@ public class Parser implements ParserConstants {
     {if (true) return tmp;}
       break;
     default:
-      jj_la1[15] = jj_gen;
+      jj_la1[16] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -520,7 +552,7 @@ public class Parser implements ParserConstants {
     jj_consume_token(LPAREN);
    literal = getStringLiteral();
  if(literal != null) values.add(literal);
-    label_2:
+    label_3:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COMMA:
@@ -531,8 +563,8 @@ public class Parser implements ParserConstants {
         ;
         break;
       default:
-        jj_la1[16] = jj_gen;
-        break label_2;
+        jj_la1[17] = jj_gen;
+        break label_3;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COMMA:
@@ -558,14 +590,14 @@ public class Parser implements ParserConstants {
           jj_consume_token(STRING);
           break;
         default:
-          jj_la1[17] = jj_gen;
+          jj_la1[18] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
        values.removeAll(values);
         break;
       default:
-        jj_la1[18] = jj_gen;
+        jj_la1[19] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -587,7 +619,7 @@ public class Parser implements ParserConstants {
                      {if (true) return null;}
       break;
     default:
-      jj_la1[19] = jj_gen;
+      jj_la1[20] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
@@ -599,7 +631,7 @@ public class Parser implements ParserConstants {
   public Token token, jj_nt;
   private int jj_ntk;
   private int jj_gen;
-  final private int[] jj_la1 = new int[20];
+  final private int[] jj_la1 = new int[21];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static {
@@ -607,10 +639,10 @@ public class Parser implements ParserConstants {
       jj_la1_1();
    }
    private static void jj_la1_0() {
-      jj_la1_0 = new int[] {0x7fe0,0x7fe1,0x7fe0,0x80007fc0,0x80007fc0,0x80000000,0x80000000,0x200000,0x80000000,0x100000,0x200000,0x80000000,0x400000,0x800f8000,0x30000000,0x0,0x81000000,0x80000000,0x81000000,0x0,};
+      jj_la1_0 = new int[] {0xffe0,0xffe1,0xffe0,0x0,0xffc0,0xffc0,0x0,0x0,0x400000,0x0,0x200000,0x400000,0x0,0x800000,0x1f0000,0x60000000,0x0,0x2000000,0x0,0x2000000,0x0,};
    }
    private static void jj_la1_1() {
-      jj_la1_1 = new int[] {0x0,0x10,0x0,0x0,0x0,0x4,0x4,0x0,0x4,0x0,0x0,0x4,0x0,0x0,0x0,0xc,0xe,0xe,0xe,0xc,};
+      jj_la1_1 = new int[] {0x0,0x20,0x0,0x1,0x1,0x1,0x9,0x9,0x0,0x9,0x0,0x0,0x9,0x0,0x1,0x0,0x18,0x1d,0x1d,0x1d,0x18,};
    }
 
   public Parser(java.io.InputStream stream) {
@@ -622,7 +654,7 @@ public class Parser implements ParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 20; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
   }
 
   public void ReInit(java.io.InputStream stream) {
@@ -634,7 +666,7 @@ public class Parser implements ParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 20; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
   }
 
   public Parser(java.io.Reader stream) {
@@ -643,7 +675,7 @@ public class Parser implements ParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 20; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
   }
 
   public void ReInit(java.io.Reader stream) {
@@ -652,7 +684,7 @@ public class Parser implements ParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 20; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
   }
 
   public Parser(ParserTokenManager tm) {
@@ -660,7 +692,7 @@ public class Parser implements ParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 20; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
   }
 
   public void ReInit(ParserTokenManager tm) {
@@ -668,7 +700,7 @@ public class Parser implements ParserConstants {
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 20; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
   }
 
   final private Token jj_consume_token(int kind) throws ParseException {
@@ -715,15 +747,15 @@ public class Parser implements ParserConstants {
 
   public ParseException generateParseException() {
     jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[37];
-    for (int i = 0; i < 37; i++) {
+    boolean[] la1tokens = new boolean[38];
+    for (int i = 0; i < 38; i++) {
       la1tokens[i] = false;
     }
     if (jj_kind >= 0) {
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 20; i++) {
+    for (int i = 0; i < 21; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {
@@ -735,7 +767,7 @@ public class Parser implements ParserConstants {
         }
       }
     }
-    for (int i = 0; i < 37; i++) {
+    for (int i = 0; i < 38; i++) {
       if (la1tokens[i]) {
         jj_expentry = new int[1];
         jj_expentry[0] = i;

+ 27 - 25
src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/ParserConstants.java

@@ -29,31 +29,32 @@ public interface ParserConstants {
   int DESCRIBE = 8;
   int CREATE = 9;
   int DROP = 10;
-  int EXIT = 11;
-  int INSERT = 12;
-  int DELETE = 13;
-  int SELECT = 14;
-  int ROW = 15;
-  int COLUMN = 16;
-  int TIME = 17;
-  int VALUES = 18;
-  int COLUMNFAMILIES = 19;
-  int WHERE = 20;
-  int LIMIT = 21;
-  int AND = 22;
-  int OR = 23;
-  int COMMA = 24;
-  int DOT = 25;
-  int LPAREN = 26;
-  int RPAREN = 27;
-  int EQUALS = 28;
-  int NOTEQUAL = 29;
-  int OPTIONS = 30;
-  int ID = 31;
-  int NUM = 32;
-  int STRING = 33;
-  int QUOTED_STRING = 34;
-  int STRING_LITERAL = 35;
+  int FS = 11;
+  int EXIT = 12;
+  int INSERT = 13;
+  int DELETE = 14;
+  int SELECT = 15;
+  int ROW = 16;
+  int COLUMN = 17;
+  int TIME = 18;
+  int VALUES = 19;
+  int COLUMNFAMILIES = 20;
+  int WHERE = 21;
+  int LIMIT = 22;
+  int AND = 23;
+  int OR = 24;
+  int COMMA = 25;
+  int DOT = 26;
+  int LPAREN = 27;
+  int RPAREN = 28;
+  int EQUALS = 29;
+  int NOTEQUAL = 30;
+  int OPTIONS = 31;
+  int ID = 32;
+  int NUM = 33;
+  int STRING = 34;
+  int QUOTED_STRING = 35;
+  int STRING_LITERAL = 36;
 
   int DEFAULT = 0;
 
@@ -69,6 +70,7 @@ public interface ParserConstants {
     "\"describe\"",
     "\"create\"",
     "\"drop\"",
+    "\"fs\"",
     "\"exit\"",
     "\"insert\"",
     "\"delete\"",

+ 154 - 146
src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/ParserTokenManager.java

@@ -36,71 +36,71 @@ private final int jjStopStringLiteralDfa_0(int pos, long active0)
    switch (pos)
    {
       case 0:
-         if ((active0 & 0xffffe0L) != 0L)
+         if ((active0 & 0x1ffffe0L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             return 13;
          }
-         if ((active0 & 0x42000000L) != 0L)
+         if ((active0 & 0x84000000L) != 0L)
             return 1;
          return -1;
       case 1:
-         if ((active0 & 0x7fffe0L) != 0L)
+         if ((active0 & 0x1000800L) != 0L)
+            return 13;
+         if ((active0 & 0xfff7e0L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 1;
             return 13;
          }
-         if ((active0 & 0x800000L) != 0L)
-            return 13;
          return -1;
       case 2:
-         if ((active0 & 0x408000L) != 0L)
+         if ((active0 & 0x810000L) != 0L)
             return 13;
-         if ((active0 & 0x3f7fe0L) != 0L)
+         if ((active0 & 0x7ef7e0L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 2;
             return 13;
          }
          return -1;
       case 3:
-         if ((active0 & 0x3d7340L) != 0L)
+         if ((active0 & 0x7ae340L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 3;
             return 13;
          }
-         if ((active0 & 0x20ca0L) != 0L)
+         if ((active0 & 0x414a0L) != 0L)
             return 13;
          return -1;
       case 4:
-         if ((active0 & 0x300040L) != 0L)
+         if ((active0 & 0x600040L) != 0L)
             return 13;
-         if ((active0 & 0xd7300L) != 0L)
+         if ((active0 & 0x1ae300L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 4;
             return 13;
          }
          return -1;
       case 5:
-         if ((active0 & 0xd7200L) != 0L)
+         if ((active0 & 0x1ae200L) != 0L)
             return 13;
          if ((active0 & 0x100L) != 0L)
          {
             if (jjmatchedPos != 5)
             {
-               jjmatchedKind = 31;
+               jjmatchedKind = 32;
                jjmatchedPos = 5;
             }
             return 13;
          }
          return -1;
       case 6:
-         if ((active0 & 0x80100L) != 0L)
+         if ((active0 & 0x100100L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 6;
             return 13;
          }
@@ -108,49 +108,49 @@ private final int jjStopStringLiteralDfa_0(int pos, long active0)
       case 7:
          if ((active0 & 0x100L) != 0L)
             return 13;
-         if ((active0 & 0x80000L) != 0L)
+         if ((active0 & 0x100000L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 7;
             return 13;
          }
          return -1;
       case 8:
-         if ((active0 & 0x80000L) != 0L)
+         if ((active0 & 0x100000L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 8;
             return 13;
          }
          return -1;
       case 9:
-         if ((active0 & 0x80000L) != 0L)
+         if ((active0 & 0x100000L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 9;
             return 13;
          }
          return -1;
       case 10:
-         if ((active0 & 0x80000L) != 0L)
+         if ((active0 & 0x100000L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 10;
             return 13;
          }
          return -1;
       case 11:
-         if ((active0 & 0x80000L) != 0L)
+         if ((active0 & 0x100000L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 11;
             return 13;
          }
          return -1;
       case 12:
-         if ((active0 & 0x80000L) != 0L)
+         if ((active0 & 0x100000L) != 0L)
          {
-            jjmatchedKind = 31;
+            jjmatchedKind = 32;
             jjmatchedPos = 12;
             return 13;
          }
@@ -182,60 +182,63 @@ private final int jjMoveStringLiteralDfa0_0()
    switch(curChar)
    {
       case 40:
-         return jjStopAtPos(0, 26);
-      case 41:
          return jjStopAtPos(0, 27);
+      case 41:
+         return jjStopAtPos(0, 28);
       case 44:
-         return jjStopAtPos(0, 24);
+         return jjStopAtPos(0, 25);
       case 45:
-         return jjStartNfaWithStates_0(0, 30, 1);
+         return jjStartNfaWithStates_0(0, 31, 1);
       case 46:
-         return jjStartNfaWithStates_0(0, 25, 1);
+         return jjStartNfaWithStates_0(0, 26, 1);
       case 59:
-         return jjStopAtPos(0, 36);
+         return jjStopAtPos(0, 37);
       case 60:
-         return jjMoveStringLiteralDfa1_0(0x20000000L);
+         return jjMoveStringLiteralDfa1_0(0x40000000L);
       case 61:
-         return jjStopAtPos(0, 28);
+         return jjStopAtPos(0, 29);
       case 65:
       case 97:
-         return jjMoveStringLiteralDfa1_0(0x400000L);
+         return jjMoveStringLiteralDfa1_0(0x800000L);
       case 67:
       case 99:
-         return jjMoveStringLiteralDfa1_0(0x90240L);
+         return jjMoveStringLiteralDfa1_0(0x120240L);
       case 68:
       case 100:
-         return jjMoveStringLiteralDfa1_0(0x2500L);
+         return jjMoveStringLiteralDfa1_0(0x4500L);
       case 69:
       case 101:
+         return jjMoveStringLiteralDfa1_0(0x1000L);
+      case 70:
+      case 102:
          return jjMoveStringLiteralDfa1_0(0x800L);
       case 72:
       case 104:
          return jjMoveStringLiteralDfa1_0(0x20L);
       case 73:
       case 105:
-         return jjMoveStringLiteralDfa1_0(0x1000L);
+         return jjMoveStringLiteralDfa1_0(0x2000L);
       case 76:
       case 108:
-         return jjMoveStringLiteralDfa1_0(0x200000L);
+         return jjMoveStringLiteralDfa1_0(0x400000L);
       case 79:
       case 111:
-         return jjMoveStringLiteralDfa1_0(0x800000L);
+         return jjMoveStringLiteralDfa1_0(0x1000000L);
       case 82:
       case 114:
-         return jjMoveStringLiteralDfa1_0(0x8000L);
+         return jjMoveStringLiteralDfa1_0(0x10000L);
       case 83:
       case 115:
-         return jjMoveStringLiteralDfa1_0(0x4080L);
+         return jjMoveStringLiteralDfa1_0(0x8080L);
       case 84:
       case 116:
-         return jjMoveStringLiteralDfa1_0(0x20000L);
+         return jjMoveStringLiteralDfa1_0(0x40000L);
       case 86:
       case 118:
-         return jjMoveStringLiteralDfa1_0(0x40000L);
+         return jjMoveStringLiteralDfa1_0(0x80000L);
       case 87:
       case 119:
-         return jjMoveStringLiteralDfa1_0(0x100000L);
+         return jjMoveStringLiteralDfa1_0(0x200000L);
       default :
          return jjMoveNfa_0(0, 0);
    }
@@ -250,38 +253,43 @@ private final int jjMoveStringLiteralDfa1_0(long active0)
    switch(curChar)
    {
       case 62:
-         if ((active0 & 0x20000000L) != 0L)
-            return jjStopAtPos(1, 29);
+         if ((active0 & 0x40000000L) != 0L)
+            return jjStopAtPos(1, 30);
          break;
       case 65:
       case 97:
-         return jjMoveStringLiteralDfa2_0(active0, 0x40000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x80000L);
       case 69:
       case 101:
-         return jjMoveStringLiteralDfa2_0(active0, 0x6120L);
+         return jjMoveStringLiteralDfa2_0(active0, 0xc120L);
       case 72:
       case 104:
-         return jjMoveStringLiteralDfa2_0(active0, 0x100080L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x200080L);
       case 73:
       case 105:
-         return jjMoveStringLiteralDfa2_0(active0, 0x220000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x440000L);
       case 76:
       case 108:
          return jjMoveStringLiteralDfa2_0(active0, 0x40L);
       case 78:
       case 110:
-         return jjMoveStringLiteralDfa2_0(active0, 0x401000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x802000L);
       case 79:
       case 111:
-         return jjMoveStringLiteralDfa2_0(active0, 0x98000L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x130000L);
       case 82:
       case 114:
-         if ((active0 & 0x800000L) != 0L)
-            return jjStartNfaWithStates_0(1, 23, 13);
+         if ((active0 & 0x1000000L) != 0L)
+            return jjStartNfaWithStates_0(1, 24, 13);
          return jjMoveStringLiteralDfa2_0(active0, 0x600L);
+      case 83:
+      case 115:
+         if ((active0 & 0x800L) != 0L)
+            return jjStartNfaWithStates_0(1, 11, 13);
+         break;
       case 88:
       case 120:
-         return jjMoveStringLiteralDfa2_0(active0, 0x800L);
+         return jjMoveStringLiteralDfa2_0(active0, 0x1000L);
       default :
          break;
    }
@@ -300,31 +308,31 @@ private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
    {
       case 68:
       case 100:
-         if ((active0 & 0x400000L) != 0L)
-            return jjStartNfaWithStates_0(2, 22, 13);
+         if ((active0 & 0x800000L) != 0L)
+            return jjStartNfaWithStates_0(2, 23, 13);
          break;
       case 69:
       case 101:
-         return jjMoveStringLiteralDfa3_0(active0, 0x100240L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x200240L);
       case 73:
       case 105:
-         return jjMoveStringLiteralDfa3_0(active0, 0x800L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x1000L);
       case 76:
       case 108:
-         return jjMoveStringLiteralDfa3_0(active0, 0xd6020L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x1ac020L);
       case 77:
       case 109:
-         return jjMoveStringLiteralDfa3_0(active0, 0x220000L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x440000L);
       case 79:
       case 111:
          return jjMoveStringLiteralDfa3_0(active0, 0x480L);
       case 83:
       case 115:
-         return jjMoveStringLiteralDfa3_0(active0, 0x1100L);
+         return jjMoveStringLiteralDfa3_0(active0, 0x2100L);
       case 87:
       case 119:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStartNfaWithStates_0(2, 15, 13);
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_0(2, 16, 13);
          break;
       default :
          break;
@@ -350,12 +358,12 @@ private final int jjMoveStringLiteralDfa3_0(long old0, long active0)
          return jjMoveStringLiteralDfa4_0(active0, 0x100L);
       case 69:
       case 101:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_0(3, 17, 13);
-         return jjMoveStringLiteralDfa4_0(active0, 0x7000L);
+         if ((active0 & 0x40000L) != 0L)
+            return jjStartNfaWithStates_0(3, 18, 13);
+         return jjMoveStringLiteralDfa4_0(active0, 0xe000L);
       case 73:
       case 105:
-         return jjMoveStringLiteralDfa4_0(active0, 0x200000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x400000L);
       case 80:
       case 112:
          if ((active0 & 0x20L) != 0L)
@@ -365,15 +373,15 @@ private final int jjMoveStringLiteralDfa3_0(long old0, long active0)
          break;
       case 82:
       case 114:
-         return jjMoveStringLiteralDfa4_0(active0, 0x100000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x200000L);
       case 84:
       case 116:
-         if ((active0 & 0x800L) != 0L)
-            return jjStartNfaWithStates_0(3, 11, 13);
+         if ((active0 & 0x1000L) != 0L)
+            return jjStartNfaWithStates_0(3, 12, 13);
          break;
       case 85:
       case 117:
-         return jjMoveStringLiteralDfa4_0(active0, 0xd0000L);
+         return jjMoveStringLiteralDfa4_0(active0, 0x1a0000L);
       case 87:
       case 119:
          if ((active0 & 0x80L) != 0L)
@@ -397,25 +405,25 @@ private final int jjMoveStringLiteralDfa4_0(long old0, long active0)
    {
       case 67:
       case 99:
-         return jjMoveStringLiteralDfa5_0(active0, 0x4000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x8000L);
       case 69:
       case 101:
-         if ((active0 & 0x100000L) != 0L)
-            return jjStartNfaWithStates_0(4, 20, 13);
-         return jjMoveStringLiteralDfa5_0(active0, 0x40000L);
+         if ((active0 & 0x200000L) != 0L)
+            return jjStartNfaWithStates_0(4, 21, 13);
+         return jjMoveStringLiteralDfa5_0(active0, 0x80000L);
       case 77:
       case 109:
-         return jjMoveStringLiteralDfa5_0(active0, 0x90000L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x120000L);
       case 82:
       case 114:
          if ((active0 & 0x40L) != 0L)
             return jjStartNfaWithStates_0(4, 6, 13);
-         return jjMoveStringLiteralDfa5_0(active0, 0x1100L);
+         return jjMoveStringLiteralDfa5_0(active0, 0x2100L);
       case 84:
       case 116:
-         if ((active0 & 0x200000L) != 0L)
-            return jjStartNfaWithStates_0(4, 21, 13);
-         return jjMoveStringLiteralDfa5_0(active0, 0x2200L);
+         if ((active0 & 0x400000L) != 0L)
+            return jjStartNfaWithStates_0(4, 22, 13);
+         return jjMoveStringLiteralDfa5_0(active0, 0x4200L);
       default :
          break;
    }
@@ -436,31 +444,31 @@ private final int jjMoveStringLiteralDfa5_0(long old0, long active0)
       case 101:
          if ((active0 & 0x200L) != 0L)
             return jjStartNfaWithStates_0(5, 9, 13);
-         else if ((active0 & 0x2000L) != 0L)
-            return jjStartNfaWithStates_0(5, 13, 13);
+         else if ((active0 & 0x4000L) != 0L)
+            return jjStartNfaWithStates_0(5, 14, 13);
          break;
       case 73:
       case 105:
          return jjMoveStringLiteralDfa6_0(active0, 0x100L);
       case 78:
       case 110:
-         if ((active0 & 0x10000L) != 0L)
+         if ((active0 & 0x20000L) != 0L)
          {
-            jjmatchedKind = 16;
+            jjmatchedKind = 17;
             jjmatchedPos = 5;
          }
-         return jjMoveStringLiteralDfa6_0(active0, 0x80000L);
+         return jjMoveStringLiteralDfa6_0(active0, 0x100000L);
       case 83:
       case 115:
-         if ((active0 & 0x40000L) != 0L)
-            return jjStartNfaWithStates_0(5, 18, 13);
+         if ((active0 & 0x80000L) != 0L)
+            return jjStartNfaWithStates_0(5, 19, 13);
          break;
       case 84:
       case 116:
-         if ((active0 & 0x1000L) != 0L)
-            return jjStartNfaWithStates_0(5, 12, 13);
-         else if ((active0 & 0x4000L) != 0L)
-            return jjStartNfaWithStates_0(5, 14, 13);
+         if ((active0 & 0x2000L) != 0L)
+            return jjStartNfaWithStates_0(5, 13, 13);
+         else if ((active0 & 0x8000L) != 0L)
+            return jjStartNfaWithStates_0(5, 15, 13);
          break;
       default :
          break;
@@ -483,7 +491,7 @@ private final int jjMoveStringLiteralDfa6_0(long old0, long active0)
          return jjMoveStringLiteralDfa7_0(active0, 0x100L);
       case 70:
       case 102:
-         return jjMoveStringLiteralDfa7_0(active0, 0x80000L);
+         return jjMoveStringLiteralDfa7_0(active0, 0x100000L);
       default :
          break;
    }
@@ -502,7 +510,7 @@ private final int jjMoveStringLiteralDfa7_0(long old0, long active0)
    {
       case 65:
       case 97:
-         return jjMoveStringLiteralDfa8_0(active0, 0x80000L);
+         return jjMoveStringLiteralDfa8_0(active0, 0x100000L);
       case 69:
       case 101:
          if ((active0 & 0x100L) != 0L)
@@ -526,7 +534,7 @@ private final int jjMoveStringLiteralDfa8_0(long old0, long active0)
    {
       case 77:
       case 109:
-         return jjMoveStringLiteralDfa9_0(active0, 0x80000L);
+         return jjMoveStringLiteralDfa9_0(active0, 0x100000L);
       default :
          break;
    }
@@ -545,7 +553,7 @@ private final int jjMoveStringLiteralDfa9_0(long old0, long active0)
    {
       case 73:
       case 105:
-         return jjMoveStringLiteralDfa10_0(active0, 0x80000L);
+         return jjMoveStringLiteralDfa10_0(active0, 0x100000L);
       default :
          break;
    }
@@ -564,7 +572,7 @@ private final int jjMoveStringLiteralDfa10_0(long old0, long active0)
    {
       case 76:
       case 108:
-         return jjMoveStringLiteralDfa11_0(active0, 0x80000L);
+         return jjMoveStringLiteralDfa11_0(active0, 0x100000L);
       default :
          break;
    }
@@ -583,7 +591,7 @@ private final int jjMoveStringLiteralDfa11_0(long old0, long active0)
    {
       case 73:
       case 105:
-         return jjMoveStringLiteralDfa12_0(active0, 0x80000L);
+         return jjMoveStringLiteralDfa12_0(active0, 0x100000L);
       default :
          break;
    }
@@ -602,7 +610,7 @@ private final int jjMoveStringLiteralDfa12_0(long old0, long active0)
    {
       case 69:
       case 101:
-         return jjMoveStringLiteralDfa13_0(active0, 0x80000L);
+         return jjMoveStringLiteralDfa13_0(active0, 0x100000L);
       default :
          break;
    }
@@ -621,8 +629,8 @@ private final int jjMoveStringLiteralDfa13_0(long old0, long active0)
    {
       case 83:
       case 115:
-         if ((active0 & 0x80000L) != 0L)
-            return jjStartNfaWithStates_0(13, 19, 13);
+         if ((active0 & 0x100000L) != 0L)
+            return jjStartNfaWithStates_0(13, 20, 13);
          break;
       default :
          break;
@@ -684,14 +692,14 @@ private final int jjMoveNfa_0(int startState, int curPos)
                case 0:
                   if ((0x3ff000000000000L & l) != 0L)
                   {
-                     if (kind > 33)
-                        kind = 33;
+                     if (kind > 34)
+                        kind = 34;
                      jjCheckNAdd(3);
                   }
-                  else if ((0x600000000000L & l) != 0L)
+                  else if ((0xe00000000000L & l) != 0L)
                   {
-                     if (kind > 31)
-                        kind = 31;
+                     if (kind > 32)
+                        kind = 32;
                      jjCheckNAdd(1);
                   }
                   else if (curChar == 39)
@@ -700,44 +708,44 @@ private final int jjMoveNfa_0(int startState, int curPos)
                      jjCheckNAdd(5);
                   if ((0x3ff000000000000L & l) != 0L)
                   {
-                     if (kind > 32)
-                        kind = 32;
+                     if (kind > 33)
+                        kind = 33;
                      jjCheckNAdd(2);
                   }
                   break;
                case 13:
-                  if ((0x3ff600000000000L & l) != 0L)
+                  if ((0x3ffe00000000000L & l) != 0L)
                   {
-                     if (kind > 31)
-                        kind = 31;
+                     if (kind > 32)
+                        kind = 32;
                      jjCheckNAdd(1);
                   }
                   if ((0x3ff000000000000L & l) != 0L)
                   {
-                     if (kind > 33)
-                        kind = 33;
+                     if (kind > 34)
+                        kind = 34;
                      jjCheckNAdd(3);
                   }
                   break;
                case 1:
-                  if ((0x3ff600000000000L & l) == 0L)
+                  if ((0x3ffe00000000000L & l) == 0L)
                      break;
-                  if (kind > 31)
-                     kind = 31;
+                  if (kind > 32)
+                     kind = 32;
                   jjCheckNAdd(1);
                   break;
                case 2:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 32)
-                     kind = 32;
+                  if (kind > 33)
+                     kind = 33;
                   jjCheckNAdd(2);
                   break;
                case 3:
                   if ((0x3ff000000000000L & l) == 0L)
                      break;
-                  if (kind > 33)
-                     kind = 33;
+                  if (kind > 34)
+                     kind = 34;
                   jjCheckNAdd(3);
                   break;
                case 4:
@@ -749,8 +757,8 @@ private final int jjMoveNfa_0(int startState, int curPos)
                      jjCheckNAddTwoStates(5, 6);
                   break;
                case 6:
-                  if (curChar == 34 && kind > 34)
-                     kind = 34;
+                  if (curChar == 34 && kind > 35)
+                     kind = 35;
                   break;
                case 7:
                   if (curChar == 39)
@@ -773,8 +781,8 @@ private final int jjMoveNfa_0(int startState, int curPos)
                      jjCheckNAddStates(3, 5);
                   break;
                case 12:
-                  if (curChar == 39 && kind > 35)
-                     kind = 35;
+                  if (curChar == 39 && kind > 36)
+                     kind = 36;
                   break;
                default : break;
             }
@@ -790,43 +798,43 @@ private final int jjMoveNfa_0(int startState, int curPos)
                case 0:
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
-                     if (kind > 31)
-                        kind = 31;
+                     if (kind > 32)
+                        kind = 32;
                      jjCheckNAdd(1);
                   }
                   if ((0x7fffffe07fffffeL & l) != 0L)
                   {
-                     if (kind > 33)
-                        kind = 33;
+                     if (kind > 34)
+                        kind = 34;
                      jjCheckNAdd(3);
                   }
                   break;
                case 13:
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
-                     if (kind > 31)
-                        kind = 31;
+                     if (kind > 32)
+                        kind = 32;
                      jjCheckNAdd(1);
                   }
                   if ((0x7fffffe07fffffeL & l) != 0L)
                   {
-                     if (kind > 33)
-                        kind = 33;
+                     if (kind > 34)
+                        kind = 34;
                      jjCheckNAdd(3);
                   }
                   break;
                case 1:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 31)
-                     kind = 31;
+                  if (kind > 32)
+                     kind = 32;
                   jjCheckNAdd(1);
                   break;
                case 3:
                   if ((0x7fffffe07fffffeL & l) == 0L)
                      break;
-                  if (kind > 33)
-                     kind = 33;
+                  if (kind > 34)
+                     kind = 34;
                   jjCheckNAdd(3);
                   break;
                case 5:
@@ -884,13 +892,13 @@ static final int[] jjnextStates = {
 };
 public static final String[] jjstrLiteralImages = {
 "", null, null, null, null, null, null, null, null, null, null, null, null, 
-null, null, null, null, null, null, null, null, null, null, null, "\54", "\56", 
-"\50", "\51", "\75", "\74\76", "\55", null, null, null, null, null, "\73", };
+null, null, null, null, null, null, null, null, null, null, null, null, "\54", 
+"\56", "\50", "\51", "\75", "\74\76", "\55", null, null, null, null, null, "\73", };
 public static final String[] lexStateNames = {
    "DEFAULT", 
 };
 static final long[] jjtoToken = {
-   0x1fffffffe1L, 
+   0x3fffffffe1L, 
 };
 static final long[] jjtoSkip = {
    0x1eL,