docs: public static void main(String... args) throws Exception {
  
          String string = "SELECT :expr1, #($expr2.class),"
                  + " WHERE #if(:expr3) {e = $expr3} #else {e IS NULL}"
                  + "#for(variant in $expr4.bytes) { AND c = :variant}" // NL
                  + " {AND d = :expr-5}? {AND f = $expr6}?" // NL
                  + " BY #!(:expr7) ASC";
  
          // 在输入中查找  PREFIX 字符
          Matcher matcher = PATTERN_KEYWORD.matcher(string);
  
          int position = 0;
  
          while (matcher.find(position)) {
  
              System.out.println("===============================");
              System.out.println("group 0: " + matcher.group(0));
              System.out.println("group 1: " + matcher.group(1));
              System.out.println("group 2: " + matcher.group(2));
              System.out.println("group 3: " + matcher.group(3));
  
              position = matcher.end();
          }
  
          // 在循环表达式中查找
          matcher = PATTERN_IN.matcher("variant in :expr5");
  
          if (matcher.matches()) {
  
              System.out.println("===============================");
              System.out.println("group 0: " + matcher.group(0));
              System.out.println("group 1: " + matcher.group(1));
              System.out.println("group 2: " + matcher.group(2));
          }
  
          // 编译下列语句
          ExqlPattern pattern = new ExqlCompiler(string).compile();
  
          ExqlContext context = new ExqlContextImpl();
  
          HashMap<String, Object> map = new HashMap<String, Object>();
  
          map.put("expr1", "expr1");
          map.put("expr2", "expr2");
          map.put("expr3", "expr3");
          map.put("expr4", "expr4");
          map.put("expr5", "expr5");
          // map.put("expr6", "expr6");
          map.put("expr7", "expr7");
  
          pattern.execute(context, map, map);
          System.out.println(context.flushOut());
          System.out.println(Arrays.toString(context.getArgs()));
      }