geirm       00/10/31 08:03:09

  Modified:    src/java/org/apache/velocity/runtime/parser Parser.java
                        Parser.jj ParserConstants.java
                        ParserTokenManager.java
  Log:
  The rest of the Parser gang. (Committing Parser.jjt separately for readability of 
list traffic).
  
  Revision  Changes    Path
  1.11      +356 -331  
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.java
  
  Index: Parser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Parser.java       2000/10/31 02:44:59     1.10
  +++ Parser.java       2000/10/31 16:02:59     1.11
  @@ -18,7 +18,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
  - * @version $Id: Parser.java,v 1.10 2000/10/31 02:44:59 geirm Exp $ 
  + * @version $Id: Parser.java,v 1.11 2000/10/31 16:02:59 geirm Exp $ 
   */
   public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants 
{/*@bgen(jjtree)*/
     protected JJTParserState jjtree = new JJTParserState();
  @@ -57,7 +57,15 @@
       {
           token_source.clearStateVars();
           ReInit(stream);
  -        return process();
  +       // return process();
  +
  +        SimpleNode n = null;
  +
  +        try {
  +            n = process();
  +        } catch (Exception e) { System.out.println(e);}
  +
  +        return n;
       }
   
       public void setDirectives(Hashtable directives)
  @@ -104,6 +112,7 @@
           case FORMAL_COMMENT:
           case MULTI_LINE_COMMENT:
           case STRING_LITERAL:
  +        case NEWLINE:
           case INCLUDE_DIRECTIVE:
           case IF_DIRECTIVE:
           case SET_DIRECTIVE:
  @@ -191,6 +200,7 @@
       case ESCAPE_SEQUENCE:
       case TEXT:
       case STRING_LITERAL:
  +    case NEWLINE:
       case NUMBER_LITERAL:
       case DOT:
         Text();
  @@ -375,6 +385,7 @@
             case FORMAL_COMMENT:
             case MULTI_LINE_COMMENT:
             case STRING_LITERAL:
  +          case NEWLINE:
             case INCLUDE_DIRECTIVE:
             case IF_DIRECTIVE:
             case SET_DIRECTIVE:
  @@ -699,6 +710,9 @@
         case TEXT:
           jj_consume_token(TEXT);
           break;
  +      case NEWLINE:
  +        jj_consume_token(NEWLINE);
  +        break;
         case DOT:
           jj_consume_token(DOT);
           break;
  @@ -763,6 +777,7 @@
             case FORMAL_COMMENT:
             case MULTI_LINE_COMMENT:
             case STRING_LITERAL:
  +          case NEWLINE:
             case INCLUDE_DIRECTIVE:
             case IF_DIRECTIVE:
             case SET_DIRECTIVE:
  @@ -870,6 +885,7 @@
             case FORMAL_COMMENT:
             case MULTI_LINE_COMMENT:
             case STRING_LITERAL:
  +          case NEWLINE:
             case INCLUDE_DIRECTIVE:
             case IF_DIRECTIVE:
             case SET_DIRECTIVE:
  @@ -952,6 +968,7 @@
             case FORMAL_COMMENT:
             case MULTI_LINE_COMMENT:
             case STRING_LITERAL:
  +          case NEWLINE:
             case INCLUDE_DIRECTIVE:
             case IF_DIRECTIVE:
             case SET_DIRECTIVE:
  @@ -1016,24 +1033,32 @@
       try {
         jj_consume_token(SET_DIRECTIVE);
         Expression();
  -    } catch (Throwable jjte000) {
  -      if (jjtc000) {
  -        jjtree.clearNodeScope(jjtn000);
  -        jjtc000 = false;
  -      } else {
  -        jjtree.popNode();
  -      }
  -      if (jjte000 instanceof ParseException) {
  -        {if (true) throw (ParseException)jjte000;}
  -      }
  -      if (jjte000 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte000;}
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case NEWLINE:
  +        jj_consume_token(NEWLINE);
  +        break;
  +      default:
  +        jj_la1[22] = jj_gen;
  +        ;
         }
  -      {if (true) throw (Error)jjte000;}
  +    } catch (Throwable jjte000) {
  +     if (jjtc000) {
  +       jjtree.clearNodeScope(jjtn000);
  +       jjtc000 = false;
  +     } else {
  +       jjtree.popNode();
  +     }
  +     if (jjte000 instanceof ParseException) {
  +       {if (true) throw (ParseException)jjte000;}
  +     }
  +     if (jjte000 instanceof RuntimeException) {
  +       {if (true) throw (RuntimeException)jjte000;}
  +     }
  +     {if (true) throw (Error)jjte000;}
       } finally {
  -      if (jjtc000) {
  -        jjtree.closeNodeScope(jjtn000, true);
  -      }
  +     if (jjtc000) {
  +       jjtree.closeNodeScope(jjtn000, true);
  +     }
       }
     }
   
  @@ -1089,7 +1114,7 @@
             ConditionalOrExpression();
             break;
           default:
  -          jj_la1[22] = jj_gen;
  +          jj_la1[23] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
  @@ -1154,7 +1179,7 @@
           ;
           break;
         default:
  -        jj_la1[23] = jj_gen;
  +        jj_la1[24] = jj_gen;
           break label_11;
         }
         jj_consume_token(LOGICAL_OR);
  @@ -1194,7 +1219,7 @@
           ;
           break;
         default:
  -        jj_la1[24] = jj_gen;
  +        jj_la1[25] = jj_gen;
           break label_12;
         }
         jj_consume_token(LOGICAL_AND);
  @@ -1235,7 +1260,7 @@
           ;
           break;
         default:
  -        jj_la1[25] = jj_gen;
  +        jj_la1[26] = jj_gen;
           break label_13;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1294,7 +1319,7 @@
           }
           break;
         default:
  -        jj_la1[26] = jj_gen;
  +        jj_la1[27] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1313,7 +1338,7 @@
           ;
           break;
         default:
  -        jj_la1[27] = jj_gen;
  +        jj_la1[28] = jj_gen;
           break label_14;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1426,7 +1451,7 @@
           }
           break;
         default:
  -        jj_la1[28] = jj_gen;
  +        jj_la1[29] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1443,7 +1468,7 @@
           ;
           break;
         default:
  -        jj_la1[29] = jj_gen;
  +        jj_la1[30] = jj_gen;
           break label_15;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1502,7 +1527,7 @@
           }
           break;
         default:
  -        jj_la1[30] = jj_gen;
  +        jj_la1[31] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1520,7 +1545,7 @@
           ;
           break;
         default:
  -        jj_la1[31] = jj_gen;
  +        jj_la1[32] = jj_gen;
           break label_16;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1606,7 +1631,7 @@
           }
           break;
         default:
  -        jj_la1[32] = jj_gen;
  +        jj_la1[33] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1653,7 +1678,7 @@
         PrimaryExpression();
         break;
       default:
  -      jj_la1[33] = jj_gen;
  +      jj_la1[34] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -1686,7 +1711,7 @@
         jj_consume_token(RPAREN);
         break;
       default:
  -      jj_la1[34] = jj_gen;
  +      jj_la1[35] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -1713,579 +1738,579 @@
       return retval;
     }
   
  -  final private boolean jj_3R_18() {
  -    if (jj_3R_20()) return true;
  +  final private boolean jj_3R_71() {
  +    if (jj_scan_token(MINUS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(LPAREN)) return true;
  +    if (jj_3R_62()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_62() {
  +    if (jj_3R_68()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3R_69()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_70() {
  +    if (jj_scan_token(PLUS)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_62()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_63() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_21()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(RPAREN)) return true;
  +    if (jj_3R_70()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_71()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_41() {
  -    if (jj_3R_32()) return true;
  +  final private boolean jj_3R_67() {
  +    if (jj_scan_token(LOGICAL_GE)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_58()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_44() {
  -    if (jj_3R_29()) return true;
  +  final private boolean jj_3R_58() {
  +    if (jj_3R_62()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3R_48()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_63()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_40() {
  -    if (jj_3R_35()) return true;
  +  final private boolean jj_3R_66() {
  +    if (jj_scan_token(LOGICAL_LE)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_58()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_39() {
  -    if (jj_3R_34()) return true;
  +  final private boolean jj_3R_65() {
  +    if (jj_scan_token(LOGICAL_GT)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_58()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_38() {
  -    if (jj_3R_33()) return true;
  +  final private boolean jj_3R_17() {
  +    if (jj_3R_20()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_37() {
  -    if (jj_3R_30()) return true;
  +  final private boolean jj_3R_64() {
  +    if (jj_scan_token(LOGICAL_LT)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_58()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_29() {
  +  final private boolean jj_3R_59() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_37()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_38()) {
  +    if (jj_3R_64()) {
       jj_scanpos = xsp;
  -    if (jj_3R_39()) {
  +    if (jj_3R_65()) {
       jj_scanpos = xsp;
  -    if (jj_3R_40()) {
  +    if (jj_3R_66()) {
       jj_scanpos = xsp;
  -    if (jj_3R_41()) return true;
  +    if (jj_3R_67()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_28() {
  -    if (jj_scan_token(LPAREN)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_36()) return true;
  +  final private boolean jj_3R_61() {
  +    if (jj_scan_token(LOGICAL_NOT_EQUALS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(RPAREN)) return true;
  +    if (jj_3R_56()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_27() {
  -    if (jj_3R_35()) return true;
  +  final private boolean jj_3R_56() {
  +    if (jj_3R_58()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3R_59()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
       return false;
     }
   
  -  final private boolean jj_3R_26() {
  -    if (jj_3R_34()) return true;
  +  final private boolean jj_3R_60() {
  +    if (jj_scan_token(LOGICAL_EQUALS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_56()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_25() {
  -    if (jj_3R_33()) return true;
  +  final private boolean jj_3R_57() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_60()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_61()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_24() {
  -    if (jj_3R_32()) return true;
  +  final private boolean jj_3R_55() {
  +    if (jj_scan_token(COMMA)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_29()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_23() {
  -    if (jj_3R_31()) return true;
  +  final private boolean jj_3R_53() {
  +    if (jj_3R_56()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3R_57()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
       return false;
     }
   
  -  final private boolean jj_3R_22() {
  -    if (jj_3R_30()) return true;
  +  final private boolean jj_3R_54() {
  +    if (jj_scan_token(LOGICAL_AND)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_53()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_19() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_22()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_23()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_24()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_25()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_26()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_27()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_28()) return true;
  +  final private boolean jj_3_2() {
  +    if (jj_3R_18()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_33() {
  -    if (jj_scan_token(LBRACKET)) return true;
  +  final private boolean jj_3R_51() {
  +    if (jj_3R_53()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_44()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(RBRACKET)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3R_54()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
       return false;
     }
   
  -  final private boolean jj_3R_73() {
  -    if (jj_3R_19()) return true;
  +  final private boolean jj_3R_20() {
  +    if (jj_scan_token(IDENTIFIER)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_76() {
  -    if (jj_scan_token(MODULUS)) return true;
  +  final private boolean jj_3R_52() {
  +    if (jj_scan_token(LOGICAL_OR)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_68()) return true;
  +    if (jj_3R_51()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_72() {
  -    if (jj_scan_token(LOGICAL_NOT)) return true;
  +  final private boolean jj_3_3() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_68()) return true;
  +    if (jj_scan_token(EQUALS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_68() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_72()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_73()) return true;
  +  final private boolean jj_3R_21() {
  +    if (jj_3R_29()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3R_55()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
       return false;
     }
   
  -  final private boolean jj_3R_75() {
  -    if (jj_scan_token(DIVIDE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_68()) return true;
  +  final private boolean jj_3R_50() {
  +    if (jj_3R_51()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3R_52()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
       return false;
     }
   
  -  final private boolean jj_3R_74() {
  -    if (jj_scan_token(MULTIPLY)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_68()) return true;
  +  final private boolean jj_3R_35() {
  +    if (jj_scan_token(FALSE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_69() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_74()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_75()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_76()) return true;
  +  final private boolean jj_3R_49() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(EQUALS)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_36()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_47() {
  -    if (jj_scan_token(RCURLY)) return true;
  +  final private boolean jj_3R_34() {
  +    if (jj_scan_token(TRUE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_71() {
  -    if (jj_scan_token(MINUS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_62()) return true;
  +  final private boolean jj_3R_46() {
  +    if (jj_3R_50()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_62() {
  -    if (jj_3R_68()) return true;
  +  final private boolean jj_3R_45() {
  +    if (jj_3R_49()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_69()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_70() {
  -    if (jj_scan_token(PLUS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_62()) return true;
  +  final private boolean jj_3R_36() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_45()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_46()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_63() {
  +  final private boolean jj_3_1() {
  +    if (jj_scan_token(DOT)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_70()) {
  +    if (jj_3_2()) {
       jj_scanpos = xsp;
  -    if (jj_3R_71()) return true;
  +    if (jj_3R_17()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_47()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_67() {
  -    if (jj_scan_token(LOGICAL_GE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_58()) return true;
  +  final private boolean jj_3R_43() {
  +    if (jj_scan_token(RCURLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_58() {
  -    if (jj_3R_62()) return true;
  +  final private boolean jj_3R_30() {
  +    if (jj_scan_token(STRING_LITERAL)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_63()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_17() {
  -    if (jj_3R_20()) return true;
  +  final private boolean jj_3R_42() {
  +    if (jj_scan_token(LCURLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_66() {
  -    if (jj_scan_token(LOGICAL_LE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_58()) return true;
  +  final private boolean jj_3R_31() {
  +    if (jj_scan_token(NUMBER_LITERAL)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_65() {
  -    if (jj_scan_token(LOGICAL_GT)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_58()) return true;
  +  final private boolean jj_3R_32() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_42()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(IDENTIFIER)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_43()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3_1()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
       return false;
     }
   
  -  final private boolean jj_3R_64() {
  -    if (jj_scan_token(LOGICAL_LT)) return true;
  +  final private boolean jj_3R_48() {
  +    if (jj_scan_token(COMMA)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_58()) return true;
  +    if (jj_3R_29()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_59() {
  +  final private boolean jj_3R_18() {
  +    if (jj_3R_20()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(LPAREN)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_64()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_65()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_66()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_67()) return true;
  +    if (jj_3R_21()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(RPAREN)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_61() {
  -    if (jj_scan_token(LOGICAL_NOT_EQUALS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_56()) return true;
  +  final private boolean jj_3R_41() {
  +    if (jj_3R_32()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_56() {
  -    if (jj_3R_58()) return true;
  +  final private boolean jj_3R_44() {
  +    if (jj_3R_29()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3R_59()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_48()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_60() {
  -    if (jj_scan_token(LOGICAL_EQUALS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_56()) return true;
  +  final private boolean jj_3R_40() {
  +    if (jj_3R_35()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_57() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_60()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_61()) return true;
  +  final private boolean jj_3R_39() {
  +    if (jj_3R_34()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_55() {
  -    if (jj_scan_token(COMMA)) return true;
  +  final private boolean jj_3R_28() {
  +    if (jj_scan_token(LPAREN)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_29()) return true;
  +    if (jj_3R_36()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(RPAREN)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_53() {
  -    if (jj_3R_56()) return true;
  +  final private boolean jj_3R_38() {
  +    if (jj_3R_33()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_57()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3_2() {
  -    if (jj_3R_18()) return true;
  +  final private boolean jj_3R_27() {
  +    if (jj_3R_35()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_54() {
  -    if (jj_scan_token(LOGICAL_AND)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_53()) return true;
  +  final private boolean jj_3R_37() {
  +    if (jj_3R_30()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_51() {
  -    if (jj_3R_53()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +  final private boolean jj_3R_29() {
       Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_54()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
  +    xsp = jj_scanpos;
  +    if (jj_3R_37()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_38()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_39()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_40()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_41()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_20() {
  -    if (jj_scan_token(IDENTIFIER)) return true;
  +  final private boolean jj_3R_26() {
  +    if (jj_3R_34()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_52() {
  -    if (jj_scan_token(LOGICAL_OR)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_51()) return true;
  +  final private boolean jj_3R_25() {
  +    if (jj_3R_33()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_21() {
  -    if (jj_3R_29()) return true;
  +  final private boolean jj_3R_24() {
  +    if (jj_3R_32()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_55()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3_3() {
  -    if (jj_3R_19()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(EQUALS)) return true;
  +  final private boolean jj_3R_23() {
  +    if (jj_3R_31()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_50() {
  -    if (jj_3R_51()) return true;
  +  final private boolean jj_3R_22() {
  +    if (jj_3R_30()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_52()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_35() {
  -    if (jj_scan_token(FALSE)) return true;
  +  final private boolean jj_3R_19() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_22()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_23()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_24()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_25()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_26()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_27()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_28()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_49() {
  +  final private boolean jj_3R_73() {
       if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(EQUALS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_36()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_34() {
  -    if (jj_scan_token(TRUE)) return true;
  +  final private boolean jj_3R_76() {
  +    if (jj_scan_token(MODULUS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_46() {
  -    if (jj_3R_50()) return true;
  +    if (jj_3R_68()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_45() {
  -    if (jj_3R_49()) return true;
  +  final private boolean jj_3R_72() {
  +    if (jj_scan_token(LOGICAL_NOT)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_68()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_36() {
  +  final private boolean jj_3R_68() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_45()) {
  +    if (jj_3R_72()) {
       jj_scanpos = xsp;
  -    if (jj_3R_46()) return true;
  +    if (jj_3R_73()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_1() {
  -    if (jj_scan_token(DOT)) return true;
  +  final private boolean jj_3R_33() {
  +    if (jj_scan_token(LBRACKET)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3_2()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_17()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       xsp = jj_scanpos;
  -    if (jj_3R_47()) jj_scanpos = xsp;
  +    if (jj_3R_44()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_43() {
  -    if (jj_scan_token(RCURLY)) return true;
  +    if (jj_scan_token(RBRACKET)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_30() {
  -    if (jj_scan_token(STRING_LITERAL)) return true;
  +  final private boolean jj_3R_75() {
  +    if (jj_scan_token(DIVIDE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_42() {
  -    if (jj_scan_token(LCURLY)) return true;
  +    if (jj_3R_68()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_31() {
  -    if (jj_scan_token(NUMBER_LITERAL)) return true;
  +  final private boolean jj_3R_74() {
  +    if (jj_scan_token(MULTIPLY)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_68()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_32() {
  +  final private boolean jj_3R_69() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_42()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(IDENTIFIER)) return true;
  +    if (jj_3R_74()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_75()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_76()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    xsp = jj_scanpos;
  -    if (jj_3R_43()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3_1()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_48() {
  -    if (jj_scan_token(COMMA)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_29()) return true;
  +  final private boolean jj_3R_47() {
  +    if (jj_scan_token(RCURLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
  @@ -2299,9 +2324,9 @@
     public boolean lookingAhead = false;
     private boolean jj_semLA;
     private int jj_gen;
  -  final private int[] jj_la1 = new int[35];
  -  final private int[] jj_la1_0 = 
{0x11c0f0,0x11c0f0,0x1c000,0x100002,0x100002,0x11c0f0,0x8,0x700002,0x700002,0x8,0x700002,0x0,0x0,0x0,0x0,0x1000f0,0x11c0f0,0x0,0x0,0x0,0x11c0f0,0x11c0f0,0x700012,0x40000000,0x20000000,0x0,0x0,0x80000000,0x80000000,0x3000000,0x3000000,0x1c000000,0x1c000000,0x700012,0x700012,};
  -  final private int[] jj_la1_1 = 
{0xe2b300,0xe2b300,0x0,0xa28000,0xa28000,0xe2b300,0x0,0xa00000,0xa00000,0x0,0xa00000,0x800000,0x1000000,0x200000,0x1000000,0x408000,0xe2b300,0x400,0x400,0x800,0xe2b300,0xe2b300,0xa08020,0x0,0x0,0x18,0x18,0x7,0x7,0x0,0x0,0x0,0x0,0xa08020,0xa08000,};
  +  final private int[] jj_la1 = new int[36];
  +  final private int[] jj_la1_0 = 
{0x91f030,0x91f030,0x1c000,0x100002,0x100002,0x91f030,0x8,0x700002,0x700002,0x8,0x700002,0x0,0x0,0x0,0x0,0x903030,0x91f030,0x0,0x0,0x0,0x91f030,0x91f030,0x800000,0x700012,0x40000000,0x20000000,0x0,0x0,0x80000000,0x80000000,0x3000000,0x3000000,0x1c000000,0x1c000000,0x700012,0x700012,};
  +  final private int[] jj_la1_1 = 
{0xe2b300,0xe2b300,0x0,0xa28000,0xa28000,0xe2b300,0x0,0xa00000,0xa00000,0x0,0xa00000,0x800000,0x1000000,0x200000,0x1000000,0x408000,0xe2b300,0x400,0x400,0x800,0xe2b300,0xe2b300,0x0,0xa08020,0x0,0x0,0x18,0x18,0x7,0x7,0x0,0x0,0x0,0x0,0xa08020,0xa08000,};
     final private JJCalls[] jj_2_rtns = new JJCalls[3];
     private boolean jj_rescan = false;
     private int jj_gc = 0;
  @@ -2312,7 +2337,7 @@
       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;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2323,7 +2348,7 @@
       jj_ntk = -1;
       jjtree.reset();
       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;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2333,7 +2358,7 @@
       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;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2344,7 +2369,7 @@
       jj_ntk = -1;
       jjtree.reset();
       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;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2353,7 +2378,7 @@
       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;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2363,7 +2388,7 @@
       jj_ntk = -1;
       jjtree.reset();
       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;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2478,7 +2503,7 @@
         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) {
  
  
  
  1.11      +125 -91   
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jj
  
  Index: Parser.jj
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jj,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Parser.jj 2000/10/31 02:45:00     1.10
  +++ Parser.jj 2000/10/31 16:03:00     1.11
  @@ -98,7 +98,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
  - * @version $Id: Parser.jj,v 1.10 2000/10/31 02:45:00 geirm Exp $ 
  + * @version $Id: Parser.jj,v 1.11 2000/10/31 16:03:00 geirm Exp $ 
   */
   public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants/*@egen*/
   {/*@bgen(jjtree)*/
  @@ -141,7 +141,15 @@
       {
           token_source.clearStateVars();
           ReInit(stream);  
  -        return process();
  +       // return process();
  +    
  +        SimpleNode n = null;
  +
  +        try {
  +            n = process();
  +        } catch (Exception e) { System.out.println(e);}
  +
  +        return n;
       }        
   
       public void setDirectives(Hashtable directives)
  @@ -342,58 +350,19 @@
           
           return;
       }
  -} 
   
  -/* ------------------------------------------------------------------------
  - *
  - * Tokens
  - *
  - *  Note : we now have another state, REFMODIFIER.  This is sort of a 
  - *  type of REFERENCE state, simply use to use the DIRECTIVE token
  - *  set when we are processing a $foo.bar() construct
  - *
  - * ------------------------------------------------------------------------- */
  -
  -<DIRECTIVE,REFMODIFIER,REFMOD2>
  -TOKEN:
  -{ 
  -    <LBRACKET: "[">
  -|   <RBRACKET: "]">
  -}
   
  -<DIRECTIVE,REFMOD2>
  -TOKEN:
  -{
  -    <COMMA:",">
  -}
  -
  -
  -<DIRECTIVE,REFMODIFIER,REFMOD2>
  -TOKEN:
  -{
  -    <LPAREN: "(">
  -    {
  -        if (!inComment)
  -            lparen++;
  -
  -        /*
  -         *  if we have seen the dot, then move to REFMOD2 -> Modifier()
  -         */
  -
  -        if (curLexState == REFMODIFIER )
  -            SwitchTo( REFMOD2 );
  -
  -    }
  -
  -|   <RPAREN: ")">
  +    /**
  +     *  handles the dropdown logic when encountering a RPAREN
  +     */
  +    private void RPARENHandler()
       {
           /*
            *  Ultimately, we want to drop down to the state below the one that has an 
open (
            *  if we hit bottom (DEFAULT), that's fine. It's just text schmoo.
            *
            */
  -    
  -     
  +   
           boolean bClosed = false;
   
           if (inComment)
  @@ -434,16 +403,55 @@
                       break;
               } 
           }
  -    }    
  +    }
  +} 
  +
  +/* ------------------------------------------------------------------------
  + *
  + * Tokens
  + *
  + *  Note : we now have another state, REFMODIFIER.  This is sort of a 
  + *  type of REFERENCE state, simply use to use the DIRECTIVE token
  + *  set when we are processing a $foo.bar() construct
  + *
  + * ------------------------------------------------------------------------- */
  +
  +<DIRECTIVE,REFMODIFIER,REFMOD2>
  +TOKEN:
  +{ 
  +    <LBRACKET: "[">
  +|   <RBRACKET: "]">
   }
   
  +<DIRECTIVE,REFMOD2>
  +TOKEN:
  +{
  +    <COMMA:",">
  +}
   
  -TOKEN :
  +<DIRECTIVE,REFMODIFIER,REFMOD2>
  +TOKEN:
   {
  -    <ESCAPE_SEQUENCE: "\\" ~[] >
  -|   <TEXT: (~["$", "#", "\\"])+ >
  -}    
  +    <LPAREN: "(">
  +    {
  +        if (!inComment)
  +            lparen++;
   
  +        /*
  +         *  if we have seen the dot, then move to REFMOD2 -> Modifier()
  +         */
  +
  +        if (curLexState == REFMODIFIER )
  +            SwitchTo( REFMOD2 );
  +
  +    }
  +
  +|   <RPAREN: ")" (" ")* ("\n")?>
  +    {
  +       RPARENHandler();
  +    }    
  +}
  +
   <*>
   MORE :
   {
  @@ -518,6 +526,13 @@
       } 
   }   
   
  +TOKEN :
  +{
  +    <ESCAPE_SEQUENCE: "\\" ~[] >
  +|   <TEXT: (~["$", "#", "\\"])+ >
  +}    
  +
  +
   // -----------------------------------------------------------------------
   // 
   // COMMENT Lexical States
  @@ -592,8 +607,22 @@
           }
           incMode = false;
       
  -        if (lparen == 0)
  -            SwitchTo(DEFAULT);
  +       // from jason :
  +       // if (lparen == 0)
  +       //     SwitchTo(DEFAULT);
  +    
  +        /*
  +         *  - if we are in REFERENCE || REFMODIFIER then " is an ender
  +         *  - if we are in DIRECTIVE and haven't seen ( yet, then also drop out. 
  +         *      don't forget to account for the beloved yet wierd #set
  +         *  - finally, if we are in REFMOD2 (remember : $foo.bar( ) then " is ok!
  +         */
  +
  +        if (curLexState == REFERENCE || curLexState == REFMODIFIER)
  +            stateStackPop();
  +        else if( curLexState == DIRECTIVE && !inSet && lparen == 0)
  +            stateStackPop();    
  +
       }
   
   |   <TRUE: "true">
  @@ -601,19 +630,21 @@
   }
   
   <DIRECTIVE>
  -SPECIAL_TOKEN :
  +TOKEN :
   {
       <NEWLINE: "\n" | "\r" | "\r\n" >
       {
  +        if ( bDebugPrint_ )
  +            System.out.println(" NEWLINE :");
  +
  +        stateStackPop();      
  +        
           if (inSet)
  -       {
  -           if ( bDebugPrint_ )
  -                System.out.print(" NEWLINE :");
  -            stateStackPop();        
  -           inSet = false;
  -           inDirective = false;
  -        }
  -   }        
  +            inSet = false;
  +        
  +        if (inDirective)
  +            inDirective = false;
  +    }        
   }    
   
   <DIRECTIVE>
  @@ -639,11 +670,10 @@
   <DIRECTIVE> 
   TOKEN :
   {
  -    <END: "end"> 
  +    <END: "end" ("\n")?> 
       { 
           inDirective = false; 
           stateStackPop();
  -        // was :DEFAULT
       } 
   
   |   <INCLUDE_DIRECTIVE: "include"> 
  @@ -654,7 +684,10 @@
   |   <ELSEIF_DIRECTIVE: "elseif">
   
   |   <ELSE_DIRECTIVE: "else"> 
  -    : DEFAULT
  +     { 
  +        inDirective = false; 
  +        stateStackPop();
  +    } 
   
   |   <SET_DIRECTIVE: "set" >
       { inSet = true; }
  @@ -670,8 +703,8 @@
       {
           //!!! fixed <bcolor="#333333"/>
           // needs to be more thorough.
  -        if (lparen == 0)
  -            SwitchTo(DEFAULT);
  +       // if (lparen == 0)
  +       //     SwitchTo(DEFAULT);
       }            
       
       //!!! fixed #FFFFFF
  @@ -729,7 +762,7 @@
            *  These can terminate a reference, but are needed in subsequent states
            */
   
  -        if (image.toString().equals("="))
  +        if (image.toString().equals("=") || image.toString().equals("\n"))
           {
               input_stream.backup(1);
           } 
  @@ -749,7 +782,6 @@
                                           || image.toString().equals(",") 
                                           || image.toString().equals("[") 
                                           || image.toString().equals("]")
  -                                        || image.toString().equals("\n")
                                           ) )
           {
               input_stream.backup(1);
  @@ -1195,6 +1227,7 @@
       try {
   /*@egen*/
       <TEXT>
  +|   <NEWLINE>  
   |   <DOT>
   |   <RPAREN>
   |   <LPAREN>
  @@ -1214,7 +1247,8 @@
           jjtree.closeNodeScope(jjtn000, true);
         }
       }
  -/*@egen*/        
  +/*@egen*/      
  +
   }
   
   // -----------------------------------------------------------------------
  @@ -1410,28 +1444,28 @@
     jjtree.openNodeScope(jjtn000);
   /*@egen*/}
   {/*@bgen(jjtree) SetDirective */
  -    try {
  +   try {
   /*@egen*/
  -    <SET_DIRECTIVE> Expression()/*@bgen(jjtree)*/
  -    } catch (Throwable jjte000) {
  -      if (jjtc000) {
  -        jjtree.clearNodeScope(jjtn000);
  -        jjtc000 = false;
  -      } else {
  -        jjtree.popNode();
  -      }
  -      if (jjte000 instanceof ParseException) {
  -        throw (ParseException)jjte000;
  -      }
  -      if (jjte000 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte000;
  -      }
  -      throw (Error)jjte000;
  -    } finally {
  -      if (jjtc000) {
  -        jjtree.closeNodeScope(jjtn000, true);
  -      }
  -    }
  +   ( <SET_DIRECTIVE> Expression() [<NEWLINE>] )/*@bgen(jjtree)*/
  +   } catch (Throwable jjte000) {
  +     if (jjtc000) {
  +       jjtree.clearNodeScope(jjtn000);
  +       jjtc000 = false;
  +     } else {
  +       jjtree.popNode();
  +     }
  +     if (jjte000 instanceof ParseException) {
  +       throw (ParseException)jjte000;
  +     }
  +     if (jjte000 instanceof RuntimeException) {
  +       throw (RuntimeException)jjte000;
  +     }
  +     throw (Error)jjte000;
  +   } finally {
  +     if (jjtc000) {
  +       jjtree.closeNodeScope(jjtn000, true);
  +     }
  +   }
   /*@egen*/
   }    
   
  
  
  
  1.7       +15 -15    
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserConstants.java
  
  Index: ParserConstants.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserConstants.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ParserConstants.java      2000/10/31 02:45:01     1.6
  +++ ParserConstants.java      2000/10/31 16:03:00     1.7
  @@ -9,11 +9,11 @@
     int COMMA = 3;
     int LPAREN = 4;
     int RPAREN = 5;
  -  int ESCAPE_SEQUENCE = 6;
  -  int TEXT = 7;
  -  int DOLLAR = 8;
  -  int DOLLARBANG = 9;
  -  int HASH = 13;
  +  int DOLLAR = 6;
  +  int DOLLARBANG = 7;
  +  int HASH = 11;
  +  int ESCAPE_SEQUENCE = 12;
  +  int TEXT = 13;
     int SINGLE_LINE_COMMENT = 14;
     int FORMAL_COMMENT = 15;
     int MULTI_LINE_COMMENT = 16;
  @@ -59,11 +59,11 @@
     int DIRECTIVE = 0;
     int REFMODIFIER = 1;
     int REFMOD2 = 2;
  -  int DEFAULT = 3;
  -  int REFERENCE = 4;
  -  int IN_MULTI_LINE_COMMENT = 5;
  -  int IN_FORMAL_COMMENT = 6;
  -  int IN_SINGLE_LINE_COMMENT = 7;
  +  int REFERENCE = 3;
  +  int IN_MULTI_LINE_COMMENT = 4;
  +  int IN_FORMAL_COMMENT = 5;
  +  int IN_SINGLE_LINE_COMMENT = 6;
  +  int DEFAULT = 7;
   
     String[] tokenImage = {
       "<EOF>",
  @@ -71,15 +71,15 @@
       "\"]\"",
       "\",\"",
       "\"(\"",
  -    "\")\"",
  -    "<ESCAPE_SEQUENCE>",
  -    "<TEXT>",
  +    "<RPAREN>",
       "\"$\"",
       "\"$!\"",
       "\"##\"",
  -    "<token of kind 11>",
  +    "<token of kind 9>",
       "\"#*\"",
       "\"#\"",
  +    "<ESCAPE_SEQUENCE>",
  +    "<TEXT>",
       "<SINGLE_LINE_COMMENT>",
       "\"*#\"",
       "\"*#\"",
  @@ -105,7 +105,7 @@
       "\"!=\"",
       "\"!\"",
       "\"=\"",
  -    "\"end\"",
  +    "<END>",
       "\"include\"",
       "\"if\"",
       "\"elseif\"",
  
  
  
  1.10      +619 -507  
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
  
  Index: ParserTokenManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ParserTokenManager.java   2000/10/31 02:45:01     1.9
  +++ ParserTokenManager.java   2000/10/31 16:03:01     1.10
  @@ -166,40 +166,99 @@
   
           return;
       }
  +
  +
  +    /**
  +     *  handles the dropdown logic when encountering a RPAREN
  +     */
  +    private void RPARENHandler()
  +    {
  +        /*
  +         *  Ultimately, we want to drop down to the state below the one that has an 
open (
  +         *  if we hit bottom (DEFAULT), that's fine. It's just text schmoo.
  +         *
  +         */
  +
  +        boolean bClosed = false;
  +
  +        if (inComment)
  +            bClosed = true;
  +
  +        while( !bClosed)
  +        {
  +            /*
  +             * look at current state.  If we haven't seen a lparen in this state
  +             * then we drop a state, because this lparen clearly closes our state
  +             */
  +
  +            if( lparen > 0)
  +            {
  +                /*
  +                 *  if rparen + 1 == lparen, then this state is closed. Otherwise, 
increment
  +                 *  and keep parsing
  +                 */
  +
  +                 if( lparen == rparen + 1)
  +                 {
  +                       stateStackPop();
  +                 }
  +                else
  +                {
  +                    rparen++;
  +                }
  +
  +                 bClosed = true;
  +            }
  +            else
  +            {
  +                /*
  +                 * now, drop a state
  +                 */
  +
  +                if(!stateStackPop())
  +                    break;
  +            }
  +        }
  +    }
   private final int jjStopStringLiteralDfa_0(int pos, long active0)
   {
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x3f8000600000L) != 0L)
  +         if ((active0 & 0xd00L) != 0L)
  +            return 5;
  +         if ((active0 & 0xc0000000000L) != 0L)
            {
               jjmatchedKind = 49;
  -            return 11;
  +            return 15;
            }
  -         if ((active0 & 0x3400L) != 0L)
  -            return 2;
  +         if ((active0 & 0x330000600000L) != 0L)
  +         {
  +            jjmatchedKind = 49;
  +            return 18;
  +         }
            return -1;
         case 1:
  -         if ((active0 & 0x1000L) != 0L)
  -            return 0;
  +         if ((active0 & 0x400L) != 0L)
  +            return 3;
            if ((active0 & 0x20000000000L) != 0L)
  -            return 11;
  -         if ((active0 & 0x3d8000600000L) != 0L)
  +            return 18;
  +         if ((active0 & 0x3d0000600000L) != 0L)
            {
               jjmatchedKind = 49;
               jjmatchedPos = 1;
  -            return 11;
  +            return 18;
            }
            return -1;
         case 2:
  -         if ((active0 & 0x108000000000L) != 0L)
  -            return 11;
            if ((active0 & 0x2d0000600000L) != 0L)
            {
               jjmatchedKind = 49;
               jjmatchedPos = 2;
  -            return 11;
  +            return 18;
            }
  +         if ((active0 & 0x100000000000L) != 0L)
  +            return 18;
            return -1;
         case 3:
            if ((active0 & 0x10000400000L) != 0L)
  @@ -209,30 +268,30 @@
                  jjmatchedKind = 49;
                  jjmatchedPos = 3;
               }
  -            return 11;
  +            return 18;
            }
            if ((active0 & 0x2c0000200000L) != 0L)
  -            return 11;
  +            return 18;
            return -1;
         case 4:
  -         if ((active0 & 0x400000L) != 0L)
  -            return 11;
            if ((active0 & 0x50000000000L) != 0L)
            {
               jjmatchedKind = 49;
               jjmatchedPos = 4;
  -            return 11;
  +            return 18;
            }
  +         if ((active0 & 0x400000L) != 0L)
  +            return 18;
            return -1;
         case 5:
  -         if ((active0 & 0x40000000000L) != 0L)
  -            return 11;
            if ((active0 & 0x10000000000L) != 0L)
            {
               jjmatchedKind = 49;
               jjmatchedPos = 5;
  -            return 11;
  +            return 18;
            }
  +         if ((active0 & 0x40000000000L) != 0L)
  +            return 18;
            return -1;
         default :
            return -1;
  @@ -264,19 +323,17 @@
            jjmatchedKind = 37;
            return jjMoveStringLiteralDfa1_0(0x1000000000L);
         case 35:
  -         jjmatchedKind = 13;
  -         return jjMoveStringLiteralDfa1_0(0x1400L);
  +         jjmatchedKind = 11;
  +         return jjMoveStringLiteralDfa1_0(0x500L);
         case 36:
  -         jjmatchedKind = 8;
  -         return jjMoveStringLiteralDfa1_0(0x200L);
  +         jjmatchedKind = 6;
  +         return jjMoveStringLiteralDfa1_0(0x80L);
         case 37:
            return jjStopAtPos(0, 28);
         case 38:
            return jjMoveStringLiteralDfa1_0(0x20000000L);
         case 40:
            return jjStopAtPos(0, 4);
  -      case 41:
  -         return jjStopAtPos(0, 5);
         case 42:
            return jjStopAtPos(0, 26);
         case 43:
  @@ -301,7 +358,7 @@
         case 93:
            return jjStopAtPos(0, 2);
         case 101:
  -         return jjMoveStringLiteralDfa1_0(0xc8000000000L);
  +         return jjMoveStringLiteralDfa1_0(0xc0000000000L);
         case 102:
            return jjMoveStringLiteralDfa1_0(0x400000L);
         case 105:
  @@ -313,7 +370,7 @@
         case 124:
            return jjMoveStringLiteralDfa1_0(0x40000000L);
         default :
  -         return jjMoveNfa_0(3, 0);
  +         return jjMoveNfa_0(0, 0);
      }
   }
   private final int jjMoveStringLiteralDfa1_0(long active0)
  @@ -326,20 +383,20 @@
      switch(curChar)
      {
         case 33:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  +         if ((active0 & 0x80L) != 0L)
  +            return jjStopAtPos(1, 7);
            break;
         case 35:
  -         if ((active0 & 0x400L) != 0L)
  -            return jjStopAtPos(1, 10);
  +         if ((active0 & 0x100L) != 0L)
  +            return jjStopAtPos(1, 8);
            break;
         case 38:
            if ((active0 & 0x20000000L) != 0L)
               return jjStopAtPos(1, 29);
            break;
         case 42:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStartNfaWithStates_0(1, 12, 0);
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStartNfaWithStates_0(1, 10, 3);
            break;
         case 61:
            if ((active0 & 0x100000000L) != 0L)
  @@ -357,12 +414,12 @@
            return jjMoveStringLiteralDfa2_0(active0, 0x100000000000L);
         case 102:
            if ((active0 & 0x20000000000L) != 0L)
  -            return jjStartNfaWithStates_0(1, 41, 11);
  +            return jjStartNfaWithStates_0(1, 41, 18);
            break;
         case 108:
            return jjMoveStringLiteralDfa2_0(active0, 0xc0000000000L);
         case 110:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x18000000000L);
  +         return jjMoveStringLiteralDfa2_0(active0, 0x10000000000L);
         case 114:
            return jjMoveStringLiteralDfa2_0(active0, 0x200000L);
         case 116:
  @@ -389,10 +446,6 @@
      {
         case 99:
            return jjMoveStringLiteralDfa3_0(active0, 0x10000000000L);
  -      case 100:
  -         if ((active0 & 0x8000000000L) != 0L)
  -            return jjStartNfaWithStates_0(2, 39, 11);
  -         break;
         case 108:
            return jjMoveStringLiteralDfa3_0(active0, 0x400000L);
         case 111:
  @@ -401,7 +454,7 @@
            return jjMoveStringLiteralDfa3_0(active0, 0xc0000000000L);
         case 116:
            if ((active0 & 0x100000000000L) != 0L)
  -            return jjStartNfaWithStates_0(2, 44, 11);
  +            return jjStartNfaWithStates_0(2, 44, 18);
            break;
         case 117:
            return jjMoveStringLiteralDfa3_0(active0, 0x200000L);
  @@ -423,7 +476,7 @@
      {
         case 101:
            if ((active0 & 0x200000L) != 0L)
  -            return jjStartNfaWithStates_0(3, 21, 11);
  +            return jjStartNfaWithStates_0(3, 21, 18);
            else if ((active0 & 0x80000000000L) != 0L)
            {
               jjmatchedKind = 43;
  @@ -434,7 +487,7 @@
            return jjMoveStringLiteralDfa4_0(active0, 0x10000000000L);
         case 112:
            if ((active0 & 0x200000000000L) != 0L)
  -            return jjStartNfaWithStates_0(3, 45, 11);
  +            return jjStartNfaWithStates_0(3, 45, 18);
            break;
         case 115:
            return jjMoveStringLiteralDfa4_0(active0, 0x400000L);
  @@ -456,7 +509,7 @@
      {
         case 101:
            if ((active0 & 0x400000L) != 0L)
  -            return jjStartNfaWithStates_0(4, 22, 11);
  +            return jjStartNfaWithStates_0(4, 22, 18);
            break;
         case 105:
            return jjMoveStringLiteralDfa5_0(active0, 0x40000000000L);
  @@ -482,7 +535,7 @@
            return jjMoveStringLiteralDfa6_0(active0, 0x10000000000L);
         case 102:
            if ((active0 & 0x40000000000L) != 0L)
  -            return jjStartNfaWithStates_0(5, 42, 11);
  +            return jjStartNfaWithStates_0(5, 42, 18);
            break;
         default :
            break;
  @@ -502,7 +555,7 @@
      {
         case 101:
            if ((active0 & 0x10000000000L) != 0L)
  -            return jjStartNfaWithStates_0(6, 40, 11);
  +            return jjStartNfaWithStates_0(6, 40, 18);
            break;
         default :
            break;
  @@ -546,7 +599,7 @@
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 12;
  +   jjnewStateCnt = 19;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -561,12 +614,12 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 3:
  +               case 0:
                     if ((0x3ff000000000000L & l) != 0L)
                     {
                        if (kind > 47)
                           kind = 47;
  -                     jjCheckNAdd(10);
  +                     jjCheckNAdd(17);
                     }
                     else if ((0x2400L & l) != 0L)
                     {
  @@ -574,54 +627,79 @@
                           kind = 23;
                     }
                     else if (curChar == 34)
  -                     jjCheckNAddTwoStates(5, 6);
  +                     jjCheckNAddTwoStates(8, 9);
                     else if (curChar == 35)
  -                     jjstateSet[jjnewStateCnt++] = 2;
  +                     jjstateSet[jjnewStateCnt++] = 5;
  +                  else if (curChar == 41)
  +                  {
  +                     if (kind > 5)
  +                        kind = 5;
  +                     jjCheckNAddTwoStates(1, 2);
  +                  }
                     if (curChar == 13)
  -                     jjstateSet[jjnewStateCnt++] = 8;
  -                  break;
  -               case 0:
  -                  if (curChar == 42)
  -                     jjstateSet[jjnewStateCnt++] = 1;
  +                     jjstateSet[jjnewStateCnt++] = 11;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  -                     kind = 11;
  +                  if (curChar != 32)
  +                     break;
  +                  if (kind > 5)
  +                     kind = 5;
  +                  jjCheckNAddTwoStates(1, 2);
                     break;
                  case 2:
  +                  if (curChar == 10 && kind > 5)
  +                     kind = 5;
  +                  break;
  +               case 3:
                     if (curChar == 42)
  -                     jjstateSet[jjnewStateCnt++] = 0;
  +                     jjstateSet[jjnewStateCnt++] = 4;
                     break;
                  case 4:
  -                  if (curChar == 34)
  -                     jjCheckNAddTwoStates(5, 6);
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  case 5:
  -                  if ((0xfffffffbffffdbffL & l) != 0L)
  -                     jjCheckNAddTwoStates(5, 6);
  +                  if (curChar == 42)
  +                     jjstateSet[jjnewStateCnt++] = 3;
                     break;
                  case 6:
  +                  if (curChar == 35)
  +                     jjstateSet[jjnewStateCnt++] = 5;
  +                  break;
  +               case 7:
  +                  if (curChar == 34)
  +                     jjCheckNAddTwoStates(8, 9);
  +                  break;
  +               case 8:
  +                  if ((0xfffffffbffffdbffL & l) != 0L)
  +                     jjCheckNAddTwoStates(8, 9);
  +                  break;
  +               case 9:
                     if (curChar == 34 && kind > 20)
                        kind = 20;
                     break;
  -               case 7:
  +               case 10:
                     if ((0x2400L & l) != 0L && kind > 23)
                        kind = 23;
                     break;
  -               case 8:
  +               case 11:
                     if (curChar == 10 && kind > 23)
                        kind = 23;
                     break;
  -               case 9:
  +               case 12:
                     if (curChar == 13)
  -                     jjstateSet[jjnewStateCnt++] = 8;
  +                     jjstateSet[jjnewStateCnt++] = 11;
                     break;
  -               case 10:
  +               case 14:
  +                  if (curChar == 10 && kind > 39)
  +                     kind = 39;
  +                  break;
  +               case 17:
                     if ((0x3ff000000000000L & l) == 0L)
                        break;
                     if (kind > 47)
                        kind = 47;
  -                  jjCheckNAdd(10);
  +                  jjCheckNAdd(17);
                     break;
                  default : break;
               }
  @@ -634,20 +712,50 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 3:
  -               case 11:
  +               case 15:
  +                  if ((0x7fffffe07fffffeL & l) != 0L)
  +                  {
  +                     if (kind > 49)
  +                        kind = 49;
  +                     jjCheckNAdd(18);
  +                  }
  +                  if (curChar == 110)
  +                     jjstateSet[jjnewStateCnt++] = 13;
  +                  break;
  +               case 0:
  +                  if ((0x7fffffe07fffffeL & l) != 0L)
  +                  {
  +                     if (kind > 49)
  +                        kind = 49;
  +                     jjCheckNAdd(18);
  +                  }
  +                  if (curChar == 101)
  +                     jjstateSet[jjnewStateCnt++] = 15;
  +                  break;
  +               case 4:
  +                  if (kind > 9)
  +                     kind = 9;
  +                  break;
  +               case 8:
  +                  jjAddStates(0, 1);
  +                  break;
  +               case 13:
  +                  if (curChar != 100)
  +                     break;
  +                  if (kind > 39)
  +                     kind = 39;
  +                  jjstateSet[jjnewStateCnt++] = 14;
  +                  break;
  +               case 16:
  +                  if (curChar == 101)
  +                     jjstateSet[jjnewStateCnt++] = 15;
  +                  break;
  +               case 18:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
                     if (kind > 49)
                        kind = 49;
  -                  jjCheckNAdd(11);
  -                  break;
  -               case 1:
  -                  if (kind > 11)
  -                     kind = 11;
  -                  break;
  -               case 5:
  -                  jjAddStates(0, 1);
  +                  jjCheckNAdd(18);
                     break;
                  default : break;
               }
  @@ -661,11 +769,11 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  -                     kind = 11;
  +               case 4:
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
  +                     kind = 9;
                     break;
  -               case 5:
  +               case 8:
                     if ((jjbitVec0[i2] & l2) != 0L)
                        jjAddStates(0, 1);
                     break;
  @@ -680,81 +788,81 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 12 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 19 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
      }
   }
  -private final int jjStopStringLiteralDfa_5(int pos, long active0)
  +private final int jjStopStringLiteralDfa_4(int pos, long active0)
   {
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x3400L) != 0L)
  +         if ((active0 & 0xd00L) != 0L)
               return 2;
            return -1;
         default :
            return -1;
      }
   }
  -private final int jjStartNfa_5(int pos, long active0)
  +private final int jjStartNfa_4(int pos, long active0)
   {
  -   return jjMoveNfa_5(jjStopStringLiteralDfa_5(pos, active0), pos + 1);
  +   return jjMoveNfa_4(jjStopStringLiteralDfa_4(pos, active0), pos + 1);
   }
  -private final int jjStartNfaWithStates_5(int pos, int kind, int state)
  +private final int jjStartNfaWithStates_4(int pos, int kind, int state)
   {
      jjmatchedKind = kind;
      jjmatchedPos = pos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return pos + 1; }
  -   return jjMoveNfa_5(state, pos + 1);
  +   return jjMoveNfa_4(state, pos + 1);
   }
  -private final int jjMoveStringLiteralDfa0_5()
  +private final int jjMoveStringLiteralDfa0_4()
   {
      switch(curChar)
      {
         case 35:
  -         jjmatchedKind = 13;
  -         return jjMoveStringLiteralDfa1_5(0x1400L);
  +         jjmatchedKind = 11;
  +         return jjMoveStringLiteralDfa1_4(0x500L);
         case 36:
  -         jjmatchedKind = 8;
  -         return jjMoveStringLiteralDfa1_5(0x200L);
  +         jjmatchedKind = 6;
  +         return jjMoveStringLiteralDfa1_4(0x80L);
         case 42:
  -         return jjMoveStringLiteralDfa1_5(0x10000L);
  +         return jjMoveStringLiteralDfa1_4(0x10000L);
         default :
  -         return jjMoveNfa_5(3, 0);
  +         return jjMoveNfa_4(3, 0);
      }
   }
  -private final int jjMoveStringLiteralDfa1_5(long active0)
  +private final int jjMoveStringLiteralDfa1_4(long active0)
   {
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_5(0, active0);
  +      jjStopStringLiteralDfa_4(0, active0);
         return 1;
      }
      switch(curChar)
      {
         case 33:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  +         if ((active0 & 0x80L) != 0L)
  +            return jjStopAtPos(1, 7);
            break;
         case 35:
  -         if ((active0 & 0x400L) != 0L)
  -            return jjStopAtPos(1, 10);
  +         if ((active0 & 0x100L) != 0L)
  +            return jjStopAtPos(1, 8);
            else if ((active0 & 0x10000L) != 0L)
               return jjStopAtPos(1, 16);
            break;
         case 42:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStartNfaWithStates_5(1, 12, 0);
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStartNfaWithStates_4(1, 10, 0);
            break;
         default :
            break;
      }
  -   return jjStartNfa_5(0, active0);
  +   return jjStartNfa_4(0, active0);
   }
  -private final int jjMoveNfa_5(int startState, int curPos)
  +private final int jjMoveNfa_4(int startState, int curPos)
   {
      int[] nextStates;
      int startsAt = 0;
  @@ -778,8 +886,8 @@
                        jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  -                     kind = 11;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  case 2:
                     if (curChar == 42)
  @@ -801,7 +909,7 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  kind = 11;
  +                  kind = 9;
                     break;
                  default : break;
               }
  @@ -816,8 +924,8 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  -                     kind = 11;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  default : break;
               }
  @@ -836,12 +944,12 @@
         catch(java.io.IOException e) { return curPos; }
      }
   }
  -private final int jjStopStringLiteralDfa_4(int pos, long active0)
  +private final int jjStopStringLiteralDfa_3(int pos, long active0)
   {
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x3400L) != 0L)
  +         if ((active0 & 0xd00L) != 0L)
               return 2;
            if ((active0 & 0x600000L) != 0L)
            {
  @@ -856,7 +964,7 @@
               jjmatchedPos = 1;
               return 8;
            }
  -         if ((active0 & 0x1000L) != 0L)
  +         if ((active0 & 0x400L) != 0L)
               return 0;
            return -1;
         case 2:
  @@ -881,133 +989,133 @@
            return -1;
      }
   }
  -private final int jjStartNfa_4(int pos, long active0)
  +private final int jjStartNfa_3(int pos, long active0)
   {
  -   return jjMoveNfa_4(jjStopStringLiteralDfa_4(pos, active0), pos + 1);
  +   return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
   }
  -private final int jjStartNfaWithStates_4(int pos, int kind, int state)
  +private final int jjStartNfaWithStates_3(int pos, int kind, int state)
   {
      jjmatchedKind = kind;
      jjmatchedPos = pos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return pos + 1; }
  -   return jjMoveNfa_4(state, pos + 1);
  +   return jjMoveNfa_3(state, pos + 1);
   }
  -private final int jjMoveStringLiteralDfa0_4()
  +private final int jjMoveStringLiteralDfa0_3()
   {
      switch(curChar)
      {
         case 35:
  -         jjmatchedKind = 13;
  -         return jjMoveStringLiteralDfa1_4(0x1400L);
  +         jjmatchedKind = 11;
  +         return jjMoveStringLiteralDfa1_3(0x500L);
         case 36:
  -         jjmatchedKind = 8;
  -         return jjMoveStringLiteralDfa1_4(0x200L);
  +         jjmatchedKind = 6;
  +         return jjMoveStringLiteralDfa1_3(0x80L);
         case 102:
  -         return jjMoveStringLiteralDfa1_4(0x400000L);
  +         return jjMoveStringLiteralDfa1_3(0x400000L);
         case 116:
  -         return jjMoveStringLiteralDfa1_4(0x200000L);
  +         return jjMoveStringLiteralDfa1_3(0x200000L);
         case 123:
            return jjStopAtPos(0, 55);
         case 125:
            return jjStopAtPos(0, 56);
         default :
  -         return jjMoveNfa_4(3, 0);
  +         return jjMoveNfa_3(3, 0);
      }
   }
  -private final int jjMoveStringLiteralDfa1_4(long active0)
  +private final int jjMoveStringLiteralDfa1_3(long active0)
   {
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_4(0, active0);
  +      jjStopStringLiteralDfa_3(0, active0);
         return 1;
      }
      switch(curChar)
      {
         case 33:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  +         if ((active0 & 0x80L) != 0L)
  +            return jjStopAtPos(1, 7);
            break;
         case 35:
  -         if ((active0 & 0x400L) != 0L)
  -            return jjStopAtPos(1, 10);
  +         if ((active0 & 0x100L) != 0L)
  +            return jjStopAtPos(1, 8);
            break;
         case 42:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStartNfaWithStates_4(1, 12, 0);
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStartNfaWithStates_3(1, 10, 0);
            break;
         case 97:
  -         return jjMoveStringLiteralDfa2_4(active0, 0x400000L);
  +         return jjMoveStringLiteralDfa2_3(active0, 0x400000L);
         case 114:
  -         return jjMoveStringLiteralDfa2_4(active0, 0x200000L);
  +         return jjMoveStringLiteralDfa2_3(active0, 0x200000L);
         default :
            break;
      }
  -   return jjStartNfa_4(0, active0);
  +   return jjStartNfa_3(0, active0);
   }
  -private final int jjMoveStringLiteralDfa2_4(long old0, long active0)
  +private final int jjMoveStringLiteralDfa2_3(long old0, long active0)
   {
      if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_4(0, old0); 
  +      return jjStartNfa_3(0, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_4(1, active0);
  +      jjStopStringLiteralDfa_3(1, active0);
         return 2;
      }
      switch(curChar)
      {
         case 108:
  -         return jjMoveStringLiteralDfa3_4(active0, 0x400000L);
  +         return jjMoveStringLiteralDfa3_3(active0, 0x400000L);
         case 117:
  -         return jjMoveStringLiteralDfa3_4(active0, 0x200000L);
  +         return jjMoveStringLiteralDfa3_3(active0, 0x200000L);
         default :
            break;
      }
  -   return jjStartNfa_4(1, active0);
  +   return jjStartNfa_3(1, active0);
   }
  -private final int jjMoveStringLiteralDfa3_4(long old0, long active0)
  +private final int jjMoveStringLiteralDfa3_3(long old0, long active0)
   {
      if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_4(1, old0); 
  +      return jjStartNfa_3(1, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_4(2, active0);
  +      jjStopStringLiteralDfa_3(2, active0);
         return 3;
      }
      switch(curChar)
      {
         case 101:
            if ((active0 & 0x200000L) != 0L)
  -            return jjStartNfaWithStates_4(3, 21, 8);
  +            return jjStartNfaWithStates_3(3, 21, 8);
            break;
         case 115:
  -         return jjMoveStringLiteralDfa4_4(active0, 0x400000L);
  +         return jjMoveStringLiteralDfa4_3(active0, 0x400000L);
         default :
            break;
      }
  -   return jjStartNfa_4(2, active0);
  +   return jjStartNfa_3(2, active0);
   }
  -private final int jjMoveStringLiteralDfa4_4(long old0, long active0)
  +private final int jjMoveStringLiteralDfa4_3(long old0, long active0)
   {
      if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_4(2, old0); 
  +      return jjStartNfa_3(2, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_4(3, active0);
  +      jjStopStringLiteralDfa_3(3, active0);
         return 4;
      }
      switch(curChar)
      {
         case 101:
            if ((active0 & 0x400000L) != 0L)
  -            return jjStartNfaWithStates_4(4, 22, 8);
  +            return jjStartNfaWithStates_3(4, 22, 8);
            break;
         default :
            break;
      }
  -   return jjStartNfa_4(3, active0);
  +   return jjStartNfa_3(3, active0);
   }
  -private final int jjMoveNfa_4(int startState, int curPos)
  +private final int jjMoveNfa_3(int startState, int curPos)
   {
      int[] nextStates;
      int startsAt = 0;
  @@ -1039,8 +1147,8 @@
                        jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  -                     kind = 11;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  case 2:
                     if (curChar == 42)
  @@ -1088,11 +1196,11 @@
                     jjCheckNAdd(8);
                     break;
                  case 1:
  -                  if (kind > 11)
  -                     kind = 11;
  +                  if (kind > 9)
  +                     kind = 9;
                     break;
                  case 5:
  -                  jjAddStates(0, 1);
  +                  jjAddStates(2, 3);
                     break;
                  case 8:
                     if ((0x7fffffe87fffffeL & l) == 0L)
  @@ -1118,12 +1226,12 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  -                     kind = 11;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  case 5:
                     if ((jjbitVec0[i2] & l2) != 0L)
  -                     jjAddStates(0, 1);
  +                     jjAddStates(2, 3);
                     break;
                  default : break;
               }
  @@ -1147,41 +1255,41 @@
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x3400L) != 0L)
  -            return 2;
  +         if ((active0 & 0xd00L) != 0L)
  +            return 5;
            if ((active0 & 0x600000L) != 0L)
            {
               jjmatchedKind = 53;
  -            return 8;
  +            return 11;
            }
            return -1;
         case 1:
  +         if ((active0 & 0x400L) != 0L)
  +            return 3;
            if ((active0 & 0x600000L) != 0L)
            {
               jjmatchedKind = 53;
               jjmatchedPos = 1;
  -            return 8;
  +            return 11;
            }
  -         if ((active0 & 0x1000L) != 0L)
  -            return 0;
            return -1;
         case 2:
            if ((active0 & 0x600000L) != 0L)
            {
               jjmatchedKind = 53;
               jjmatchedPos = 2;
  -            return 8;
  +            return 11;
            }
            return -1;
         case 3:
  +         if ((active0 & 0x200000L) != 0L)
  +            return 11;
            if ((active0 & 0x400000L) != 0L)
            {
               jjmatchedKind = 53;
               jjmatchedPos = 3;
  -            return 8;
  +            return 11;
            }
  -         if ((active0 & 0x200000L) != 0L)
  -            return 8;
            return -1;
         default :
            return -1;
  @@ -1204,15 +1312,13 @@
      switch(curChar)
      {
         case 35:
  -         jjmatchedKind = 13;
  -         return jjMoveStringLiteralDfa1_1(0x1400L);
  +         jjmatchedKind = 11;
  +         return jjMoveStringLiteralDfa1_1(0x500L);
         case 36:
  -         jjmatchedKind = 8;
  -         return jjMoveStringLiteralDfa1_1(0x200L);
  +         jjmatchedKind = 6;
  +         return jjMoveStringLiteralDfa1_1(0x80L);
         case 40:
            return jjStopAtPos(0, 4);
  -      case 41:
  -         return jjStopAtPos(0, 5);
         case 91:
            return jjStopAtPos(0, 1);
         case 93:
  @@ -1226,7 +1332,7 @@
         case 125:
            return jjStopAtPos(0, 56);
         default :
  -         return jjMoveNfa_1(3, 0);
  +         return jjMoveNfa_1(0, 0);
      }
   }
   private final int jjMoveStringLiteralDfa1_1(long active0)
  @@ -1239,16 +1345,16 @@
      switch(curChar)
      {
         case 33:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  +         if ((active0 & 0x80L) != 0L)
  +            return jjStopAtPos(1, 7);
            break;
         case 35:
  -         if ((active0 & 0x400L) != 0L)
  -            return jjStopAtPos(1, 10);
  +         if ((active0 & 0x100L) != 0L)
  +            return jjStopAtPos(1, 8);
            break;
         case 42:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStartNfaWithStates_1(1, 12, 0);
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStartNfaWithStates_1(1, 10, 3);
            break;
         case 97:
            return jjMoveStringLiteralDfa2_1(active0, 0x400000L);
  @@ -1292,7 +1398,7 @@
      {
         case 101:
            if ((active0 & 0x200000L) != 0L)
  -            return jjStartNfaWithStates_1(3, 21, 8);
  +            return jjStartNfaWithStates_1(3, 21, 11);
            break;
         case 115:
            return jjMoveStringLiteralDfa4_1(active0, 0x400000L);
  @@ -1314,7 +1420,7 @@
      {
         case 101:
            if ((active0 & 0x400000L) != 0L)
  -            return jjStartNfaWithStates_1(4, 22, 8);
  +            return jjStartNfaWithStates_1(4, 22, 11);
            break;
         default :
            break;
  @@ -1325,7 +1431,7 @@
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 11;
  +   jjnewStateCnt = 14;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -1340,48 +1446,69 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 3:
  +               case 0:
                     if (curChar == 46)
  -                     jjstateSet[jjnewStateCnt++] = 10;
  +                     jjstateSet[jjnewStateCnt++] = 13;
                     else if (curChar == 34)
  -                     jjCheckNAddTwoStates(5, 6);
  +                     jjCheckNAddTwoStates(8, 9);
                     else if (curChar == 35)
  -                     jjstateSet[jjnewStateCnt++] = 2;
  -                  break;
  -               case 0:
  -                  if (curChar == 42)
  -                     jjstateSet[jjnewStateCnt++] = 1;
  +                     jjstateSet[jjnewStateCnt++] = 5;
  +                  else if (curChar == 41)
  +                  {
  +                     if (kind > 5)
  +                        kind = 5;
  +                     jjCheckNAddTwoStates(1, 2);
  +                  }
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  -                     kind = 11;
  +                  if (curChar != 32)
  +                     break;
  +                  if (kind > 5)
  +                     kind = 5;
  +                  jjCheckNAddTwoStates(1, 2);
                     break;
                  case 2:
  +                  if (curChar == 10 && kind > 5)
  +                     kind = 5;
  +                  break;
  +               case 3:
                     if (curChar == 42)
  -                     jjstateSet[jjnewStateCnt++] = 0;
  +                     jjstateSet[jjnewStateCnt++] = 4;
                     break;
                  case 4:
  -                  if (curChar == 34)
  -                     jjCheckNAddTwoStates(5, 6);
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  case 5:
  -                  if ((0xfffffffbffffdbffL & l) != 0L)
  -                     jjCheckNAddTwoStates(5, 6);
  +                  if (curChar == 42)
  +                     jjstateSet[jjnewStateCnt++] = 3;
                     break;
                  case 6:
  +                  if (curChar == 35)
  +                     jjstateSet[jjnewStateCnt++] = 5;
  +                  break;
  +               case 7:
  +                  if (curChar == 34)
  +                     jjCheckNAddTwoStates(8, 9);
  +                  break;
  +               case 8:
  +                  if ((0xfffffffbffffdbffL & l) != 0L)
  +                     jjCheckNAddTwoStates(8, 9);
  +                  break;
  +               case 9:
                     if (curChar == 34 && kind > 20)
                        kind = 20;
                     break;
  -               case 8:
  +               case 11:
                     if ((0x3ff200000000000L & l) == 0L)
                        break;
                     if (kind > 53)
                        kind = 53;
  -                  jjstateSet[jjnewStateCnt++] = 8;
  +                  jjstateSet[jjnewStateCnt++] = 11;
                     break;
  -               case 9:
  +               case 12:
                     if (curChar == 46)
  -                     jjstateSet[jjnewStateCnt++] = 10;
  +                     jjstateSet[jjnewStateCnt++] = 13;
                     break;
                  default : break;
               }
  @@ -1394,28 +1521,28 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 3:
  +               case 0:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
                     if (kind > 53)
                        kind = 53;
  -                  jjCheckNAdd(8);
  +                  jjCheckNAdd(11);
                     break;
  -               case 1:
  -                  if (kind > 11)
  -                     kind = 11;
  +               case 4:
  +                  if (kind > 9)
  +                     kind = 9;
                     break;
  -               case 5:
  +               case 8:
                     jjAddStates(0, 1);
                     break;
  -               case 8:
  +               case 11:
                     if ((0x7fffffe87fffffeL & l) == 0L)
                        break;
                     if (kind > 53)
                        kind = 53;
  -                  jjCheckNAdd(8);
  +                  jjCheckNAdd(11);
                     break;
  -               case 10:
  +               case 13:
                     if ((0x7fffffe07fffffeL & l) != 0L && kind > 54)
                        kind = 54;
                     break;
  @@ -1431,11 +1558,11 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  -                     kind = 11;
  +               case 4:
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
  +                     kind = 9;
                     break;
  -               case 5:
  +               case 8:
                     if ((jjbitVec0[i2] & l2) != 0L)
                        jjAddStates(0, 1);
                     break;
  @@ -1450,81 +1577,81 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 11 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 14 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
      }
   }
  -private final int jjStopStringLiteralDfa_6(int pos, long active0)
  +private final int jjStopStringLiteralDfa_5(int pos, long active0)
   {
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x3400L) != 0L)
  +         if ((active0 & 0xd00L) != 0L)
               return 2;
            return -1;
         default :
            return -1;
      }
   }
  -private final int jjStartNfa_6(int pos, long active0)
  +private final int jjStartNfa_5(int pos, long active0)
   {
  -   return jjMoveNfa_6(jjStopStringLiteralDfa_6(pos, active0), pos + 1);
  +   return jjMoveNfa_5(jjStopStringLiteralDfa_5(pos, active0), pos + 1);
   }
  -private final int jjStartNfaWithStates_6(int pos, int kind, int state)
  +private final int jjStartNfaWithStates_5(int pos, int kind, int state)
   {
      jjmatchedKind = kind;
      jjmatchedPos = pos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return pos + 1; }
  -   return jjMoveNfa_6(state, pos + 1);
  +   return jjMoveNfa_5(state, pos + 1);
   }
  -private final int jjMoveStringLiteralDfa0_6()
  +private final int jjMoveStringLiteralDfa0_5()
   {
      switch(curChar)
      {
         case 35:
  -         jjmatchedKind = 13;
  -         return jjMoveStringLiteralDfa1_6(0x1400L);
  +         jjmatchedKind = 11;
  +         return jjMoveStringLiteralDfa1_5(0x500L);
         case 36:
  -         jjmatchedKind = 8;
  -         return jjMoveStringLiteralDfa1_6(0x200L);
  +         jjmatchedKind = 6;
  +         return jjMoveStringLiteralDfa1_5(0x80L);
         case 42:
  -         return jjMoveStringLiteralDfa1_6(0x8000L);
  +         return jjMoveStringLiteralDfa1_5(0x8000L);
         default :
  -         return jjMoveNfa_6(3, 0);
  +         return jjMoveNfa_5(3, 0);
      }
   }
  -private final int jjMoveStringLiteralDfa1_6(long active0)
  +private final int jjMoveStringLiteralDfa1_5(long active0)
   {
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_6(0, active0);
  +      jjStopStringLiteralDfa_5(0, active0);
         return 1;
      }
      switch(curChar)
      {
         case 33:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  +         if ((active0 & 0x80L) != 0L)
  +            return jjStopAtPos(1, 7);
            break;
         case 35:
  -         if ((active0 & 0x400L) != 0L)
  -            return jjStopAtPos(1, 10);
  +         if ((active0 & 0x100L) != 0L)
  +            return jjStopAtPos(1, 8);
            else if ((active0 & 0x8000L) != 0L)
               return jjStopAtPos(1, 15);
            break;
         case 42:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStartNfaWithStates_6(1, 12, 0);
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStartNfaWithStates_5(1, 10, 0);
            break;
         default :
            break;
      }
  -   return jjStartNfa_6(0, active0);
  +   return jjStartNfa_5(0, active0);
   }
  -private final int jjMoveNfa_6(int startState, int curPos)
  +private final int jjMoveNfa_5(int startState, int curPos)
   {
      int[] nextStates;
      int startsAt = 0;
  @@ -1548,8 +1675,8 @@
                        jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  -                     kind = 11;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  case 2:
                     if (curChar == 42)
  @@ -1571,7 +1698,7 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  kind = 11;
  +                  kind = 9;
                     break;
                  default : break;
               }
  @@ -1586,8 +1713,8 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  -                     kind = 11;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  default : break;
               }
  @@ -1611,41 +1738,41 @@
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x3400L) != 0L)
  -            return 2;
  +         if ((active0 & 0xd00L) != 0L)
  +            return 5;
            if ((active0 & 0x600000L) != 0L)
            {
               jjmatchedKind = 53;
  -            return 8;
  +            return 11;
            }
            return -1;
         case 1:
  +         if ((active0 & 0x400L) != 0L)
  +            return 3;
            if ((active0 & 0x600000L) != 0L)
            {
               jjmatchedKind = 53;
               jjmatchedPos = 1;
  -            return 8;
  +            return 11;
            }
  -         if ((active0 & 0x1000L) != 0L)
  -            return 0;
            return -1;
         case 2:
            if ((active0 & 0x600000L) != 0L)
            {
               jjmatchedKind = 53;
               jjmatchedPos = 2;
  -            return 8;
  +            return 11;
            }
            return -1;
         case 3:
  +         if ((active0 & 0x200000L) != 0L)
  +            return 11;
            if ((active0 & 0x400000L) != 0L)
            {
               jjmatchedKind = 53;
               jjmatchedPos = 3;
  -            return 8;
  +            return 11;
            }
  -         if ((active0 & 0x200000L) != 0L)
  -            return 8;
            return -1;
         default :
            return -1;
  @@ -1668,15 +1795,13 @@
      switch(curChar)
      {
         case 35:
  -         jjmatchedKind = 13;
  -         return jjMoveStringLiteralDfa1_2(0x1400L);
  +         jjmatchedKind = 11;
  +         return jjMoveStringLiteralDfa1_2(0x500L);
         case 36:
  -         jjmatchedKind = 8;
  -         return jjMoveStringLiteralDfa1_2(0x200L);
  +         jjmatchedKind = 6;
  +         return jjMoveStringLiteralDfa1_2(0x80L);
         case 40:
            return jjStopAtPos(0, 4);
  -      case 41:
  -         return jjStopAtPos(0, 5);
         case 44:
            return jjStopAtPos(0, 3);
         case 91:
  @@ -1692,7 +1817,7 @@
         case 125:
            return jjStopAtPos(0, 56);
         default :
  -         return jjMoveNfa_2(3, 0);
  +         return jjMoveNfa_2(0, 0);
      }
   }
   private final int jjMoveStringLiteralDfa1_2(long active0)
  @@ -1705,16 +1830,16 @@
      switch(curChar)
      {
         case 33:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  +         if ((active0 & 0x80L) != 0L)
  +            return jjStopAtPos(1, 7);
            break;
         case 35:
  -         if ((active0 & 0x400L) != 0L)
  -            return jjStopAtPos(1, 10);
  +         if ((active0 & 0x100L) != 0L)
  +            return jjStopAtPos(1, 8);
            break;
         case 42:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStartNfaWithStates_2(1, 12, 0);
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStartNfaWithStates_2(1, 10, 3);
            break;
         case 97:
            return jjMoveStringLiteralDfa2_2(active0, 0x400000L);
  @@ -1758,7 +1883,7 @@
      {
         case 101:
            if ((active0 & 0x200000L) != 0L)
  -            return jjStartNfaWithStates_2(3, 21, 8);
  +            return jjStartNfaWithStates_2(3, 21, 11);
            break;
         case 115:
            return jjMoveStringLiteralDfa4_2(active0, 0x400000L);
  @@ -1780,7 +1905,7 @@
      {
         case 101:
            if ((active0 & 0x400000L) != 0L)
  -            return jjStartNfaWithStates_2(4, 22, 8);
  +            return jjStartNfaWithStates_2(4, 22, 11);
            break;
         default :
            break;
  @@ -1791,7 +1916,7 @@
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 11;
  +   jjnewStateCnt = 14;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -1806,48 +1931,69 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 3:
  +               case 0:
                     if (curChar == 46)
  -                     jjstateSet[jjnewStateCnt++] = 10;
  +                     jjstateSet[jjnewStateCnt++] = 13;
                     else if (curChar == 34)
  -                     jjCheckNAddTwoStates(5, 6);
  +                     jjCheckNAddTwoStates(8, 9);
                     else if (curChar == 35)
  -                     jjstateSet[jjnewStateCnt++] = 2;
  -                  break;
  -               case 0:
  -                  if (curChar == 42)
  -                     jjstateSet[jjnewStateCnt++] = 1;
  +                     jjstateSet[jjnewStateCnt++] = 5;
  +                  else if (curChar == 41)
  +                  {
  +                     if (kind > 5)
  +                        kind = 5;
  +                     jjCheckNAddTwoStates(1, 2);
  +                  }
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  -                     kind = 11;
  +                  if (curChar != 32)
  +                     break;
  +                  if (kind > 5)
  +                     kind = 5;
  +                  jjCheckNAddTwoStates(1, 2);
                     break;
                  case 2:
  +                  if (curChar == 10 && kind > 5)
  +                     kind = 5;
  +                  break;
  +               case 3:
                     if (curChar == 42)
  -                     jjstateSet[jjnewStateCnt++] = 0;
  +                     jjstateSet[jjnewStateCnt++] = 4;
                     break;
                  case 4:
  -                  if (curChar == 34)
  -                     jjCheckNAddTwoStates(5, 6);
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  case 5:
  -                  if ((0xfffffffbffffdbffL & l) != 0L)
  -                     jjCheckNAddTwoStates(5, 6);
  +                  if (curChar == 42)
  +                     jjstateSet[jjnewStateCnt++] = 3;
                     break;
                  case 6:
  +                  if (curChar == 35)
  +                     jjstateSet[jjnewStateCnt++] = 5;
  +                  break;
  +               case 7:
  +                  if (curChar == 34)
  +                     jjCheckNAddTwoStates(8, 9);
  +                  break;
  +               case 8:
  +                  if ((0xfffffffbffffdbffL & l) != 0L)
  +                     jjCheckNAddTwoStates(8, 9);
  +                  break;
  +               case 9:
                     if (curChar == 34 && kind > 20)
                        kind = 20;
                     break;
  -               case 8:
  +               case 11:
                     if ((0x3ff200000000000L & l) == 0L)
                        break;
                     if (kind > 53)
                        kind = 53;
  -                  jjstateSet[jjnewStateCnt++] = 8;
  +                  jjstateSet[jjnewStateCnt++] = 11;
                     break;
  -               case 9:
  +               case 12:
                     if (curChar == 46)
  -                     jjstateSet[jjnewStateCnt++] = 10;
  +                     jjstateSet[jjnewStateCnt++] = 13;
                     break;
                  default : break;
               }
  @@ -1860,28 +2006,28 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 3:
  +               case 0:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
                     if (kind > 53)
                        kind = 53;
  -                  jjCheckNAdd(8);
  +                  jjCheckNAdd(11);
                     break;
  -               case 1:
  -                  if (kind > 11)
  -                     kind = 11;
  +               case 4:
  +                  if (kind > 9)
  +                     kind = 9;
                     break;
  -               case 5:
  +               case 8:
                     jjAddStates(0, 1);
                     break;
  -               case 8:
  +               case 11:
                     if ((0x7fffffe87fffffeL & l) == 0L)
                        break;
                     if (kind > 53)
                        kind = 53;
  -                  jjCheckNAdd(8);
  +                  jjCheckNAdd(11);
                     break;
  -               case 10:
  +               case 13:
                     if ((0x7fffffe07fffffeL & l) != 0L && kind > 54)
                        kind = 54;
                     break;
  @@ -1897,11 +2043,11 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  -                     kind = 11;
  +               case 4:
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
  +                     kind = 9;
                     break;
  -               case 5:
  +               case 8:
                     if ((jjbitVec0[i2] & l2) != 0L)
                        jjAddStates(0, 1);
                     break;
  @@ -1916,77 +2062,77 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 11 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 14 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
      }
   }
  -private final int jjStopStringLiteralDfa_7(int pos, long active0)
  +private final int jjStopStringLiteralDfa_6(int pos, long active0)
   {
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x3400L) != 0L)
  +         if ((active0 & 0xd00L) != 0L)
               return 2;
            return -1;
         default :
            return -1;
      }
   }
  -private final int jjStartNfa_7(int pos, long active0)
  +private final int jjStartNfa_6(int pos, long active0)
   {
  -   return jjMoveNfa_7(jjStopStringLiteralDfa_7(pos, active0), pos + 1);
  +   return jjMoveNfa_6(jjStopStringLiteralDfa_6(pos, active0), pos + 1);
   }
  -private final int jjStartNfaWithStates_7(int pos, int kind, int state)
  +private final int jjStartNfaWithStates_6(int pos, int kind, int state)
   {
      jjmatchedKind = kind;
      jjmatchedPos = pos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return pos + 1; }
  -   return jjMoveNfa_7(state, pos + 1);
  +   return jjMoveNfa_6(state, pos + 1);
   }
  -private final int jjMoveStringLiteralDfa0_7()
  +private final int jjMoveStringLiteralDfa0_6()
   {
      switch(curChar)
      {
         case 35:
  -         jjmatchedKind = 13;
  -         return jjMoveStringLiteralDfa1_7(0x1400L);
  +         jjmatchedKind = 11;
  +         return jjMoveStringLiteralDfa1_6(0x500L);
         case 36:
  -         jjmatchedKind = 8;
  -         return jjMoveStringLiteralDfa1_7(0x200L);
  +         jjmatchedKind = 6;
  +         return jjMoveStringLiteralDfa1_6(0x80L);
         default :
  -         return jjMoveNfa_7(3, 0);
  +         return jjMoveNfa_6(3, 0);
      }
   }
  -private final int jjMoveStringLiteralDfa1_7(long active0)
  +private final int jjMoveStringLiteralDfa1_6(long active0)
   {
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_7(0, active0);
  +      jjStopStringLiteralDfa_6(0, active0);
         return 1;
      }
      switch(curChar)
      {
         case 33:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  +         if ((active0 & 0x80L) != 0L)
  +            return jjStopAtPos(1, 7);
            break;
         case 35:
  -         if ((active0 & 0x400L) != 0L)
  -            return jjStopAtPos(1, 10);
  +         if ((active0 & 0x100L) != 0L)
  +            return jjStopAtPos(1, 8);
            break;
         case 42:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStartNfaWithStates_7(1, 12, 0);
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStartNfaWithStates_6(1, 10, 0);
            break;
         default :
            break;
      }
  -   return jjStartNfa_7(0, active0);
  +   return jjStartNfa_6(0, active0);
   }
  -private final int jjMoveNfa_7(int startState, int curPos)
  +private final int jjMoveNfa_6(int startState, int curPos)
   {
      int[] nextStates;
      int startsAt = 0;
  @@ -2021,8 +2167,8 @@
                        jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  -                     kind = 11;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  case 2:
                     if (curChar == 42)
  @@ -2052,7 +2198,7 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  kind = 11;
  +                  kind = 9;
                     break;
                  default : break;
               }
  @@ -2067,8 +2213,8 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  -                     kind = 11;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  default : break;
               }
  @@ -2087,71 +2233,71 @@
         catch(java.io.IOException e) { return curPos; }
      }
   }
  -private final int jjStopStringLiteralDfa_3(int pos, long active0)
  +private final int jjStopStringLiteralDfa_7(int pos, long active0)
   {
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x3400L) != 0L)
  -            return 5;
  +         if ((active0 & 0xd00L) != 0L)
  +            return 2;
            return -1;
         default :
            return -1;
      }
   }
  -private final int jjStartNfa_3(int pos, long active0)
  +private final int jjStartNfa_7(int pos, long active0)
   {
  -   return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
  +   return jjMoveNfa_7(jjStopStringLiteralDfa_7(pos, active0), pos + 1);
   }
  -private final int jjStartNfaWithStates_3(int pos, int kind, int state)
  +private final int jjStartNfaWithStates_7(int pos, int kind, int state)
   {
      jjmatchedKind = kind;
      jjmatchedPos = pos;
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) { return pos + 1; }
  -   return jjMoveNfa_3(state, pos + 1);
  +   return jjMoveNfa_7(state, pos + 1);
   }
  -private final int jjMoveStringLiteralDfa0_3()
  +private final int jjMoveStringLiteralDfa0_7()
   {
      switch(curChar)
      {
         case 35:
  -         jjmatchedKind = 13;
  -         return jjMoveStringLiteralDfa1_3(0x1400L);
  +         jjmatchedKind = 11;
  +         return jjMoveStringLiteralDfa1_7(0x500L);
         case 36:
  -         jjmatchedKind = 8;
  -         return jjMoveStringLiteralDfa1_3(0x200L);
  +         jjmatchedKind = 6;
  +         return jjMoveStringLiteralDfa1_7(0x80L);
         default :
  -         return jjMoveNfa_3(0, 0);
  +         return jjMoveNfa_7(3, 0);
      }
   }
  -private final int jjMoveStringLiteralDfa1_3(long active0)
  +private final int jjMoveStringLiteralDfa1_7(long active0)
   {
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_3(0, active0);
  +      jjStopStringLiteralDfa_7(0, active0);
         return 1;
      }
      switch(curChar)
      {
         case 33:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  +         if ((active0 & 0x80L) != 0L)
  +            return jjStopAtPos(1, 7);
            break;
         case 35:
  -         if ((active0 & 0x400L) != 0L)
  -            return jjStopAtPos(1, 10);
  +         if ((active0 & 0x100L) != 0L)
  +            return jjStopAtPos(1, 8);
            break;
         case 42:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStartNfaWithStates_3(1, 12, 3);
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStartNfaWithStates_7(1, 10, 0);
            break;
         default :
            break;
      }
  -   return jjStartNfa_3(0, active0);
  +   return jjStartNfa_7(0, active0);
   }
  -private final int jjMoveNfa_3(int startState, int curPos)
  +private final int jjMoveNfa_7(int startState, int curPos)
   {
      int[] nextStates;
      int startsAt = 0;
  @@ -2170,42 +2316,38 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 0:
  +               case 3:
                     if ((0xffffffe7ffffffffL & l) != 0L)
                     {
  -                     if (kind > 7)
  -                        kind = 7;
  -                     jjCheckNAdd(2);
  +                     if (kind > 13)
  +                        kind = 13;
  +                     jjCheckNAdd(6);
                     }
                     else if (curChar == 35)
  -                     jjstateSet[jjnewStateCnt++] = 5;
  +                     jjstateSet[jjnewStateCnt++] = 2;
  +                  break;
  +               case 0:
  +                  if (curChar == 42)
  +                     jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if (kind > 6)
  -                     kind = 6;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 9)
  +                     kind = 9;
                     break;
                  case 2:
  -                  if ((0xffffffe7ffffffffL & l) == 0L)
  -                     break;
  -                  if (kind > 7)
  -                     kind = 7;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 3:
                     if (curChar == 42)
  -                     jjstateSet[jjnewStateCnt++] = 4;
  -                  break;
  -               case 4:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  -                     kind = 11;
  +                     jjstateSet[jjnewStateCnt++] = 0;
                     break;
                  case 5:
  -                  if (curChar == 42)
  -                     jjstateSet[jjnewStateCnt++] = 3;
  +                  if (kind > 12)
  +                     kind = 12;
                     break;
                  case 6:
  -                  if (curChar == 35)
  -                     jjstateSet[jjnewStateCnt++] = 5;
  +                  if ((0xffffffe7ffffffffL & l) == 0L)
  +                     break;
  +                  if (kind > 13)
  +                     kind = 13;
  +                  jjCheckNAdd(6);
                     break;
                  default : break;
               }
  @@ -2218,30 +2360,34 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 0:
  +               case 3:
                     if ((0xffffffffefffffffL & l) != 0L)
                     {
  -                     if (kind > 7)
  -                        kind = 7;
  -                     jjCheckNAdd(2);
  +                     if (kind > 13)
  +                        kind = 13;
  +                     jjCheckNAdd(6);
                     }
                     else if (curChar == 92)
  -                     jjstateSet[jjnewStateCnt++] = 1;
  +                     jjstateSet[jjnewStateCnt++] = 5;
                     break;
                  case 1:
  -                  if (kind > 6)
  -                     kind = 6;
  +                  if (kind > 9)
  +                     kind = 9;
                     break;
  -               case 2:
  +               case 4:
  +                  if (curChar == 92)
  +                     jjstateSet[jjnewStateCnt++] = 5;
  +                  break;
  +               case 5:
  +                  if (kind > 12)
  +                     kind = 12;
  +                  break;
  +               case 6:
                     if ((0xffffffffefffffffL & l) == 0L)
                        break;
  -                  if (kind > 7)
  -                     kind = 7;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 4:
  -                  if (kind > 11)
  -                     kind = 11;
  +                  if (kind > 13)
  +                     kind = 13;
  +                  jjCheckNAdd(6);
                     break;
                  default : break;
               }
  @@ -2255,21 +2401,21 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 0:
  -               case 2:
  +               case 3:
  +               case 6:
                     if ((jjbitVec0[i2] & l2) == 0L)
                        break;
  -                  if (kind > 7)
  -                     kind = 7;
  -                  jjCheckNAdd(2);
  +                  if (kind > 13)
  +                     kind = 13;
  +                  jjCheckNAdd(6);
                     break;
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 6)
  -                     kind = 6;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 9)
  +                     kind = 9;
                     break;
  -               case 4:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  -                     kind = 11;
  +               case 5:
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 12)
  +                     kind = 12;
                     break;
                  default : break;
               }
  @@ -2289,7 +2435,7 @@
      }
   }
   static final int[] jjnextStates = {
  -   5, 6, 
  +   8, 9, 5, 6, 
   };
   public static final String[] jjstrLiteralImages = {
   null, null, null, null, null, null, null, null, null, null, null, null, null, 
  @@ -2301,32 +2447,32 @@
      "DIRECTIVE", 
      "REFMODIFIER", 
      "REFMOD2", 
  -   "DEFAULT", 
      "REFERENCE", 
      "IN_MULTI_LINE_COMMENT", 
      "IN_FORMAL_COMMENT", 
      "IN_SINGLE_LINE_COMMENT", 
  +   "DEFAULT", 
   };
   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, 3, -1, 
-1, -1, -1, -1, -1, 
      -1, -1, -1, -1, -1, -1, -1, -1, 
   };
   static final long[] jjtoToken = {
  -   0x1e2bfffff71c0ffL, 
  +   0x1e2bffffff1f03fL, 
   };
   static final long[] jjtoSkip = {
  -   0x2000000008c0000L, 
  +   0x2000000000c0000L, 
   };
   static final long[] jjtoSpecial = {
  -   0x200000000800000L, 
  +   0x200000000000000L, 
   };
   static final long[] jjtoMore = {
  -   0x23f00L, 
  +   0x20fc0L, 
   };
   private ASCII_CharStream input_stream;
  -private final int[] jjrounds = new int[12];
  -private final int[] jjstateSet = new int[24];
  +private final int[] jjrounds = new int[19];
  +private final int[] jjstateSet = new int[38];
   StringBuffer image;
   int jjimageLen;
   int lengthOfMatch;
  @@ -2353,7 +2499,7 @@
   {
      int i;
      jjround = 0x80000001;
  -   for (i = 12; i-- > 0;)
  +   for (i = 19; i-- > 0;)
         jjrounds[i] = 0x80000000;
   }
   public void ReInit(ASCII_CharStream stream, int lexState)
  @@ -2382,8 +2528,8 @@
      return t;
   }
   
  -int curLexState = 3;
  -int defaultLexState = 3;
  +int curLexState = 7;
  +int defaultLexState = 7;
   int jjnewStateCnt;
   int jjround;
   int jjmatchedPos;
  @@ -2455,14 +2601,18 @@
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_3();
  +         if (jjmatchedPos == 0 && jjmatchedKind > 57)
  +         {
  +            jjmatchedKind = 57;
  +         }
            break;
          case 4:
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_4();
  -         if (jjmatchedPos == 0 && jjmatchedKind > 57)
  +         if (jjmatchedPos == 0 && jjmatchedKind > 17)
            {
  -            jjmatchedKind = 57;
  +            jjmatchedKind = 17;
            }
            break;
          case 5:
  @@ -2487,10 +2637,6 @@
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_7();
  -         if (jjmatchedPos == 0 && jjmatchedKind > 17)
  -         {
  -            jjmatchedKind = 17;
  -         }
            break;
        }
        if (jjmatchedKind != 0x7fffffff)
  @@ -2566,20 +2712,6 @@
   {
      switch(jjmatchedKind)
      {
  -      case 23 :
  -         if (image == null)
  -            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
  -         else
  -            image.append(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
  -        if (inSet)
  -       {
  -           if ( bDebugPrint_ )
  -                System.out.print(" NEWLINE :");
  -            stateStackPop();
  -           inSet = false;
  -           inDirective = false;
  -        }
  -         break;
         case 57 :
            if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
  @@ -2589,7 +2721,7 @@
            *  These can terminate a reference, but are needed in subsequent states
            */
   
  -        if (image.toString().equals("="))
  +        if (image.toString().equals("=") || image.toString().equals("\n"))
           {
               input_stream.backup(1);
           }
  @@ -2609,7 +2741,6 @@
                                           || image.toString().equals(",")
                                           || image.toString().equals("[")
                                           || image.toString().equals("]")
  -                                        || image.toString().equals("\n")
                                           ) )
           {
               input_stream.backup(1);
  @@ -2624,7 +2755,7 @@
      jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
      switch(jjmatchedKind)
      {
  -      case 8 :
  +      case 6 :
            if (image == null)
                 image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
            else
  @@ -2641,7 +2772,7 @@
               SwitchTo(REFERENCE);
           }
            break;
  -      case 9 :
  +      case 7 :
            if (image == null)
                 image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
            else
  @@ -2658,7 +2789,7 @@
               SwitchTo(REFERENCE);
           }
            break;
  -      case 10 :
  +      case 8 :
            if (image == null)
                 image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
            else
  @@ -2668,7 +2799,7 @@
           stateStackPush();
           SwitchTo(IN_SINGLE_LINE_COMMENT);
            break;
  -      case 11 :
  +      case 9 :
            if (image == null)
                 image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
            else
  @@ -2679,7 +2810,7 @@
           stateStackPush();
           SwitchTo( IN_FORMAL_COMMENT);
            break;
  -      case 12 :
  +      case 10 :
            if (image == null)
                 image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
            else
  @@ -2689,7 +2820,7 @@
           stateStackPush();
           SwitchTo( IN_MULTI_LINE_COMMENT );
            break;
  -      case 13 :
  +      case 11 :
            if (image == null)
                 image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
            else
  @@ -2734,53 +2865,7 @@
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
               image.append(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
  -        /*
  -         *  Ultimately, we want to drop down to the state below the one that has an 
open (
  -         *  if we hit bottom (DEFAULT), that's fine. It's just text schmoo.
  -         *
  -         */
  -
  -
  -        boolean bClosed = false;
  -
  -        if (inComment)
  -            bClosed = true;
  -
  -        while( !bClosed)
  -        {
  -            /*
  -             * look at current state.  If we haven't seen a lparen in this state
  -             * then we drop a state, because this lparen clearly closes our state
  -             */
  -
  -            if( lparen > 0)
  -            {
  -                /*
  -                 *  if rparen + 1 == lparen, then this state is closed. Otherwise, 
increment
  -                 *  and keep parsing
  -                 */
  -
  -                 if( lparen == rparen + 1)
  -                 {
  -                       stateStackPop();
  -                 }
  -                else
  -                {
  -                    rparen++;
  -                }
  -
  -                 bClosed = true;
  -            }
  -            else
  -            {
  -                /*
  -                 * now, drop a state
  -                 */
  -
  -                if(!stateStackPop())
  -                    break;
  -            }
  -        }
  +       RPARENHandler();
            break;
         case 14 :
           if (image == null)
  @@ -2817,9 +2902,38 @@
               pushFile(matchedToken.image);
           }
           incMode = false;
  +
  +       // from jason :
  +       // if (lparen == 0)
  +       //     SwitchTo(DEFAULT);
  +
  +        /*
  +         *  - if we are in REFERENCE || REFMODIFIER then " is an ender
  +         *  - if we are in DIRECTIVE and haven't seen ( yet, then also drop out. 
  +         *      don't forget to account for the beloved yet wierd #set
  +         *  - finally, if we are in REFMOD2 (remember : $foo.bar( ) then " is ok!
  +         */
  +
  +        if (curLexState == REFERENCE || curLexState == REFMODIFIER)
  +            stateStackPop();
  +        else if( curLexState == DIRECTIVE && !inSet && lparen == 0)
  +            stateStackPop();
  +         break;
  +      case 23 :
  +        if (image == null)
  +            image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
  +         else
  +            image.append(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
  +        if ( bDebugPrint_ )
  +            System.out.println(" NEWLINE :");
  +
  +        stateStackPop();
   
  -        if (lparen == 0)
  -            SwitchTo(DEFAULT);
  +        if (inSet)
  +            inSet = false;
  +
  +        if (inDirective)
  +            inDirective = false;
            break;
         case 39 :
           if (image == null)
  @@ -2836,30 +2950,28 @@
               image.append(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
         incMode = true;
            break;
  -      case 44 :
  +      case 43 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
               image.append(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
  -      inSet = true;
  +        inDirective = false;
  +        stateStackPop();
            break;
  -      case 45 :
  +      case 44 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
               image.append(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
  -        matchedToken.kind = EOF;
  -        fileDepth = 0;
  +      inSet = true;
            break;
  -      case 47 :
  +      case 45 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
               image.append(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
  -        //!!! fixed <bcolor="#333333"/>
  -        // needs to be more thorough.
  -        if (lparen == 0)
  -            SwitchTo(DEFAULT);
  +        matchedToken.kind = EOF;
  +        fileDepth = 0;
            break;
         case 54 :
           if (image == null)
  
  
  

Reply via email to