jvanzyl     00/10/26 22:18:47

  Modified:    src/java/org/apache/velocity/runtime/parser Parser.java
                        Parser.jj Parser.jjt ParserConstants.java
                        ParserTokenManager.java
  Log:
  Fix for the $foo! bug reported by Dave Bryson <[EMAIL PROTECTED]>.   Passes the 
current testbed cleanly.
    Questions or problems to geir ([EMAIL PROTECTED]).
  
  Revision  Changes    Path
  1.8       +409 -440  
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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Parser.java       2000/10/24 23:34:20     1.7
  +++ Parser.java       2000/10/27 05:18:44     1.8
  @@ -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.7 2000/10/24 23:34:20 jvanzyl Exp $ 
  + * @version $Id: Parser.java,v 1.8 2000/10/27 05:18:44 jvanzyl Exp $ 
   */
   public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants 
{/*@bgen(jjtree)*/
     protected JJTParserState jjtree = new JJTParserState();
  @@ -111,7 +111,6 @@
           case NUMBER_LITERAL:
           case WORD:
           case IDENTIFIER:
  -        case SHORTHAND:
           case DOT:
           case LCURLY:
             ;
  @@ -133,12 +132,12 @@
        } else {
          jjtree.popNode();
        }
  -     if (jjte000 instanceof RuntimeException) {
  -       {if (true) throw (RuntimeException)jjte000;}
  -     }
        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) {
  @@ -173,7 +172,6 @@
         StopStatement();
         break;
       case IDENTIFIER:
  -    case SHORTHAND:
       case LCURLY:
         Reference();
         break;
  @@ -302,7 +300,6 @@
     final public void DirectiveArg() throws ParseException {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case IDENTIFIER:
  -    case SHORTHAND:
       case LCURLY:
         Reference();
         break;
  @@ -351,7 +348,6 @@
           case NUMBER_LITERAL:
           case WORD:
           case IDENTIFIER:
  -        case SHORTHAND:
           case LCURLY:
             ;
             break;
  @@ -386,7 +382,6 @@
             case NUMBER_LITERAL:
             case WORD:
             case IDENTIFIER:
  -          case SHORTHAND:
             case DOT:
             case LCURLY:
               ;
  @@ -403,12 +398,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte001 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte001;}
  -      }
         if (jjte001 instanceof ParseException) {
           {if (true) throw (ParseException)jjte001;}
         }
  +      if (jjte001 instanceof RuntimeException) {
  +        {if (true) throw (RuntimeException)jjte001;}
  +      }
         {if (true) throw (Error)jjte001;}
         } finally {
         if (jjtc001) {
  @@ -426,12 +421,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte000;}
  -      }
         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) {
  @@ -454,7 +449,6 @@
         case TRUE:
         case FALSE:
         case IDENTIFIER:
  -      case SHORTHAND:
         case LCURLY:
           Parameter();
           label_4:
  @@ -483,12 +477,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte000;}
  -      }
         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) {
  @@ -517,7 +511,6 @@
         False();
         break;
       case IDENTIFIER:
  -    case SHORTHAND:
       case LCURLY:
         Reference();
         break;
  @@ -547,7 +540,6 @@
         case TRUE:
         case FALSE:
         case IDENTIFIER:
  -      case SHORTHAND:
         case LCURLY:
           Parameter();
           label_5:
  @@ -576,12 +568,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte000;}
  -      }
         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) {
  @@ -597,19 +589,11 @@
     jjtree.openNodeScope(jjtn000);
       try {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -      case SHORTHAND:
  -        jj_consume_token(SHORTHAND);
  -        break;
  -      default:
  -        jj_la1[11] = jj_gen;
  -        ;
  -      }
  -      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case LCURLY:
           jj_consume_token(LCURLY);
           break;
         default:
  -        jj_la1[12] = jj_gen;
  +        jj_la1[11] = jj_gen;
           ;
         }
         jj_consume_token(IDENTIFIER);
  @@ -618,7 +602,7 @@
           jj_consume_token(RCURLY);
           break;
         default:
  -        jj_la1[13] = jj_gen;
  +        jj_la1[12] = jj_gen;
           ;
         }
         label_6:
  @@ -637,7 +621,7 @@
               Identifier();
               break;
             default:
  -            jj_la1[14] = jj_gen;
  +            jj_la1[13] = jj_gen;
               jj_consume_token(-1);
               throw new ParseException();
             }
  @@ -647,7 +631,7 @@
             jj_consume_token(RCURLY);
             break;
           default:
  -          jj_la1[15] = jj_gen;
  +          jj_la1[14] = jj_gen;
             ;
           }
         }
  @@ -658,12 +642,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte000;}
  -      }
         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) {
  @@ -737,7 +721,7 @@
           t.image = t.image.substring(1);
           break;
         default:
  -        jj_la1[16] = jj_gen;
  +        jj_la1[15] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -786,13 +770,12 @@
             case NUMBER_LITERAL:
             case WORD:
             case IDENTIFIER:
  -          case SHORTHAND:
             case DOT:
             case LCURLY:
               ;
               break;
             default:
  -            jj_la1[17] = jj_gen;
  +            jj_la1[16] = jj_gen;
               break label_7;
             }
           }
  @@ -803,12 +786,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte001 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte001;}
  -      }
         if (jjte001 instanceof ParseException) {
           {if (true) throw (ParseException)jjte001;}
         }
  +      if (jjte001 instanceof RuntimeException) {
  +        {if (true) throw (RuntimeException)jjte001;}
  +      }
         {if (true) throw (Error)jjte001;}
         } finally {
         if (jjtc001) {
  @@ -825,13 +808,13 @@
               ;
               break;
             default:
  -            jj_la1[18] = jj_gen;
  +            jj_la1[17] = jj_gen;
               break label_8;
             }
           }
           break;
         default:
  -        jj_la1[19] = jj_gen;
  +        jj_la1[18] = jj_gen;
           ;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -839,7 +822,7 @@
           ElseStatement();
           break;
         default:
  -        jj_la1[20] = jj_gen;
  +        jj_la1[19] = jj_gen;
           ;
         }
         jj_consume_token(END);
  @@ -850,12 +833,12 @@
          } else {
            jjtree.popNode();
          }
  -       if (jjte000 instanceof RuntimeException) {
  -         {if (true) throw (RuntimeException)jjte000;}
  -       }
          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) {
  @@ -894,13 +877,12 @@
             case NUMBER_LITERAL:
             case WORD:
             case IDENTIFIER:
  -          case SHORTHAND:
             case DOT:
             case LCURLY:
               ;
               break;
             default:
  -            jj_la1[21] = jj_gen;
  +            jj_la1[20] = jj_gen;
               break label_9;
             }
           }
  @@ -911,12 +893,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte001 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte001;}
  -      }
         if (jjte001 instanceof ParseException) {
           {if (true) throw (ParseException)jjte001;}
         }
  +      if (jjte001 instanceof RuntimeException) {
  +        {if (true) throw (RuntimeException)jjte001;}
  +      }
         {if (true) throw (Error)jjte001;}
         } finally {
         if (jjtc001) {
  @@ -930,12 +912,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte000;}
  -      }
         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) {
  @@ -977,13 +959,12 @@
             case NUMBER_LITERAL:
             case WORD:
             case IDENTIFIER:
  -          case SHORTHAND:
             case DOT:
             case LCURLY:
               ;
               break;
             default:
  -            jj_la1[22] = jj_gen;
  +            jj_la1[21] = jj_gen;
               break label_10;
             }
           }
  @@ -994,12 +975,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte001 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte001;}
  -      }
         if (jjte001 instanceof ParseException) {
           {if (true) throw (ParseException)jjte001;}
         }
  +      if (jjte001 instanceof RuntimeException) {
  +        {if (true) throw (RuntimeException)jjte001;}
  +      }
         {if (true) throw (Error)jjte001;}
         } finally {
         if (jjtc001) {
  @@ -1013,12 +994,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte000;}
  -      }
         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) {
  @@ -1042,12 +1023,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte000;}
  -      }
         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) {
  @@ -1104,12 +1085,11 @@
           case LOGICAL_NOT:
           case NUMBER_LITERAL:
           case IDENTIFIER:
  -        case SHORTHAND:
           case LCURLY:
             ConditionalOrExpression();
             break;
           default:
  -          jj_la1[23] = jj_gen;
  +          jj_la1[22] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
  @@ -1121,12 +1101,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte000;}
  -      }
         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) {
  @@ -1151,12 +1131,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        {if (true) throw (RuntimeException)jjte000;}
  -      }
         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) {
  @@ -1174,7 +1154,7 @@
           ;
           break;
         default:
  -        jj_la1[24] = jj_gen;
  +        jj_la1[23] = jj_gen;
           break label_11;
         }
         jj_consume_token(LOGICAL_OR);
  @@ -1190,12 +1170,12 @@
                      } else {
                        jjtree.popNode();
                      }
  -                   if (jjte001 instanceof RuntimeException) {
  -                     {if (true) throw (RuntimeException)jjte001;}
  -                   }
                      if (jjte001 instanceof ParseException) {
                        {if (true) throw (ParseException)jjte001;}
                      }
  +                   if (jjte001 instanceof RuntimeException) {
  +                     {if (true) throw (RuntimeException)jjte001;}
  +                   }
                      {if (true) throw (Error)jjte001;}
         } finally {
                      if (jjtc001) {
  @@ -1214,7 +1194,7 @@
           ;
           break;
         default:
  -        jj_la1[25] = jj_gen;
  +        jj_la1[24] = jj_gen;
           break label_12;
         }
         jj_consume_token(LOGICAL_AND);
  @@ -1230,12 +1210,12 @@
                        } else {
                          jjtree.popNode();
                        }
  -                     if (jjte001 instanceof RuntimeException) {
  -                       {if (true) throw (RuntimeException)jjte001;}
  -                     }
                        if (jjte001 instanceof ParseException) {
                          {if (true) throw (ParseException)jjte001;}
                        }
  +                     if (jjte001 instanceof RuntimeException) {
  +                       {if (true) throw (RuntimeException)jjte001;}
  +                     }
                        {if (true) throw (Error)jjte001;}
         } finally {
                        if (jjtc001) {
  @@ -1255,7 +1235,7 @@
           ;
           break;
         default:
  -        jj_la1[26] = jj_gen;
  +        jj_la1[25] = jj_gen;
           break label_13;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1273,12 +1253,12 @@
                                } else {
                                  jjtree.popNode();
                                }
  -                             if (jjte001 instanceof RuntimeException) {
  -                               {if (true) throw (RuntimeException)jjte001;}
  -                             }
                                if (jjte001 instanceof ParseException) {
                                  {if (true) throw (ParseException)jjte001;}
                                }
  +                             if (jjte001 instanceof RuntimeException) {
  +                               {if (true) throw (RuntimeException)jjte001;}
  +                             }
                                {if (true) throw (Error)jjte001;}
           } finally {
                                if (jjtc001) {
  @@ -1300,12 +1280,12 @@
                                    } else {
                                      jjtree.popNode();
                                    }
  -                                 if (jjte002 instanceof RuntimeException) {
  -                                   {if (true) throw (RuntimeException)jjte002;}
  -                                 }
                                    if (jjte002 instanceof ParseException) {
                                      {if (true) throw (ParseException)jjte002;}
                                    }
  +                                 if (jjte002 instanceof RuntimeException) {
  +                                   {if (true) throw (RuntimeException)jjte002;}
  +                                 }
                                    {if (true) throw (Error)jjte002;}
           } finally {
                                    if (jjtc002) {
  @@ -1314,7 +1294,7 @@
           }
           break;
         default:
  -        jj_la1[27] = jj_gen;
  +        jj_la1[26] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1333,7 +1313,7 @@
           ;
           break;
         default:
  -        jj_la1[28] = jj_gen;
  +        jj_la1[27] = jj_gen;
           break label_14;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1351,12 +1331,12 @@
                            } else {
                              jjtree.popNode();
                            }
  -                         if (jjte001 instanceof RuntimeException) {
  -                           {if (true) throw (RuntimeException)jjte001;}
  -                         }
                            if (jjte001 instanceof ParseException) {
                              {if (true) throw (ParseException)jjte001;}
                            }
  +                         if (jjte001 instanceof RuntimeException) {
  +                           {if (true) throw (RuntimeException)jjte001;}
  +                         }
                            {if (true) throw (Error)jjte001;}
           } finally {
                            if (jjtc001) {
  @@ -1378,12 +1358,12 @@
                            } else {
                              jjtree.popNode();
                            }
  -                         if (jjte002 instanceof RuntimeException) {
  -                           {if (true) throw (RuntimeException)jjte002;}
  -                         }
                            if (jjte002 instanceof ParseException) {
                              {if (true) throw (ParseException)jjte002;}
                            }
  +                         if (jjte002 instanceof RuntimeException) {
  +                           {if (true) throw (RuntimeException)jjte002;}
  +                         }
                            {if (true) throw (Error)jjte002;}
           } finally {
                            if (jjtc002) {
  @@ -1405,12 +1385,12 @@
                            } else {
                              jjtree.popNode();
                            }
  -                         if (jjte003 instanceof RuntimeException) {
  -                           {if (true) throw (RuntimeException)jjte003;}
  -                         }
                            if (jjte003 instanceof ParseException) {
                              {if (true) throw (ParseException)jjte003;}
                            }
  +                         if (jjte003 instanceof RuntimeException) {
  +                           {if (true) throw (RuntimeException)jjte003;}
  +                         }
                            {if (true) throw (Error)jjte003;}
           } finally {
                            if (jjtc003) {
  @@ -1432,12 +1412,12 @@
                            } else {
                              jjtree.popNode();
                            }
  -                         if (jjte004 instanceof RuntimeException) {
  -                           {if (true) throw (RuntimeException)jjte004;}
  -                         }
                            if (jjte004 instanceof ParseException) {
                              {if (true) throw (ParseException)jjte004;}
                            }
  +                         if (jjte004 instanceof RuntimeException) {
  +                           {if (true) throw (RuntimeException)jjte004;}
  +                         }
                            {if (true) throw (Error)jjte004;}
           } finally {
                            if (jjtc004) {
  @@ -1446,7 +1426,7 @@
           }
           break;
         default:
  -        jj_la1[29] = jj_gen;
  +        jj_la1[28] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1463,7 +1443,7 @@
           ;
           break;
         default:
  -        jj_la1[30] = jj_gen;
  +        jj_la1[29] = jj_gen;
           break label_15;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1481,12 +1461,12 @@
                       } else {
                         jjtree.popNode();
                       }
  -                    if (jjte001 instanceof RuntimeException) {
  -                      {if (true) throw (RuntimeException)jjte001;}
  -                    }
                       if (jjte001 instanceof ParseException) {
                         {if (true) throw (ParseException)jjte001;}
                       }
  +                    if (jjte001 instanceof RuntimeException) {
  +                      {if (true) throw (RuntimeException)jjte001;}
  +                    }
                       {if (true) throw (Error)jjte001;}
           } finally {
                       if (jjtc001) {
  @@ -1508,12 +1488,12 @@
                       } else {
                         jjtree.popNode();
                       }
  -                    if (jjte002 instanceof RuntimeException) {
  -                      {if (true) throw (RuntimeException)jjte002;}
  -                    }
                       if (jjte002 instanceof ParseException) {
                         {if (true) throw (ParseException)jjte002;}
                       }
  +                    if (jjte002 instanceof RuntimeException) {
  +                      {if (true) throw (RuntimeException)jjte002;}
  +                    }
                       {if (true) throw (Error)jjte002;}
           } finally {
                       if (jjtc002) {
  @@ -1522,7 +1502,7 @@
           }
           break;
         default:
  -        jj_la1[31] = jj_gen;
  +        jj_la1[30] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1540,7 +1520,7 @@
           ;
           break;
         default:
  -        jj_la1[32] = jj_gen;
  +        jj_la1[31] = jj_gen;
           break label_16;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1558,12 +1538,12 @@
                          } else {
                            jjtree.popNode();
                          }
  -                       if (jjte001 instanceof RuntimeException) {
  -                         {if (true) throw (RuntimeException)jjte001;}
  -                       }
                          if (jjte001 instanceof ParseException) {
                            {if (true) throw (ParseException)jjte001;}
                          }
  +                       if (jjte001 instanceof RuntimeException) {
  +                         {if (true) throw (RuntimeException)jjte001;}
  +                       }
                          {if (true) throw (Error)jjte001;}
           } finally {
                          if (jjtc001) {
  @@ -1585,12 +1565,12 @@
                          } else {
                            jjtree.popNode();
                          }
  -                       if (jjte002 instanceof RuntimeException) {
  -                         {if (true) throw (RuntimeException)jjte002;}
  -                       }
                          if (jjte002 instanceof ParseException) {
                            {if (true) throw (ParseException)jjte002;}
                          }
  +                       if (jjte002 instanceof RuntimeException) {
  +                         {if (true) throw (RuntimeException)jjte002;}
  +                       }
                          {if (true) throw (Error)jjte002;}
           } finally {
                          if (jjtc002) {
  @@ -1612,12 +1592,12 @@
                          } else {
                            jjtree.popNode();
                          }
  -                       if (jjte003 instanceof RuntimeException) {
  -                         {if (true) throw (RuntimeException)jjte003;}
  -                       }
                          if (jjte003 instanceof ParseException) {
                            {if (true) throw (ParseException)jjte003;}
                          }
  +                       if (jjte003 instanceof RuntimeException) {
  +                         {if (true) throw (RuntimeException)jjte003;}
  +                       }
                          {if (true) throw (Error)jjte003;}
           } finally {
                          if (jjtc003) {
  @@ -1626,7 +1606,7 @@
           }
           break;
         default:
  -        jj_la1[33] = jj_gen;
  +        jj_la1[32] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1649,12 +1629,12 @@
                       } else {
                         jjtree.popNode();
                       }
  -                    if (jjte001 instanceof RuntimeException) {
  -                      {if (true) throw (RuntimeException)jjte001;}
  -                    }
                       if (jjte001 instanceof ParseException) {
                         {if (true) throw (ParseException)jjte001;}
                       }
  +                    if (jjte001 instanceof RuntimeException) {
  +                      {if (true) throw (RuntimeException)jjte001;}
  +                    }
                       {if (true) throw (Error)jjte001;}
         } finally {
                       if (jjtc001) {
  @@ -1669,12 +1649,11 @@
       case FALSE:
       case NUMBER_LITERAL:
       case IDENTIFIER:
  -    case SHORTHAND:
       case LCURLY:
         PrimaryExpression();
         break;
       default:
  -      jj_la1[34] = jj_gen;
  +      jj_la1[33] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -1689,7 +1668,6 @@
         NumberLiteral();
         break;
       case IDENTIFIER:
  -    case SHORTHAND:
       case LCURLY:
         Reference();
         break;
  @@ -1708,7 +1686,7 @@
         jj_consume_token(RPAREN);
         break;
       default:
  -      jj_la1[35] = jj_gen;
  +      jj_la1[34] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -1735,589 +1713,580 @@
       return retval;
     }
   
  -  final private boolean jj_3R_68() {
  -    if (jj_scan_token(LOGICAL_GE)) 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;
  -    if (jj_3R_59()) return true;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_30() {
  +    if (jj_scan_token(STRING_LITERAL)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_59() {
  -    if (jj_3R_63()) 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_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_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_3R_64()) { jj_scanpos = xsp; break; }
  +      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_67() {
  -    if (jj_scan_token(LOGICAL_LE)) 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_59()) 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_66() {
  -    if (jj_scan_token(LOGICAL_GT)) return true;
  +  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;
  -    if (jj_3R_59()) return true;
  +    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_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_65() {
  -    if (jj_scan_token(LOGICAL_LT)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_59()) 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_60() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_65()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_66()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_67()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_68()) return true;
  +  final private boolean jj_3R_44() {
  +    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;
  -    } else 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_48()) { 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_40() {
  +    if (jj_3R_35()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_62() {
  -    if (jj_scan_token(LOGICAL_NOT_EQUALS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_57()) return true;
  +  final private boolean jj_3R_39() {
  +    if (jj_3R_34()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_57() {
  -    if (jj_3R_59()) 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_60()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_61() {
  -    if (jj_scan_token(LOGICAL_EQUALS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_57()) 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_58() {
  +  final private boolean jj_3R_29() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_61()) {
  +    if (jj_3R_37()) {
       jj_scanpos = xsp;
  -    if (jj_3R_62()) return true;
  +    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_54() {
  -    if (jj_3R_57()) 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;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_58()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_56() {
  -    if (jj_scan_token(COMMA)) return true;
  +    if (jj_3R_36()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_29()) return true;
  +    if (jj_scan_token(RPAREN)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_55() {
  -    if (jj_scan_token(LOGICAL_AND)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_54()) 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_52() {
  -    if (jj_3R_54()) return true;
  +  final private boolean jj_3R_26() {
  +    if (jj_3R_34()) 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_2() {
  -    if (jj_3R_18()) 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_53() {
  -    if (jj_scan_token(LOGICAL_OR)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_52()) return true;
  +  final private boolean jj_3R_24() {
  +    if (jj_3R_32()) return true;
       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_51() {
  -    if (jj_3R_52()) 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_53()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_50() {
  -    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;
  +  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_21() {
  -    if (jj_3R_29()) 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;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_56()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
  +    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;
       return false;
     }
   
  -  final private boolean jj_3R_20() {
  -    if (jj_scan_token(IDENTIFIER)) return true;
  +  final private boolean jj_3R_73() {
  +    if (jj_3R_19()) return true;
       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_76() {
  +    if (jj_scan_token(MODULUS)) 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_47() {
  -    if (jj_3R_51()) 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_46()) {
  +    if (jj_3R_72()) {
       jj_scanpos = xsp;
  -    if (jj_3R_47()) 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_3R_46() {
  -    if (jj_3R_50()) 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;
  +    if (jj_3R_68()) 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_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_3_1() {
  -    if (jj_scan_token(DOT)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +  final private boolean jj_3R_69() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3_2()) {
  +    if (jj_3R_74()) {
       jj_scanpos = xsp;
  -    if (jj_3R_17()) return true;
  +    if (jj_3R_75()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_76()) 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_48()) jj_scanpos = xsp;
  -    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_44() {
  +  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;
     }
   
  -  final private boolean jj_3R_43() {
  -    if (jj_scan_token(LCURLY)) 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;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_42() {
  -    if (jj_scan_token(SHORTHAND)) 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_30() {
  -    if (jj_scan_token(STRING_LITERAL)) return true;
  +  final private boolean jj_3R_62() {
  +    if (jj_3R_68()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  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;
  -    xsp = jj_scanpos;
  -    if (jj_3R_43()) 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_44()) 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_3R_69()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_49() {
  -    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_70() {
  +    if (jj_scan_token(PLUS)) 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;
  +    if (jj_3R_62()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  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;
  +  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_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_67() {
  +    if (jj_scan_token(LOGICAL_GE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(RPAREN)) return true;
  +    if (jj_3R_58()) 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_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_63()) { 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_17() {
  +    if (jj_3R_20()) 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_66() {
  +    if (jj_scan_token(LOGICAL_LE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_24() {
  -    if (jj_3R_32()) return true;
  +    if (jj_3R_58()) 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_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_22() {
  -    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_19() {
  +  final private boolean jj_3R_59() {
       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()) {
  +    if (jj_3R_64()) {
       jj_scanpos = xsp;
  -    if (jj_3R_26()) {
  +    if (jj_3R_65()) {
       jj_scanpos = xsp;
  -    if (jj_3R_27()) {
  +    if (jj_3R_66()) {
       jj_scanpos = xsp;
  -    if (jj_3R_28()) 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;
  -    } 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_41() {
  -    if (jj_3R_32()) 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;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_40() {
  -    if (jj_3R_35()) 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_45() {
  -    if (jj_3R_29()) 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_49()) { jj_scanpos = xsp; break; }
  +      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_39() {
  -    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_74() {
  -    if (jj_3R_19()) 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_38() {
  -    if (jj_3R_33()) 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_77() {
  -    if (jj_scan_token(MODULUS)) return true;
  +  final private boolean jj_3R_53() {
  +    if (jj_3R_56()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_69()) return true;
  +    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;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_73() {
  -    if (jj_scan_token(LOGICAL_NOT)) 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_69()) return true;
  +    if (jj_3R_53()) 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_73()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_74()) return true;
  +  final private boolean jj_3R_51() {
  +    if (jj_3R_53()) 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_54()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
       return false;
     }
   
  -  final private boolean jj_3R_29() {
  -    Token xsp;
  -    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;
  +  final private boolean jj_3R_20() {
  +    if (jj_scan_token(IDENTIFIER)) 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_37() {
  -    if (jj_3R_30()) 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_51()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_76() {
  -    if (jj_scan_token(DIVIDE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_69()) return true;
  +  final private boolean jj_3R_21() {
  +    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_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(MULTIPLY)) 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_69()) 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_70() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_75()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_76()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_77()) return true;
  +  final private boolean jj_3R_50() {
  +    if (jj_3R_51()) 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;
  +    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_48() {
  -    if (jj_scan_token(RCURLY)) 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_72() {
  -    if (jj_scan_token(MINUS)) return true;
  +  final private boolean jj_3R_49() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_63()) return true;
  +    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_63() {
  -    if (jj_3R_69()) 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;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_70()) { jj_scanpos = xsp; break; }
  -      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;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_45()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(RBRACKET)) 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_71() {
  -    if (jj_scan_token(PLUS)) return true;
  +  final private boolean jj_3R_45() {
  +    if (jj_3R_49()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_63()) return true;
  +    return false;
  +  }
  +
  +  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_64() {
  +  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_71()) {
  +    if (jj_3_2()) {
       jj_scanpos = xsp;
  -    if (jj_3R_72()) 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;
     }
   
  @@ -2330,9 +2299,9 @@
     public boolean lookingAhead = false;
     private boolean jj_semLA;
     private int jj_gen;
  -  final private int[] jj_la1 = new int[36];
  -  final private int[] jj_la1_0 = 
{0x8e0f0,0x8e0f0,0xe000,0x80002,0x80002,0x8e0f0,0x8,0x380002,0x380002,0x8,0x380002,0x0,0x0,0x0,0x0,0x0,0x800f0,0x8e0f0,0x0,0x0,0x0,0x8e0f0,0x8e0f0,0x380012,0x20000000,0x10000000,0x0,0x0,0xc0000000,0xc0000000,0x1800000,0x1800000,0xe000000,0xe000000,0x380012,0x380012,};
  -  final private int[] jj_la1_1 = 
{0xf15980,0xf15980,0x0,0xb14000,0xb14000,0xf15980,0x0,0xb00000,0xb00000,0x0,0xb00000,0x200000,0x800000,0x1000000,0x100000,0x1000000,0x404000,0xf15980,0x200,0x200,0x400,0xf15980,0xf15980,0xb04010,0x0,0x0,0xc,0xc,0x3,0x3,0x0,0x0,0x0,0x0,0xb04010,0xb04000,};
  +  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 JJCalls[] jj_2_rtns = new JJCalls[3];
     private boolean jj_rescan = false;
     private int jj_gc = 0;
  @@ -2343,7 +2312,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 36; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 35; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2354,7 +2323,7 @@
       jj_ntk = -1;
       jjtree.reset();
       jj_gen = 0;
  -    for (int i = 0; i < 36; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 35; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2364,7 +2333,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 36; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 35; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2375,7 +2344,7 @@
       jj_ntk = -1;
       jjtree.reset();
       jj_gen = 0;
  -    for (int i = 0; i < 36; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 35; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2384,7 +2353,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 36; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 35; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2394,7 +2363,7 @@
       jj_ntk = -1;
       jjtree.reset();
       jj_gen = 0;
  -    for (int i = 0; i < 36; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 35; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2509,7 +2478,7 @@
         la1tokens[jj_kind] = true;
         jj_kind = -1;
       }
  -    for (int i = 0; i < 36; i++) {
  +    for (int i = 0; i < 35; i++) {
         if (jj_la1[i] == jj_gen) {
           for (int j = 0; j < 32; j++) {
             if ((jj_la1_0[i] & (1<<j)) != 0) {
  
  
  
  1.8       +107 -90   
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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Parser.jj 2000/10/24 23:34:21     1.7
  +++ Parser.jj 2000/10/27 05:18:44     1.8
  @@ -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.7 2000/10/24 23:34:21 jvanzyl Exp $ 
  + * @version $Id: Parser.jj,v 1.8 2000/10/27 05:18:44 jvanzyl Exp $ 
   */
   public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants/*@egen*/
   {/*@bgen(jjtree)*/
  @@ -450,6 +450,10 @@
   <*>
   MORE :
   {
  +    //
  +    //  Note : DOLLARBANG is a duplicate of DOLLAR.  They must be identical.
  +    //
  +
       <DOLLAR: "$"> 
       { 
           if (! inComment)
  @@ -464,6 +468,20 @@
           }            
       }
   
  +|   <DOLLARBANG: "$!"> 
  +    { 
  +        if (! inComment)
  +        {
  +            inReference = true;
  +
  +           if ( bDebugPrint_ )
  +                System.out.print( "$!  : going to " + REFERENCE );
  +
  +            stateStackPush();
  +            SwitchTo(REFERENCE);
  +        }            
  +    }
  +
   |   "##"
      { 
           inComment = true;
  @@ -678,7 +696,6 @@
   |   <#ALPHANUM_CHAR: [ "a"-"z", "A"-"Z", "0"-"9" ] >
   |   <#IDENTIFIER_CHAR: [ "a"-"z", "A"-"Z", "0"-"9", "-", "_" ] >
   |   <IDENTIFIER:  <ALPHA_CHAR> (<IDENTIFIER_CHAR>)* >
  -|   <SHORTHAND: "!">
   |   <DOT: ".">
       {
           if ( bDebugPrint_ )
  @@ -762,12 +779,12 @@
        } else {
          jjtree.popNode();
        }
  -     if (jjte000 instanceof RuntimeException) {
  -       throw (RuntimeException)jjte000;
  -     }
        if (jjte000 instanceof ParseException) {
          throw (ParseException)jjte000;
        }
  +     if (jjte000 instanceof RuntimeException) {
  +       throw (RuntimeException)jjte000;
  +     }
        throw (Error)jjte000;
      } finally {
        if (jjtc000) {
  @@ -955,12 +972,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte001 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte001;
  -      }
         if (jjte001 instanceof ParseException) {
           throw (ParseException)jjte001;
         }
  +      if (jjte001 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte001;
  +      }
         throw (Error)jjte001;
       } finally {
         if (jjtc001) {
  @@ -984,12 +1001,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte000;
  -      }
         if (jjte000 instanceof ParseException) {
           throw (ParseException)jjte000;
         }
  +      if (jjte000 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte000;
  +      }
         throw (Error)jjte000;
       } finally {
         if (jjtc000) {
  @@ -1015,12 +1032,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte000;
  -      }
         if (jjte000 instanceof ParseException) {
           throw (ParseException)jjte000;
         }
  +      if (jjte000 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte000;
  +      }
         throw (Error)jjte000;
       } finally {
         if (jjtc000) {
  @@ -1065,12 +1082,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte000;
  -      }
         if (jjte000 instanceof ParseException) {
           throw (ParseException)jjte000;
         }
  +      if (jjte000 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte000;
  +      }
         throw (Error)jjte000;
       } finally {
         if (jjtc000) {
  @@ -1088,7 +1105,7 @@
   {/*@bgen(jjtree) Reference */
       try {
   /*@egen*/ 
  -    [<SHORTHAND>]
  +
       // This should be changed to Indentifier() now. Make
       // it easier to walk the AST.
       [<LCURLY>]
  @@ -1102,12 +1119,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte000;
  -      }
         if (jjte000 instanceof ParseException) {
           throw (ParseException)jjte000;
         }
  +      if (jjte000 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte000;
  +      }
         throw (Error)jjte000;
       } finally {
         if (jjtc000) {
  @@ -1220,12 +1237,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte001 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte001;
  -      }
         if (jjte001 instanceof ParseException) {
           throw (ParseException)jjte001;
         }
  +      if (jjte001 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte001;
  +      }
         throw (Error)jjte001;
       } finally {
         if (jjtc001) {
  @@ -1243,12 +1260,12 @@
          } else {
            jjtree.popNode();
          }
  -       if (jjte000 instanceof RuntimeException) {
  -         throw (RuntimeException)jjte000;
  -       }
          if (jjte000 instanceof ParseException) {
            throw (ParseException)jjte000;
          }
  +       if (jjte000 instanceof RuntimeException) {
  +         throw (RuntimeException)jjte000;
  +       }
          throw (Error)jjte000;
        } finally {
          if (jjtc000) {
  @@ -1282,12 +1299,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte001 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte001;
  -      }
         if (jjte001 instanceof ParseException) {
           throw (ParseException)jjte001;
         }
  +      if (jjte001 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte001;
  +      }
         throw (Error)jjte001;
       } finally {
         if (jjtc001) {
  @@ -1302,12 +1319,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte000;
  -      }
         if (jjte000 instanceof ParseException) {
           throw (ParseException)jjte000;
         }
  +      if (jjte000 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte000;
  +      }
         throw (Error)jjte000;
       } finally {
         if (jjtc000) {
  @@ -1342,12 +1359,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte001 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte001;
  -      }
         if (jjte001 instanceof ParseException) {
           throw (ParseException)jjte001;
         }
  +      if (jjte001 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte001;
  +      }
         throw (Error)jjte001;
       } finally {
         if (jjtc001) {
  @@ -1362,12 +1379,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte000;
  -      }
         if (jjte000 instanceof ParseException) {
           throw (ParseException)jjte000;
         }
  +      if (jjte000 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte000;
  +      }
         throw (Error)jjte000;
       } finally {
         if (jjtc000) {
  @@ -1393,12 +1410,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte000;
  -      }
         if (jjte000 instanceof ParseException) {
           throw (ParseException)jjte000;
         }
  +      if (jjte000 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte000;
  +      }
         throw (Error)jjte000;
       } finally {
         if (jjtc000) {
  @@ -1457,12 +1474,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte000;
  -      }
         if (jjte000 instanceof ParseException) {
           throw (ParseException)jjte000;
         }
  +      if (jjte000 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte000;
  +      }
         throw (Error)jjte000;
       } finally {
         if (jjtc000) {
  @@ -1488,12 +1505,12 @@
         } else {
           jjtree.popNode();
         }
  -      if (jjte000 instanceof RuntimeException) {
  -        throw (RuntimeException)jjte000;
  -      }
         if (jjte000 instanceof ParseException) {
           throw (ParseException)jjte000;
         }
  +      if (jjte000 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte000;
  +      }
         throw (Error)jjte000;
       } finally {
         if (jjtc000) {
  @@ -1521,12 +1538,12 @@
                      } else {
                        jjtree.popNode();
                      }
  -                   if (jjte001 instanceof RuntimeException) {
  -                     throw (RuntimeException)jjte001;
  -                   }
                      if (jjte001 instanceof ParseException) {
                        throw (ParseException)jjte001;
                      }
  +                   if (jjte001 instanceof RuntimeException) {
  +                     throw (RuntimeException)jjte001;
  +                   }
                      throw (Error)jjte001;
                    } finally {
                      if (jjtc001) {
  @@ -1555,12 +1572,12 @@
                        } else {
                          jjtree.popNode();
                        }
  -                     if (jjte001 instanceof RuntimeException) {
  -                       throw (RuntimeException)jjte001;
  -                     }
                        if (jjte001 instanceof ParseException) {
                          throw (ParseException)jjte001;
                        }
  +                     if (jjte001 instanceof RuntimeException) {
  +                       throw (RuntimeException)jjte001;
  +                     }
                        throw (Error)jjte001;
                      } finally {
                        if (jjtc001) {
  @@ -1589,12 +1606,12 @@
                                } else {
                                  jjtree.popNode();
                                }
  -                             if (jjte001 instanceof RuntimeException) {
  -                               throw (RuntimeException)jjte001;
  -                             }
                                if (jjte001 instanceof ParseException) {
                                  throw (ParseException)jjte001;
                                }
  +                             if (jjte001 instanceof RuntimeException) {
  +                               throw (RuntimeException)jjte001;
  +                             }
                                throw (Error)jjte001;
                              } finally {
                                if (jjtc001) {
  @@ -1617,12 +1634,12 @@
                                    } else {
                                      jjtree.popNode();
                                    }
  -                                 if (jjte002 instanceof RuntimeException) {
  -                                   throw (RuntimeException)jjte002;
  -                                 }
                                    if (jjte002 instanceof ParseException) {
                                      throw (ParseException)jjte002;
                                    }
  +                                 if (jjte002 instanceof RuntimeException) {
  +                                   throw (RuntimeException)jjte002;
  +                                 }
                                    throw (Error)jjte002;
                                  } finally {
                                    if (jjtc002) {
  @@ -1652,12 +1669,12 @@
                            } else {
                              jjtree.popNode();
                            }
  -                         if (jjte001 instanceof RuntimeException) {
  -                           throw (RuntimeException)jjte001;
  -                         }
                            if (jjte001 instanceof ParseException) {
                              throw (ParseException)jjte001;
                            }
  +                         if (jjte001 instanceof RuntimeException) {
  +                           throw (RuntimeException)jjte001;
  +                         }
                            throw (Error)jjte001;
                          } finally {
                            if (jjtc001) {
  @@ -1680,12 +1697,12 @@
                            } else {
                              jjtree.popNode();
                            }
  -                         if (jjte002 instanceof RuntimeException) {
  -                           throw (RuntimeException)jjte002;
  -                         }
                            if (jjte002 instanceof ParseException) {
                              throw (ParseException)jjte002;
                            }
  +                         if (jjte002 instanceof RuntimeException) {
  +                           throw (RuntimeException)jjte002;
  +                         }
                            throw (Error)jjte002;
                          } finally {
                            if (jjtc002) {
  @@ -1708,12 +1725,12 @@
                            } else {
                              jjtree.popNode();
                            }
  -                         if (jjte003 instanceof RuntimeException) {
  -                           throw (RuntimeException)jjte003;
  -                         }
                            if (jjte003 instanceof ParseException) {
                              throw (ParseException)jjte003;
                            }
  +                         if (jjte003 instanceof RuntimeException) {
  +                           throw (RuntimeException)jjte003;
  +                         }
                            throw (Error)jjte003;
                          } finally {
                            if (jjtc003) {
  @@ -1736,12 +1753,12 @@
                            } else {
                              jjtree.popNode();
                            }
  -                         if (jjte004 instanceof RuntimeException) {
  -                           throw (RuntimeException)jjte004;
  -                         }
                            if (jjte004 instanceof ParseException) {
                              throw (ParseException)jjte004;
                            }
  +                         if (jjte004 instanceof RuntimeException) {
  +                           throw (RuntimeException)jjte004;
  +                         }
                            throw (Error)jjte004;
                          } finally {
                            if (jjtc004) {
  @@ -1771,12 +1788,12 @@
                       } else {
                         jjtree.popNode();
                       }
  -                    if (jjte001 instanceof RuntimeException) {
  -                      throw (RuntimeException)jjte001;
  -                    }
                       if (jjte001 instanceof ParseException) {
                         throw (ParseException)jjte001;
                       }
  +                    if (jjte001 instanceof RuntimeException) {
  +                      throw (RuntimeException)jjte001;
  +                    }
                       throw (Error)jjte001;
                     } finally {
                       if (jjtc001) {
  @@ -1799,12 +1816,12 @@
                       } else {
                         jjtree.popNode();
                       }
  -                    if (jjte002 instanceof RuntimeException) {
  -                      throw (RuntimeException)jjte002;
  -                    }
                       if (jjte002 instanceof ParseException) {
                         throw (ParseException)jjte002;
                       }
  +                    if (jjte002 instanceof RuntimeException) {
  +                      throw (RuntimeException)jjte002;
  +                    }
                       throw (Error)jjte002;
                     } finally {
                       if (jjtc002) {
  @@ -1834,12 +1851,12 @@
                          } else {
                            jjtree.popNode();
                          }
  -                       if (jjte001 instanceof RuntimeException) {
  -                         throw (RuntimeException)jjte001;
  -                       }
                          if (jjte001 instanceof ParseException) {
                            throw (ParseException)jjte001;
                          }
  +                       if (jjte001 instanceof RuntimeException) {
  +                         throw (RuntimeException)jjte001;
  +                       }
                          throw (Error)jjte001;
                        } finally {
                          if (jjtc001) {
  @@ -1862,12 +1879,12 @@
                          } else {
                            jjtree.popNode();
                          }
  -                       if (jjte002 instanceof RuntimeException) {
  -                         throw (RuntimeException)jjte002;
  -                       }
                          if (jjte002 instanceof ParseException) {
                            throw (ParseException)jjte002;
                          }
  +                       if (jjte002 instanceof RuntimeException) {
  +                         throw (RuntimeException)jjte002;
  +                       }
                          throw (Error)jjte002;
                        } finally {
                          if (jjtc002) {
  @@ -1890,12 +1907,12 @@
                          } else {
                            jjtree.popNode();
                          }
  -                       if (jjte003 instanceof RuntimeException) {
  -                         throw (RuntimeException)jjte003;
  -                       }
                          if (jjte003 instanceof ParseException) {
                            throw (ParseException)jjte003;
                          }
  +                       if (jjte003 instanceof RuntimeException) {
  +                         throw (RuntimeException)jjte003;
  +                       }
                          throw (Error)jjte003;
                        } finally {
                          if (jjtc003) {
  @@ -1923,11 +1940,11 @@
                       } else {
                         jjtree.popNode();
                       }
  -                    if (jjte001 instanceof RuntimeException) {
  -                      throw (RuntimeException)jjte001;
  -                    }
                       if (jjte001 instanceof ParseException) {
                         throw (ParseException)jjte001;
  +                    }
  +                    if (jjte001 instanceof RuntimeException) {
  +                      throw (RuntimeException)jjte001;
                       }
                       throw (Error)jjte001;
                     } finally {
  
  
  
  1.8       +20 -3     
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jjt
  
  Index: Parser.jjt
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jjt,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Parser.jjt        2000/10/24 23:34:21     1.7
  +++ Parser.jjt        2000/10/27 05:18:44     1.8
  @@ -122,7 +122,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
  - * @version $Id: Parser.jjt,v 1.7 2000/10/24 23:34:21 jvanzyl Exp $ 
  + * @version $Id: Parser.jjt,v 1.8 2000/10/27 05:18:44 jvanzyl Exp $ 
   */
   public class Parser
   {
  @@ -471,6 +471,10 @@
   <*>
   MORE :
   {
  +    //
  +    //  Note : DOLLARBANG is a duplicate of DOLLAR.  They must be identical.
  +    //
  +
       <DOLLAR: "$"> 
       { 
           if (! inComment)
  @@ -485,6 +489,20 @@
           }            
       }
   
  +|   <DOLLARBANG: "$!"> 
  +    { 
  +        if (! inComment)
  +        {
  +            inReference = true;
  +
  +           if ( bDebugPrint_ )
  +                System.out.print( "$!  : going to " + REFERENCE );
  +
  +            stateStackPush();
  +            SwitchTo(REFERENCE);
  +        }            
  +    }
  +
   |   "##"
      { 
           inComment = true;
  @@ -699,7 +717,6 @@
   |   <#ALPHANUM_CHAR: [ "a"-"z", "A"-"Z", "0"-"9" ] >
   |   <#IDENTIFIER_CHAR: [ "a"-"z", "A"-"Z", "0"-"9", "-", "_" ] >
   |   <IDENTIFIER:  <ALPHA_CHAR> (<IDENTIFIER_CHAR>)* >
  -|   <SHORTHAND: "!">
   |   <DOT: ".">
       {
           if ( bDebugPrint_ )
  @@ -902,7 +919,7 @@
   
   void Reference() : {}
   { 
  -    [<SHORTHAND>]
  +
       // This should be changed to Indentifier() now. Make
       // it easier to walk the AST.
       [<LCURLY>]
  
  
  
  1.5       +42 -42    
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.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ParserConstants.java      2000/10/11 14:46:26     1.4
  +++ ParserConstants.java      2000/10/27 05:18:45     1.5
  @@ -12,45 +12,45 @@
     int ESCAPE_SEQUENCE = 6;
     int TEXT = 7;
     int DOLLAR = 8;
  -  int HASH = 12;
  -  int SINGLE_LINE_COMMENT = 13;
  -  int FORMAL_COMMENT = 14;
  -  int MULTI_LINE_COMMENT = 15;
  -  int STRING_LITERAL = 19;
  -  int TRUE = 20;
  -  int FALSE = 21;
  -  int NEWLINE = 22;
  -  int MINUS = 23;
  -  int PLUS = 24;
  -  int MULTIPLY = 25;
  -  int DIVIDE = 26;
  -  int MODULUS = 27;
  -  int LOGICAL_AND = 28;
  -  int LOGICAL_OR = 29;
  -  int LOGICAL_LT = 30;
  -  int LOGICAL_LE = 31;
  -  int LOGICAL_GT = 32;
  -  int LOGICAL_GE = 33;
  -  int LOGICAL_EQUALS = 34;
  -  int LOGICAL_NOT_EQUALS = 35;
  -  int LOGICAL_NOT = 36;
  -  int EQUALS = 37;
  -  int END = 38;
  -  int INCLUDE_DIRECTIVE = 39;
  -  int IF_DIRECTIVE = 40;
  -  int ELSEIF_DIRECTIVE = 41;
  -  int ELSE_DIRECTIVE = 42;
  -  int SET_DIRECTIVE = 43;
  -  int STOP_DIRECTIVE = 44;
  -  int DIGIT = 45;
  -  int NUMBER_LITERAL = 46;
  -  int LETTER = 47;
  -  int WORD = 48;
  -  int ALPHA_CHAR = 49;
  -  int ALPHANUM_CHAR = 50;
  -  int IDENTIFIER_CHAR = 51;
  -  int IDENTIFIER = 52;
  -  int SHORTHAND = 53;
  +  int DOLLARBANG = 9;
  +  int HASH = 13;
  +  int SINGLE_LINE_COMMENT = 14;
  +  int FORMAL_COMMENT = 15;
  +  int MULTI_LINE_COMMENT = 16;
  +  int STRING_LITERAL = 20;
  +  int TRUE = 21;
  +  int FALSE = 22;
  +  int NEWLINE = 23;
  +  int MINUS = 24;
  +  int PLUS = 25;
  +  int MULTIPLY = 26;
  +  int DIVIDE = 27;
  +  int MODULUS = 28;
  +  int LOGICAL_AND = 29;
  +  int LOGICAL_OR = 30;
  +  int LOGICAL_LT = 31;
  +  int LOGICAL_LE = 32;
  +  int LOGICAL_GT = 33;
  +  int LOGICAL_GE = 34;
  +  int LOGICAL_EQUALS = 35;
  +  int LOGICAL_NOT_EQUALS = 36;
  +  int LOGICAL_NOT = 37;
  +  int EQUALS = 38;
  +  int END = 39;
  +  int INCLUDE_DIRECTIVE = 40;
  +  int IF_DIRECTIVE = 41;
  +  int ELSEIF_DIRECTIVE = 42;
  +  int ELSE_DIRECTIVE = 43;
  +  int SET_DIRECTIVE = 44;
  +  int STOP_DIRECTIVE = 45;
  +  int DIGIT = 46;
  +  int NUMBER_LITERAL = 47;
  +  int LETTER = 48;
  +  int WORD = 49;
  +  int ALPHA_CHAR = 50;
  +  int ALPHANUM_CHAR = 51;
  +  int IDENTIFIER_CHAR = 52;
  +  int IDENTIFIER = 53;
     int DOT = 54;
     int LCURLY = 55;
     int RCURLY = 56;
  @@ -75,14 +75,15 @@
       "<ESCAPE_SEQUENCE>",
       "<TEXT>",
       "\"$\"",
  +    "\"$!\"",
       "\"##\"",
  -    "<token of kind 10>",
  +    "<token of kind 11>",
       "\"#*\"",
       "\"#\"",
       "<SINGLE_LINE_COMMENT>",
       "\"*#\"",
       "\"*#\"",
  -    "<token of kind 16>",
  +    "<token of kind 17>",
       "\" \"",
       "\"\\t\"",
       "<STRING_LITERAL>",
  @@ -119,7 +120,6 @@
       "<ALPHANUM_CHAR>",
       "<IDENTIFIER_CHAR>",
       "<IDENTIFIER>",
  -    "\"!\"",
       "\".\"",
       "\"{\"",
       "\"}\"",
  
  
  
  1.7       +999 -948  
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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ParserTokenManager.java   2000/10/24 23:34:21     1.6
  +++ ParserTokenManager.java   2000/10/27 05:18:45     1.7
  @@ -169,426 +169,387 @@
   
           return;
       }
  -private final int jjStopStringLiteralDfa_3(int pos, long active0)
  -{
  -   switch (pos)
  -   {
  -      case 0:
  -         if ((active0 & 0x1a00L) != 0L)
  -            return 5;
  -         return -1;
  -      default :
  -         return -1;
  -   }
  -}
  -private final int jjStartNfa_3(int pos, long active0)
  -{
  -   return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
  -}
  -private final int jjStopAtPos(int pos, int kind)
  -{
  -   jjmatchedKind = kind;
  -   jjmatchedPos = pos;
  -   return pos + 1;
  -}
  -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_3(state, pos + 1);
  -}
  -private final int jjMoveStringLiteralDfa0_3()
  -{
  -   switch(curChar)
  -   {
  -      case 35:
  -         jjmatchedKind = 12;
  -         return jjMoveStringLiteralDfa1_3(0xa00L);
  -      case 36:
  -         return jjStopAtPos(0, 8);
  -      default :
  -         return jjMoveNfa_3(0, 0);
  -   }
  -}
  -private final int jjMoveStringLiteralDfa1_3(long active0)
  -{
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_3(0, active0);
  -      return 1;
  -   }
  -   switch(curChar)
  -   {
  -      case 35:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  -         break;
  -      case 42:
  -         if ((active0 & 0x800L) != 0L)
  -            return jjStartNfaWithStates_3(1, 11, 3);
  -         break;
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_3(0, active0);
  -}
  -private final void jjCheckNAdd(int state)
  -{
  -   if (jjrounds[state] != jjround)
  -   {
  -      jjstateSet[jjnewStateCnt++] = state;
  -      jjrounds[state] = jjround;
  -   }
  -}
  -private final void jjAddStates(int start, int end)
  -{
  -   do {
  -      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
  -   } while (start++ != end);
  -}
  -private final void jjCheckNAddTwoStates(int state1, int state2)
  -{
  -   jjCheckNAdd(state1);
  -   jjCheckNAdd(state2);
  -}
  -private final void jjCheckNAddStates(int start, int end)
  -{
  -   do {
  -      jjCheckNAdd(jjnextStates[start]);
  -   } while (start++ != end);
  -}
  -private final void jjCheckNAddStates(int start)
  -{
  -   jjCheckNAdd(jjnextStates[start]);
  -   jjCheckNAdd(jjnextStates[start + 1]);
  -}
  -static final long[] jjbitVec0 = {
  -   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
  -};
  -private final int jjMoveNfa_3(int startState, int curPos)
  -{
  -   int[] nextStates;
  -   int startsAt = 0;
  -   jjnewStateCnt = 7;
  -   int i = 1;
  -   jjstateSet[0] = startState;
  -   int j, kind = 0x7fffffff;
  -   for (;;)
  -   {
  -      if (++jjround == 0x7fffffff)
  -         ReInitRounds();
  -      if (curChar < 64)
  -      {
  -         long l = 1L << curChar;
  -         MatchLoop: do
  -         {
  -            switch(jjstateSet[--i])
  -            {
  -               case 0:
  -                  if ((0xffffffe7ffffffffL & l) != 0L)
  -                  {
  -                     if (kind > 7)
  -                        kind = 7;
  -                     jjCheckNAdd(2);
  -                  }
  -                  else if (curChar == 35)
  -                     jjstateSet[jjnewStateCnt++] = 5;
  -                  break;
  -               case 1:
  -                  if (kind > 6)
  -                     kind = 6;
  -                  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 > 10)
  -                     kind = 10;
  -                  break;
  -               case 5:
  -                  if (curChar == 42)
  -                     jjstateSet[jjnewStateCnt++] = 3;
  -                  break;
  -               case 6:
  -                  if (curChar == 35)
  -                     jjstateSet[jjnewStateCnt++] = 5;
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      else if (curChar < 128)
  -      {
  -         long l = 1L << (curChar & 077);
  -         MatchLoop: do
  -         {
  -            switch(jjstateSet[--i])
  -            {
  -               case 0:
  -                  if ((0xffffffffefffffffL & l) != 0L)
  -                  {
  -                     if (kind > 7)
  -                        kind = 7;
  -                     jjCheckNAdd(2);
  -                  }
  -                  else if (curChar == 92)
  -                     jjstateSet[jjnewStateCnt++] = 1;
  -                  break;
  -               case 1:
  -                  if (kind > 6)
  -                     kind = 6;
  -                  break;
  -               case 2:
  -                  if ((0xffffffffefffffffL & l) == 0L)
  -                     break;
  -                  if (kind > 7)
  -                     kind = 7;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 4:
  -                  if (kind > 10)
  -                     kind = 10;
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      else
  -      {
  -         int i2 = (curChar & 0xff) >> 6;
  -         long l2 = 1L << (curChar & 077);
  -         MatchLoop: do
  -         {
  -            switch(jjstateSet[--i])
  -            {
  -               case 0:
  -               case 2:
  -                  if ((jjbitVec0[i2] & l2) == 0L)
  -                     break;
  -                  if (kind > 7)
  -                     kind = 7;
  -                  jjCheckNAdd(2);
  -                  break;
  -               case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 6)
  -                     kind = 6;
  -                  break;
  -               case 4:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
  -                     kind = 10;
  -                  break;
  -               default : break;
  -            }
  -         } while(i != startsAt);
  -      }
  -      if (kind != 0x7fffffff)
  -      {
  -         jjmatchedKind = kind;
  -         jjmatchedPos = curPos;
  -         kind = 0x7fffffff;
  -      }
  -      ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt)))
  -         return curPos;
  -      try { curChar = input_stream.readChar(); }
  -      catch(java.io.IOException e) { return curPos; }
  -   }
  -}
  -private final int jjStopStringLiteralDfa_2(int pos, long active0)
  +private final int jjStopStringLiteralDfa_0(int pos, long active0)
   {
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x300000L) != 0L)
  +         if ((active0 & 0x3f8000600000L) != 0L)
            {
  -            jjmatchedKind = 52;
  -            return 8;
  +            jjmatchedKind = 49;
  +            return 11;
            }
  -         if ((active0 & 0x1a00L) != 0L)
  +         if ((active0 & 0x3400L) != 0L)
               return 2;
            return -1;
         case 1:
  -         if ((active0 & 0x800L) != 0L)
  +         if ((active0 & 0x1000L) != 0L)
               return 0;
  -         if ((active0 & 0x300000L) != 0L)
  +         if ((active0 & 0x20000000000L) != 0L)
  +            return 11;
  +         if ((active0 & 0x3d8000600000L) != 0L)
            {
  -            jjmatchedKind = 52;
  +            jjmatchedKind = 49;
               jjmatchedPos = 1;
  -            return 8;
  +            return 11;
            }
            return -1;
         case 2:
  -         if ((active0 & 0x300000L) != 0L)
  +         if ((active0 & 0x108000000000L) != 0L)
  +            return 11;
  +         if ((active0 & 0x2d0000600000L) != 0L)
            {
  -            jjmatchedKind = 52;
  +            jjmatchedKind = 49;
               jjmatchedPos = 2;
  -            return 8;
  +            return 11;
            }
            return -1;
         case 3:
  -         if ((active0 & 0x200000L) != 0L)
  +         if ((active0 & 0x10000400000L) != 0L)
            {
  -            jjmatchedKind = 52;
  -            jjmatchedPos = 3;
  -            return 8;
  +            if (jjmatchedPos != 3)
  +            {
  +               jjmatchedKind = 49;
  +               jjmatchedPos = 3;
  +            }
  +            return 11;
            }
  -         if ((active0 & 0x100000L) != 0L)
  -            return 8;
  +         if ((active0 & 0x2c0000200000L) != 0L)
  +            return 11;
  +         return -1;
  +      case 4:
  +         if ((active0 & 0x400000L) != 0L)
  +            return 11;
  +         if ((active0 & 0x50000000000L) != 0L)
  +         {
  +            jjmatchedKind = 49;
  +            jjmatchedPos = 4;
  +            return 11;
  +         }
            return -1;
  +      case 5:
  +         if ((active0 & 0x40000000000L) != 0L)
  +            return 11;
  +         if ((active0 & 0x10000000000L) != 0L)
  +         {
  +            jjmatchedKind = 49;
  +            jjmatchedPos = 5;
  +            return 11;
  +         }
  +         return -1;
         default :
            return -1;
      }
   }
  -private final int jjStartNfa_2(int pos, long active0)
  +private final int jjStartNfa_0(int pos, long active0)
   {
  -   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
  +   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
   }
  -private final int jjStartNfaWithStates_2(int pos, int kind, int state)
  +private final int jjStopAtPos(int pos, int kind)
   {
      jjmatchedKind = kind;
      jjmatchedPos = pos;
  +   return pos + 1;
  +}
  +private final int jjStartNfaWithStates_0(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_2(state, pos + 1);
  +   return jjMoveNfa_0(state, pos + 1);
   }
  -private final int jjMoveStringLiteralDfa0_2()
  +private final int jjMoveStringLiteralDfa0_0()
   {
      switch(curChar)
      {
         case 33:
  -         return jjStopAtPos(0, 53);
  +         jjmatchedKind = 37;
  +         return jjMoveStringLiteralDfa1_0(0x1000000000L);
         case 35:
  -         jjmatchedKind = 12;
  -         return jjMoveStringLiteralDfa1_2(0xa00L);
  +         jjmatchedKind = 13;
  +         return jjMoveStringLiteralDfa1_0(0x1400L);
         case 36:
  -         return jjStopAtPos(0, 8);
  +         jjmatchedKind = 8;
  +         return jjMoveStringLiteralDfa1_0(0x200L);
  +      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:
  +         return jjStopAtPos(0, 25);
         case 44:
            return jjStopAtPos(0, 3);
  -      case 46:
  -         return jjStopAtPos(0, 54);
  +      case 45:
  +         return jjStopAtPos(0, 24);
  +      case 47:
  +         return jjStopAtPos(0, 27);
  +      case 60:
  +         jjmatchedKind = 31;
  +         return jjMoveStringLiteralDfa1_0(0x100000000L);
  +      case 61:
  +         jjmatchedKind = 38;
  +         return jjMoveStringLiteralDfa1_0(0x800000000L);
  +      case 62:
  +         jjmatchedKind = 33;
  +         return jjMoveStringLiteralDfa1_0(0x400000000L);
         case 91:
            return jjStopAtPos(0, 1);
         case 93:
            return jjStopAtPos(0, 2);
  +      case 101:
  +         return jjMoveStringLiteralDfa1_0(0xc8000000000L);
         case 102:
  -         return jjMoveStringLiteralDfa1_2(0x200000L);
  +         return jjMoveStringLiteralDfa1_0(0x400000L);
  +      case 105:
  +         return jjMoveStringLiteralDfa1_0(0x30000000000L);
  +      case 115:
  +         return jjMoveStringLiteralDfa1_0(0x300000000000L);
  +      case 116:
  +         return jjMoveStringLiteralDfa1_0(0x200000L);
  +      case 124:
  +         return jjMoveStringLiteralDfa1_0(0x40000000L);
  +      default :
  +         return jjMoveNfa_0(3, 0);
  +   }
  +}
  +private final int jjMoveStringLiteralDfa1_0(long active0)
  +{
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_0(0, active0);
  +      return 1;
  +   }
  +   switch(curChar)
  +   {
  +      case 33:
  +         if ((active0 & 0x200L) != 0L)
  +            return jjStopAtPos(1, 9);
  +         break;
  +      case 35:
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStopAtPos(1, 10);
  +         break;
  +      case 38:
  +         if ((active0 & 0x20000000L) != 0L)
  +            return jjStopAtPos(1, 29);
  +         break;
  +      case 42:
  +         if ((active0 & 0x1000L) != 0L)
  +            return jjStartNfaWithStates_0(1, 12, 0);
  +         break;
  +      case 61:
  +         if ((active0 & 0x100000000L) != 0L)
  +            return jjStopAtPos(1, 32);
  +         else if ((active0 & 0x400000000L) != 0L)
  +            return jjStopAtPos(1, 34);
  +         else if ((active0 & 0x800000000L) != 0L)
  +            return jjStopAtPos(1, 35);
  +         else if ((active0 & 0x1000000000L) != 0L)
  +            return jjStopAtPos(1, 36);
  +         break;
  +      case 97:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x400000L);
  +      case 101:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x100000000000L);
  +      case 102:
  +         if ((active0 & 0x20000000000L) != 0L)
  +            return jjStartNfaWithStates_0(1, 41, 11);
  +         break;
  +      case 108:
  +         return jjMoveStringLiteralDfa2_0(active0, 0xc0000000000L);
  +      case 110:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x18000000000L);
  +      case 114:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x200000L);
  +      case 116:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000L);
  +      case 124:
  +         if ((active0 & 0x40000000L) != 0L)
  +            return jjStopAtPos(1, 30);
  +         break;
  +      default :
  +         break;
  +   }
  +   return jjStartNfa_0(0, active0);
  +}
  +private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
  +{
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_0(0, old0); 
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_0(1, active0);
  +      return 2;
  +   }
  +   switch(curChar)
  +   {
  +      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:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);
  +      case 115:
  +         return jjMoveStringLiteralDfa3_0(active0, 0xc0000000000L);
         case 116:
  -         return jjMoveStringLiteralDfa1_2(0x100000L);
  -      case 123:
  -         return jjStopAtPos(0, 55);
  -      case 125:
  -         return jjStopAtPos(0, 56);
  +         if ((active0 & 0x100000000000L) != 0L)
  +            return jjStartNfaWithStates_0(2, 44, 11);
  +         break;
  +      case 117:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x200000L);
         default :
  -         return jjMoveNfa_2(3, 0);
  +         break;
      }
  +   return jjStartNfa_0(1, active0);
   }
  -private final int jjMoveStringLiteralDfa1_2(long active0)
  +private final int jjMoveStringLiteralDfa3_0(long old0, long active0)
   {
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_0(1, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_2(0, active0);
  -      return 1;
  +      jjStopStringLiteralDfa_0(2, active0);
  +      return 3;
      }
      switch(curChar)
      {
  -      case 35:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  -         break;
  -      case 42:
  -         if ((active0 & 0x800L) != 0L)
  -            return jjStartNfaWithStates_2(1, 11, 0);
  +      case 101:
  +         if ((active0 & 0x200000L) != 0L)
  +            return jjStartNfaWithStates_0(3, 21, 11);
  +         else if ((active0 & 0x80000000000L) != 0L)
  +         {
  +            jjmatchedKind = 43;
  +            jjmatchedPos = 3;
  +         }
  +         return jjMoveStringLiteralDfa4_0(active0, 0x40000000000L);
  +      case 108:
  +         return jjMoveStringLiteralDfa4_0(active0, 0x10000000000L);
  +      case 112:
  +         if ((active0 & 0x200000000000L) != 0L)
  +            return jjStartNfaWithStates_0(3, 45, 11);
            break;
  -      case 97:
  -         return jjMoveStringLiteralDfa2_2(active0, 0x200000L);
  -      case 114:
  -         return jjMoveStringLiteralDfa2_2(active0, 0x100000L);
  +      case 115:
  +         return jjMoveStringLiteralDfa4_0(active0, 0x400000L);
         default :
            break;
      }
  -   return jjStartNfa_2(0, active0);
  +   return jjStartNfa_0(2, active0);
   }
  -private final int jjMoveStringLiteralDfa2_2(long old0, long active0)
  +private final int jjMoveStringLiteralDfa4_0(long old0, long active0)
   {
      if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_2(0, old0); 
  +      return jjStartNfa_0(2, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_2(1, active0);
  -      return 2;
  +      jjStopStringLiteralDfa_0(3, active0);
  +      return 4;
      }
      switch(curChar)
      {
  -      case 108:
  -         return jjMoveStringLiteralDfa3_2(active0, 0x200000L);
  +      case 101:
  +         if ((active0 & 0x400000L) != 0L)
  +            return jjStartNfaWithStates_0(4, 22, 11);
  +         break;
  +      case 105:
  +         return jjMoveStringLiteralDfa5_0(active0, 0x40000000000L);
         case 117:
  -         return jjMoveStringLiteralDfa3_2(active0, 0x100000L);
  +         return jjMoveStringLiteralDfa5_0(active0, 0x10000000000L);
         default :
            break;
      }
  -   return jjStartNfa_2(1, active0);
  +   return jjStartNfa_0(3, active0);
   }
  -private final int jjMoveStringLiteralDfa3_2(long old0, long active0)
  +private final int jjMoveStringLiteralDfa5_0(long old0, long active0)
   {
      if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_2(1, old0); 
  +      return jjStartNfa_0(3, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_2(2, active0);
  -      return 3;
  +      jjStopStringLiteralDfa_0(4, active0);
  +      return 5;
      }
      switch(curChar)
      {
  -      case 101:
  -         if ((active0 & 0x100000L) != 0L)
  -            return jjStartNfaWithStates_2(3, 20, 8);
  +      case 100:
  +         return jjMoveStringLiteralDfa6_0(active0, 0x10000000000L);
  +      case 102:
  +         if ((active0 & 0x40000000000L) != 0L)
  +            return jjStartNfaWithStates_0(5, 42, 11);
            break;
  -      case 115:
  -         return jjMoveStringLiteralDfa4_2(active0, 0x200000L);
         default :
            break;
      }
  -   return jjStartNfa_2(2, active0);
  +   return jjStartNfa_0(4, active0);
   }
  -private final int jjMoveStringLiteralDfa4_2(long old0, long active0)
  +private final int jjMoveStringLiteralDfa6_0(long old0, long active0)
   {
      if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_2(2, old0); 
  +      return jjStartNfa_0(4, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_2(3, active0);
  -      return 4;
  +      jjStopStringLiteralDfa_0(5, active0);
  +      return 6;
      }
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x200000L) != 0L)
  -            return jjStartNfaWithStates_2(4, 21, 8);
  +         if ((active0 & 0x10000000000L) != 0L)
  +            return jjStartNfaWithStates_0(6, 40, 11);
            break;
         default :
            break;
      }
  -   return jjStartNfa_2(3, active0);
  +   return jjStartNfa_0(5, active0);
   }
  -private final int jjMoveNfa_2(int startState, int curPos)
  +private final void jjCheckNAdd(int state)
  +{
  +   if (jjrounds[state] != jjround)
  +   {
  +      jjstateSet[jjnewStateCnt++] = state;
  +      jjrounds[state] = jjround;
  +   }
  +}
  +private final void jjAddStates(int start, int end)
  +{
  +   do {
  +      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
  +   } while (start++ != end);
  +}
  +private final void jjCheckNAddTwoStates(int state1, int state2)
  +{
  +   jjCheckNAdd(state1);
  +   jjCheckNAdd(state2);
  +}
  +private final void jjCheckNAddStates(int start, int end)
  +{
  +   do {
  +      jjCheckNAdd(jjnextStates[start]);
  +   } while (start++ != end);
  +}
  +private final void jjCheckNAddStates(int start)
  +{
  +   jjCheckNAdd(jjnextStates[start]);
  +   jjCheckNAdd(jjnextStates[start + 1]);
  +}
  +static final long[] jjbitVec0 = {
  +   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
  +};
  +private final int jjMoveNfa_0(int startState, int curPos)
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 9;
  +   jjnewStateCnt = 12;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -604,18 +565,31 @@
               switch(jjstateSet[--i])
               {
                  case 3:
  -                  if (curChar == 34)
  +                  if ((0x3ff000000000000L & l) != 0L)
  +                  {
  +                     if (kind > 47)
  +                        kind = 47;
  +                     jjCheckNAdd(10);
  +                  }
  +                  else if ((0x2400L & l) != 0L)
  +                  {
  +                     if (kind > 23)
  +                        kind = 23;
  +                  }
  +                  else if (curChar == 34)
                        jjCheckNAddTwoStates(5, 6);
                     else if (curChar == 35)
                        jjstateSet[jjnewStateCnt++] = 2;
  +                  if (curChar == 13)
  +                     jjstateSet[jjnewStateCnt++] = 8;
                     break;
                  case 0:
                     if (curChar == 42)
                        jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  case 2:
                     if (curChar == 42)
  @@ -630,15 +604,27 @@
                        jjCheckNAddTwoStates(5, 6);
                     break;
                  case 6:
  -                  if (curChar == 34 && kind > 19)
  -                     kind = 19;
  +                  if (curChar == 34 && kind > 20)
  +                     kind = 20;
  +                  break;
  +               case 7:
  +                  if ((0x2400L & l) != 0L && kind > 23)
  +                     kind = 23;
                     break;
                  case 8:
  -                  if ((0x3ff200000000000L & l) == 0L)
  +                  if (curChar == 10 && kind > 23)
  +                     kind = 23;
  +                  break;
  +               case 9:
  +                  if (curChar == 13)
  +                     jjstateSet[jjnewStateCnt++] = 8;
  +                  break;
  +               case 10:
  +                  if ((0x3ff000000000000L & l) == 0L)
                        break;
  -                  if (kind > 52)
  -                     kind = 52;
  -                  jjstateSet[jjnewStateCnt++] = 8;
  +                  if (kind > 47)
  +                     kind = 47;
  +                  jjCheckNAdd(10);
                     break;
                  default : break;
               }
  @@ -652,26 +638,20 @@
               switch(jjstateSet[--i])
               {
                  case 3:
  +               case 11:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
  -                  if (kind > 52)
  -                     kind = 52;
  -                  jjCheckNAdd(8);
  +                  if (kind > 49)
  +                     kind = 49;
  +                  jjCheckNAdd(11);
                     break;
                  case 1:
  -                  if (kind > 10)
  -                     kind = 10;
  +                  if (kind > 11)
  +                     kind = 11;
                     break;
                  case 5:
                     jjAddStates(0, 1);
                     break;
  -               case 8:
  -                  if ((0x7fffffe87fffffeL & l) == 0L)
  -                     break;
  -                  if (kind > 52)
  -                     kind = 52;
  -                  jjCheckNAdd(8);
  -                  break;
                  default : break;
               }
            } while(i != startsAt);
  @@ -685,8 +665,8 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  case 5:
                     if ((jjbitVec0[i2] & l2) != 0L)
  @@ -703,7 +683,7 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 9 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 12 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
  @@ -714,7 +694,7 @@
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x1a00L) != 0L)
  +         if ((active0 & 0x3400L) != 0L)
               return 2;
            return -1;
         default :
  @@ -738,12 +718,13 @@
      switch(curChar)
      {
         case 35:
  -         jjmatchedKind = 12;
  -         return jjMoveStringLiteralDfa1_5(0xa00L);
  +         jjmatchedKind = 13;
  +         return jjMoveStringLiteralDfa1_5(0x1400L);
         case 36:
  -         return jjStopAtPos(0, 8);
  +         jjmatchedKind = 8;
  +         return jjMoveStringLiteralDfa1_5(0x200L);
         case 42:
  -         return jjMoveStringLiteralDfa1_5(0x8000L);
  +         return jjMoveStringLiteralDfa1_5(0x10000L);
         default :
            return jjMoveNfa_5(3, 0);
      }
  @@ -757,15 +738,19 @@
      }
      switch(curChar)
      {
  -      case 35:
  +      case 33:
            if ((active0 & 0x200L) != 0L)
               return jjStopAtPos(1, 9);
  -         else if ((active0 & 0x8000L) != 0L)
  -            return jjStopAtPos(1, 15);
            break;
  +      case 35:
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStopAtPos(1, 10);
  +         else if ((active0 & 0x10000L) != 0L)
  +            return jjStopAtPos(1, 16);
  +         break;
         case 42:
  -         if ((active0 & 0x800L) != 0L)
  -            return jjStartNfaWithStates_5(1, 11, 0);
  +         if ((active0 & 0x1000L) != 0L)
  +            return jjStartNfaWithStates_5(1, 12, 0);
            break;
         default :
            break;
  @@ -796,8 +781,8 @@
                        jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  case 2:
                     if (curChar == 42)
  @@ -819,7 +804,7 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  kind = 10;
  +                  kind = 11;
                     break;
                  default : break;
               }
  @@ -834,8 +819,8 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  default : break;
               }
  @@ -854,70 +839,184 @@
         catch(java.io.IOException e) { return curPos; }
      }
   }
  -private final int jjStopStringLiteralDfa_7(int pos, long active0)
  +private final int jjStopStringLiteralDfa_4(int pos, long active0)
   {
      switch (pos)
  +   {
  +      case 0:
  +         if ((active0 & 0x3400L) != 0L)
  +            return 2;
  +         if ((active0 & 0x600000L) != 0L)
  +         {
  +            jjmatchedKind = 53;
  +            return 8;
  +         }
  +         return -1;
  +      case 1:
  +         if ((active0 & 0x600000L) != 0L)
  +         {
  +            jjmatchedKind = 53;
  +            jjmatchedPos = 1;
  +            return 8;
  +         }
  +         if ((active0 & 0x1000L) != 0L)
  +            return 0;
  +         return -1;
  +      case 2:
  +         if ((active0 & 0x600000L) != 0L)
  +         {
  +            jjmatchedKind = 53;
  +            jjmatchedPos = 2;
  +            return 8;
  +         }
  +         return -1;
  +      case 3:
  +         if ((active0 & 0x400000L) != 0L)
  +         {
  +            jjmatchedKind = 53;
  +            jjmatchedPos = 3;
  +            return 8;
  +         }
  +         if ((active0 & 0x200000L) != 0L)
  +            return 8;
  +         return -1;
  +      default :
  +         return -1;
  +   }
  +}
  +private final int jjStartNfa_4(int pos, long active0)
  +{
  +   return jjMoveNfa_4(jjStopStringLiteralDfa_4(pos, active0), pos + 1);
  +}
  +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_4(state, pos + 1);
  +}
  +private final int jjMoveStringLiteralDfa0_4()
  +{
  +   switch(curChar)
  +   {
  +      case 35:
  +         jjmatchedKind = 13;
  +         return jjMoveStringLiteralDfa1_4(0x1400L);
  +      case 36:
  +         jjmatchedKind = 8;
  +         return jjMoveStringLiteralDfa1_4(0x200L);
  +      case 46:
  +         return jjStopAtPos(0, 54);
  +      case 102:
  +         return jjMoveStringLiteralDfa1_4(0x400000L);
  +      case 116:
  +         return jjMoveStringLiteralDfa1_4(0x200000L);
  +      case 123:
  +         return jjStopAtPos(0, 55);
  +      case 125:
  +         return jjStopAtPos(0, 56);
  +      default :
  +         return jjMoveNfa_4(3, 0);
  +   }
  +}
  +private final int jjMoveStringLiteralDfa1_4(long active0)
  +{
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_4(0, active0);
  +      return 1;
  +   }
  +   switch(curChar)
  +   {
  +      case 33:
  +         if ((active0 & 0x200L) != 0L)
  +            return jjStopAtPos(1, 9);
  +         break;
  +      case 35:
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStopAtPos(1, 10);
  +         break;
  +      case 42:
  +         if ((active0 & 0x1000L) != 0L)
  +            return jjStartNfaWithStates_4(1, 12, 0);
  +         break;
  +      case 97:
  +         return jjMoveStringLiteralDfa2_4(active0, 0x400000L);
  +      case 114:
  +         return jjMoveStringLiteralDfa2_4(active0, 0x200000L);
  +      default :
  +         break;
  +   }
  +   return jjStartNfa_4(0, active0);
  +}
  +private final int jjMoveStringLiteralDfa2_4(long old0, long active0)
  +{
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_4(0, old0); 
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_4(1, active0);
  +      return 2;
  +   }
  +   switch(curChar)
      {
  -      case 0:
  -         if ((active0 & 0x1a00L) != 0L)
  -            return 2;
  -         return -1;
  +      case 108:
  +         return jjMoveStringLiteralDfa3_4(active0, 0x400000L);
  +      case 117:
  +         return jjMoveStringLiteralDfa3_4(active0, 0x200000L);
         default :
  -         return -1;
  +         break;
      }
  -}
  -private final int jjStartNfa_7(int pos, long active0)
  -{
  -   return jjMoveNfa_7(jjStopStringLiteralDfa_7(pos, active0), pos + 1);
  +   return jjStartNfa_4(1, active0);
   }
  -private final int jjStartNfaWithStates_7(int pos, int kind, int state)
  +private final int jjMoveStringLiteralDfa3_4(long old0, long active0)
   {
  -   jjmatchedKind = kind;
  -   jjmatchedPos = pos;
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_4(1, old0); 
      try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) { return pos + 1; }
  -   return jjMoveNfa_7(state, pos + 1);
  -}
  -private final int jjMoveStringLiteralDfa0_7()
  -{
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_4(2, active0);
  +      return 3;
  +   }
      switch(curChar)
      {
  -      case 35:
  -         jjmatchedKind = 12;
  -         return jjMoveStringLiteralDfa1_7(0xa00L);
  -      case 36:
  -         return jjStopAtPos(0, 8);
  +      case 101:
  +         if ((active0 & 0x200000L) != 0L)
  +            return jjStartNfaWithStates_4(3, 21, 8);
  +         break;
  +      case 115:
  +         return jjMoveStringLiteralDfa4_4(active0, 0x400000L);
         default :
  -         return jjMoveNfa_7(3, 0);
  +         break;
      }
  +   return jjStartNfa_4(2, active0);
   }
  -private final int jjMoveStringLiteralDfa1_7(long active0)
  +private final int jjMoveStringLiteralDfa4_4(long old0, long active0)
   {
  +   if (((active0 &= old0)) == 0L)
  +      return jjStartNfa_4(2, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_7(0, active0);
  -      return 1;
  +      jjStopStringLiteralDfa_4(3, active0);
  +      return 4;
      }
      switch(curChar)
      {
  -      case 35:
  -         if ((active0 & 0x200L) != 0L)
  -            return jjStopAtPos(1, 9);
  -         break;
  -      case 42:
  -         if ((active0 & 0x800L) != 0L)
  -            return jjStartNfaWithStates_7(1, 11, 0);
  +      case 101:
  +         if ((active0 & 0x400000L) != 0L)
  +            return jjStartNfaWithStates_4(4, 22, 8);
            break;
         default :
            break;
      }
  -   return jjStartNfa_7(0, active0);
  +   return jjStartNfa_4(3, active0);
   }
  -private final int jjMoveNfa_7(int startState, int curPos)
  +private final int jjMoveNfa_4(int startState, int curPos)
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 7;
  +   jjnewStateCnt = 9;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -933,40 +1032,42 @@
               switch(jjstateSet[--i])
               {
                  case 3:
  -                  if ((0x2400L & l) != 0L)
  -                  {
  -                     if (kind > 13)
  -                        kind = 13;
  -                  }
  +                  if (curChar == 34)
  +                     jjCheckNAddTwoStates(5, 6);
                     else if (curChar == 35)
                        jjstateSet[jjnewStateCnt++] = 2;
  -                  if (curChar == 13)
  -                     jjstateSet[jjnewStateCnt++] = 5;
                     break;
                  case 0:
                     if (curChar == 42)
                        jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  case 2:
                     if (curChar == 42)
                        jjstateSet[jjnewStateCnt++] = 0;
                     break;
                  case 4:
  -                  if ((0x2400L & l) != 0L && kind > 13)
  -                     kind = 13;
  +                  if (curChar == 34)
  +                     jjCheckNAddTwoStates(5, 6);
                     break;
                  case 5:
  -                  if (curChar == 10 && kind > 13)
  -                     kind = 13;
  +                  if ((0xfffffffbffffdbffL & l) != 0L)
  +                     jjCheckNAddTwoStates(5, 6);
                     break;
                  case 6:
  -                  if (curChar == 13)
  -                     jjstateSet[jjnewStateCnt++] = 5;
  +                  if (curChar == 34 && kind > 20)
  +                     kind = 20;
                     break;
  +               case 8:
  +                  if ((0x3ff200000000000L & l) == 0L)
  +                     break;
  +                  if (kind > 53)
  +                     kind = 53;
  +                  jjstateSet[jjnewStateCnt++] = 8;
  +                  break;
                  default : break;
               }
            } while(i != startsAt);
  @@ -978,8 +1079,26 @@
            {
               switch(jjstateSet[--i])
               {
  +               case 3:
  +                  if ((0x7fffffe07fffffeL & l) == 0L)
  +                     break;
  +                  if (kind > 53)
  +                     kind = 53;
  +                  jjCheckNAdd(8);
  +                  break;
                  case 1:
  -                  kind = 10;
  +                  if (kind > 11)
  +                     kind = 11;
  +                  break;
  +               case 5:
  +                  jjAddStates(0, 1);
  +                  break;
  +               case 8:
  +                  if ((0x7fffffe87fffffeL & l) == 0L)
  +                     break;
  +                  if (kind > 53)
  +                     kind = 53;
  +                  jjCheckNAdd(8);
                     break;
                  default : break;
               }
  @@ -994,8 +1113,12 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  +                     kind = 11;
  +                  break;
  +               case 5:
  +                  if ((jjbitVec0[i2] & l2) != 0L)
  +                     jjAddStates(0, 1);
                     break;
                  default : break;
               }
  @@ -1008,7 +1131,7 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 9 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
  @@ -1019,40 +1142,40 @@
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x300000L) != 0L)
  +         if ((active0 & 0x3400L) != 0L)
  +            return 2;
  +         if ((active0 & 0x600000L) != 0L)
            {
  -            jjmatchedKind = 52;
  +            jjmatchedKind = 53;
               return 8;
            }
  -         if ((active0 & 0x1a00L) != 0L)
  -            return 2;
            return -1;
         case 1:
  -         if ((active0 & 0x800L) != 0L)
  -            return 0;
  -         if ((active0 & 0x300000L) != 0L)
  +         if ((active0 & 0x600000L) != 0L)
            {
  -            jjmatchedKind = 52;
  +            jjmatchedKind = 53;
               jjmatchedPos = 1;
               return 8;
            }
  +         if ((active0 & 0x1000L) != 0L)
  +            return 0;
            return -1;
         case 2:
  -         if ((active0 & 0x300000L) != 0L)
  +         if ((active0 & 0x600000L) != 0L)
            {
  -            jjmatchedKind = 52;
  +            jjmatchedKind = 53;
               jjmatchedPos = 2;
               return 8;
            }
            return -1;
         case 3:
  -         if ((active0 & 0x200000L) != 0L)
  +         if ((active0 & 0x400000L) != 0L)
            {
  -            jjmatchedKind = 52;
  +            jjmatchedKind = 53;
               jjmatchedPos = 3;
               return 8;
            }
  -         if ((active0 & 0x100000L) != 0L)
  +         if ((active0 & 0x200000L) != 0L)
               return 8;
            return -1;
         default :
  @@ -1075,13 +1198,12 @@
   {
      switch(curChar)
      {
  -      case 33:
  -         return jjStopAtPos(0, 53);
         case 35:
  -         jjmatchedKind = 12;
  -         return jjMoveStringLiteralDfa1_1(0xa00L);
  +         jjmatchedKind = 13;
  +         return jjMoveStringLiteralDfa1_1(0x1400L);
         case 36:
  -         return jjStopAtPos(0, 8);
  +         jjmatchedKind = 8;
  +         return jjMoveStringLiteralDfa1_1(0x200L);
         case 40:
            return jjStopAtPos(0, 4);
         case 41:
  @@ -1093,9 +1215,9 @@
         case 93:
            return jjStopAtPos(0, 2);
         case 102:
  -         return jjMoveStringLiteralDfa1_1(0x200000L);
  +         return jjMoveStringLiteralDfa1_1(0x400000L);
         case 116:
  -         return jjMoveStringLiteralDfa1_1(0x100000L);
  +         return jjMoveStringLiteralDfa1_1(0x200000L);
         case 123:
            return jjStopAtPos(0, 55);
         case 125:
  @@ -1113,18 +1235,22 @@
      }
      switch(curChar)
      {
  -      case 35:
  +      case 33:
            if ((active0 & 0x200L) != 0L)
               return jjStopAtPos(1, 9);
            break;
  +      case 35:
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStopAtPos(1, 10);
  +         break;
         case 42:
  -         if ((active0 & 0x800L) != 0L)
  -            return jjStartNfaWithStates_1(1, 11, 0);
  +         if ((active0 & 0x1000L) != 0L)
  +            return jjStartNfaWithStates_1(1, 12, 0);
            break;
         case 97:
  -         return jjMoveStringLiteralDfa2_1(active0, 0x200000L);
  +         return jjMoveStringLiteralDfa2_1(active0, 0x400000L);
         case 114:
  -         return jjMoveStringLiteralDfa2_1(active0, 0x100000L);
  +         return jjMoveStringLiteralDfa2_1(active0, 0x200000L);
         default :
            break;
      }
  @@ -1142,9 +1268,9 @@
      switch(curChar)
      {
         case 108:
  -         return jjMoveStringLiteralDfa3_1(active0, 0x200000L);
  +         return jjMoveStringLiteralDfa3_1(active0, 0x400000L);
         case 117:
  -         return jjMoveStringLiteralDfa3_1(active0, 0x100000L);
  +         return jjMoveStringLiteralDfa3_1(active0, 0x200000L);
         default :
            break;
      }
  @@ -1162,11 +1288,11 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x100000L) != 0L)
  -            return jjStartNfaWithStates_1(3, 20, 8);
  +         if ((active0 & 0x200000L) != 0L)
  +            return jjStartNfaWithStates_1(3, 21, 8);
            break;
         case 115:
  -         return jjMoveStringLiteralDfa4_1(active0, 0x200000L);
  +         return jjMoveStringLiteralDfa4_1(active0, 0x400000L);
         default :
            break;
      }
  @@ -1184,8 +1310,8 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x200000L) != 0L)
  -            return jjStartNfaWithStates_1(4, 21, 8);
  +         if ((active0 & 0x400000L) != 0L)
  +            return jjStartNfaWithStates_1(4, 22, 8);
            break;
         default :
            break;
  @@ -1222,8 +1348,8 @@
                        jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  case 2:
                     if (curChar == 42)
  @@ -1238,14 +1364,14 @@
                        jjCheckNAddTwoStates(5, 6);
                     break;
                  case 6:
  -                  if (curChar == 34 && kind > 19)
  -                     kind = 19;
  +                  if (curChar == 34 && kind > 20)
  +                     kind = 20;
                     break;
                  case 8:
                     if ((0x3ff200000000000L & l) == 0L)
                        break;
  -                  if (kind > 52)
  -                     kind = 52;
  +                  if (kind > 53)
  +                     kind = 53;
                     jjstateSet[jjnewStateCnt++] = 8;
                     break;
                  default : break;
  @@ -1262,13 +1388,13 @@
                  case 3:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
  -                  if (kind > 52)
  -                     kind = 52;
  +                  if (kind > 53)
  +                     kind = 53;
                     jjCheckNAdd(8);
                     break;
                  case 1:
  -                  if (kind > 10)
  -                     kind = 10;
  +                  if (kind > 11)
  +                     kind = 11;
                     break;
                  case 5:
                     jjAddStates(0, 1);
  @@ -1276,8 +1402,8 @@
                  case 8:
                     if ((0x7fffffe87fffffeL & l) == 0L)
                        break;
  -                  if (kind > 52)
  -                     kind = 52;
  +                  if (kind > 53)
  +                     kind = 53;
                     jjCheckNAdd(8);
                     break;
                  default : break;
  @@ -1293,8 +1419,8 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  case 5:
                     if ((jjbitVec0[i2] & l2) != 0L)
  @@ -1317,343 +1443,344 @@
         catch(java.io.IOException e) { return curPos; }
      }
   }
  -private final int jjStopStringLiteralDfa_0(int pos, long active0)
  +private final int jjStopStringLiteralDfa_6(int pos, long active0)
  +{
  +   switch (pos)
  +   {
  +      case 0:
  +         if ((active0 & 0x3400L) != 0L)
  +            return 2;
  +         return -1;
  +      default :
  +         return -1;
  +   }
  +}
  +private final int jjStartNfa_6(int pos, long active0)
   {
  +   return jjMoveNfa_6(jjStopStringLiteralDfa_6(pos, active0), pos + 1);
  +}
  +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_6(state, pos + 1);
  +}
  +private final int jjMoveStringLiteralDfa0_6()
  +{
  +   switch(curChar)
  +   {
  +      case 35:
  +         jjmatchedKind = 13;
  +         return jjMoveStringLiteralDfa1_6(0x1400L);
  +      case 36:
  +         jjmatchedKind = 8;
  +         return jjMoveStringLiteralDfa1_6(0x200L);
  +      case 42:
  +         return jjMoveStringLiteralDfa1_6(0x8000L);
  +      default :
  +         return jjMoveNfa_6(3, 0);
  +   }
  +}
  +private final int jjMoveStringLiteralDfa1_6(long active0)
  +{
  +   try { curChar = input_stream.readChar(); }
  +   catch(java.io.IOException e) {
  +      jjStopStringLiteralDfa_6(0, active0);
  +      return 1;
  +   }
  +   switch(curChar)
  +   {
  +      case 33:
  +         if ((active0 & 0x200L) != 0L)
  +            return jjStopAtPos(1, 9);
  +         break;
  +      case 35:
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStopAtPos(1, 10);
  +         else if ((active0 & 0x8000L) != 0L)
  +            return jjStopAtPos(1, 15);
  +         break;
  +      case 42:
  +         if ((active0 & 0x1000L) != 0L)
  +            return jjStartNfaWithStates_6(1, 12, 0);
  +         break;
  +      default :
  +         break;
  +   }
  +   return jjStartNfa_6(0, active0);
  +}
  +private final int jjMoveNfa_6(int startState, int curPos)
  +{
  +   int[] nextStates;
  +   int startsAt = 0;
  +   jjnewStateCnt = 4;
  +   int i = 1;
  +   jjstateSet[0] = startState;
  +   int j, kind = 0x7fffffff;
  +   for (;;)
  +   {
  +      if (++jjround == 0x7fffffff)
  +         ReInitRounds();
  +      if (curChar < 64)
  +      {
  +         long l = 1L << curChar;
  +         MatchLoop: do
  +         {
  +            switch(jjstateSet[--i])
  +            {
  +               case 0:
  +                  if (curChar == 42)
  +                     jjstateSet[jjnewStateCnt++] = 1;
  +                  break;
  +               case 1:
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  +                     kind = 11;
  +                  break;
  +               case 2:
  +                  if (curChar == 42)
  +                     jjstateSet[jjnewStateCnt++] = 0;
  +                  break;
  +               case 3:
  +                  if (curChar == 35)
  +                     jjstateSet[jjnewStateCnt++] = 2;
  +                  break;
  +               default : break;
  +            }
  +         } while(i != startsAt);
  +      }
  +      else if (curChar < 128)
  +      {
  +         long l = 1L << (curChar & 077);
  +         MatchLoop: do
  +         {
  +            switch(jjstateSet[--i])
  +            {
  +               case 1:
  +                  kind = 11;
  +                  break;
  +               default : break;
  +            }
  +         } while(i != startsAt);
  +      }
  +      else
  +      {
  +         int i2 = (curChar & 0xff) >> 6;
  +         long l2 = 1L << (curChar & 077);
  +         MatchLoop: do
  +         {
  +            switch(jjstateSet[--i])
  +            {
  +               case 1:
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  +                     kind = 11;
  +                  break;
  +               default : break;
  +            }
  +         } while(i != startsAt);
  +      }
  +      if (kind != 0x7fffffff)
  +      {
  +         jjmatchedKind = kind;
  +         jjmatchedPos = curPos;
  +         kind = 0x7fffffff;
  +      }
  +      ++curPos;
  +      if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt)))
  +         return curPos;
  +      try { curChar = input_stream.readChar(); }
  +      catch(java.io.IOException e) { return curPos; }
  +   }
  +}
  +private final int jjStopStringLiteralDfa_2(int pos, long active0)
  +{
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x1a00L) != 0L)
  +         if ((active0 & 0x3400L) != 0L)
               return 2;
  -         if ((active0 & 0x1fc000300000L) != 0L)
  +         if ((active0 & 0x600000L) != 0L)
            {
  -            jjmatchedKind = 48;
  -            return 11;
  +            jjmatchedKind = 53;
  +            return 8;
            }
            return -1;
         case 1:
  -         if ((active0 & 0x800L) != 0L)
  -            return 0;
  -         if ((active0 & 0x1ec000300000L) != 0L)
  +         if ((active0 & 0x600000L) != 0L)
            {
  -            jjmatchedKind = 48;
  +            jjmatchedKind = 53;
               jjmatchedPos = 1;
  -            return 11;
  +            return 8;
            }
  -         if ((active0 & 0x10000000000L) != 0L)
  -            return 11;
  +         if ((active0 & 0x1000L) != 0L)
  +            return 0;
            return -1;
         case 2:
  -         if ((active0 & 0x84000000000L) != 0L)
  -            return 11;
  -         if ((active0 & 0x168000300000L) != 0L)
  +         if ((active0 & 0x600000L) != 0L)
            {
  -            jjmatchedKind = 48;
  +            jjmatchedKind = 53;
               jjmatchedPos = 2;
  -            return 11;
  +            return 8;
            }
            return -1;
         case 3:
  -         if ((active0 & 0x8000200000L) != 0L)
  -         {
  -            if (jjmatchedPos != 3)
  -            {
  -               jjmatchedKind = 48;
  -               jjmatchedPos = 3;
  -            }
  -            return 11;
  -         }
  -         if ((active0 & 0x160000100000L) != 0L)
  -            return 11;
  -         return -1;
  -      case 4:
  -         if ((active0 & 0x28000000000L) != 0L)
  +         if ((active0 & 0x400000L) != 0L)
            {
  -            jjmatchedKind = 48;
  -            jjmatchedPos = 4;
  -            return 11;
  +            jjmatchedKind = 53;
  +            jjmatchedPos = 3;
  +            return 8;
            }
            if ((active0 & 0x200000L) != 0L)
  -            return 11;
  -         return -1;
  -      case 5:
  -         if ((active0 & 0x20000000000L) != 0L)
  -            return 11;
  -         if ((active0 & 0x8000000000L) != 0L)
  -         {
  -            jjmatchedKind = 48;
  -            jjmatchedPos = 5;
  -            return 11;
  -         }
  +            return 8;
            return -1;
         default :
            return -1;
      }
   }
  -private final int jjStartNfa_0(int pos, long active0)
  +private final int jjStartNfa_2(int pos, long active0)
   {
  -   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
  +   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
   }
  -private final int jjStartNfaWithStates_0(int pos, int kind, int state)
  +private final int jjStartNfaWithStates_2(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_0(state, pos + 1);
  +   return jjMoveNfa_2(state, pos + 1);
   }
  -private final int jjMoveStringLiteralDfa0_0()
  +private final int jjMoveStringLiteralDfa0_2()
   {
      switch(curChar)
      {
  -      case 33:
  -         jjmatchedKind = 36;
  -         return jjMoveStringLiteralDfa1_0(0x800000000L);
         case 35:
  -         jjmatchedKind = 12;
  -         return jjMoveStringLiteralDfa1_0(0xa00L);
  +         jjmatchedKind = 13;
  +         return jjMoveStringLiteralDfa1_2(0x1400L);
         case 36:
  -         return jjStopAtPos(0, 8);
  -      case 37:
  -         return jjStopAtPos(0, 27);
  -      case 38:
  -         return jjMoveStringLiteralDfa1_0(0x10000000L);
  +         jjmatchedKind = 8;
  +         return jjMoveStringLiteralDfa1_2(0x200L);
         case 40:
            return jjStopAtPos(0, 4);
         case 41:
            return jjStopAtPos(0, 5);
  -      case 42:
  -         return jjStopAtPos(0, 25);
  -      case 43:
  -         return jjStopAtPos(0, 24);
         case 44:
            return jjStopAtPos(0, 3);
  -      case 45:
  -         return jjStopAtPos(0, 23);
  -      case 47:
  -         return jjStopAtPos(0, 26);
  -      case 60:
  -         jjmatchedKind = 30;
  -         return jjMoveStringLiteralDfa1_0(0x80000000L);
  -      case 61:
  -         jjmatchedKind = 37;
  -         return jjMoveStringLiteralDfa1_0(0x400000000L);
  -      case 62:
  -         jjmatchedKind = 32;
  -         return jjMoveStringLiteralDfa1_0(0x200000000L);
  +      case 46:
  +         return jjStopAtPos(0, 54);
         case 91:
            return jjStopAtPos(0, 1);
         case 93:
            return jjStopAtPos(0, 2);
  -      case 101:
  -         return jjMoveStringLiteralDfa1_0(0x64000000000L);
         case 102:
  -         return jjMoveStringLiteralDfa1_0(0x200000L);
  -      case 105:
  -         return jjMoveStringLiteralDfa1_0(0x18000000000L);
  -      case 115:
  -         return jjMoveStringLiteralDfa1_0(0x180000000000L);
  +         return jjMoveStringLiteralDfa1_2(0x400000L);
         case 116:
  -         return jjMoveStringLiteralDfa1_0(0x100000L);
  -      case 124:
  -         return jjMoveStringLiteralDfa1_0(0x20000000L);
  +         return jjMoveStringLiteralDfa1_2(0x200000L);
  +      case 123:
  +         return jjStopAtPos(0, 55);
  +      case 125:
  +         return jjStopAtPos(0, 56);
         default :
  -         return jjMoveNfa_0(3, 0);
  +         return jjMoveNfa_2(3, 0);
      }
   }
  -private final int jjMoveStringLiteralDfa1_0(long active0)
  +private final int jjMoveStringLiteralDfa1_2(long active0)
   {
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(0, active0);
  +      jjStopStringLiteralDfa_2(0, active0);
         return 1;
      }
      switch(curChar)
      {
  -      case 35:
  +      case 33:
            if ((active0 & 0x200L) != 0L)
               return jjStopAtPos(1, 9);
            break;
  -      case 38:
  -         if ((active0 & 0x10000000L) != 0L)
  -            return jjStopAtPos(1, 28);
  +      case 35:
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStopAtPos(1, 10);
            break;
         case 42:
  -         if ((active0 & 0x800L) != 0L)
  -            return jjStartNfaWithStates_0(1, 11, 0);
  -         break;
  -      case 61:
  -         if ((active0 & 0x80000000L) != 0L)
  -            return jjStopAtPos(1, 31);
  -         else if ((active0 & 0x200000000L) != 0L)
  -            return jjStopAtPos(1, 33);
  -         else if ((active0 & 0x400000000L) != 0L)
  -            return jjStopAtPos(1, 34);
  -         else if ((active0 & 0x800000000L) != 0L)
  -            return jjStopAtPos(1, 35);
  +         if ((active0 & 0x1000L) != 0L)
  +            return jjStartNfaWithStates_2(1, 12, 0);
            break;
         case 97:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x200000L);
  -      case 101:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x80000000000L);
  -      case 102:
  -         if ((active0 & 0x10000000000L) != 0L)
  -            return jjStartNfaWithStates_0(1, 40, 11);
  -         break;
  -      case 108:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x60000000000L);
  -      case 110:
  -         return jjMoveStringLiteralDfa2_0(active0, 0xc000000000L);
  +         return jjMoveStringLiteralDfa2_2(active0, 0x400000L);
         case 114:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x100000L);
  -      case 116:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x100000000000L);
  -      case 124:
  -         if ((active0 & 0x20000000L) != 0L)
  -            return jjStopAtPos(1, 29);
  -         break;
  +         return jjMoveStringLiteralDfa2_2(active0, 0x200000L);
         default :
            break;
      }
  -   return jjStartNfa_0(0, active0);
  +   return jjStartNfa_2(0, active0);
   }
  -private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
  +private final int jjMoveStringLiteralDfa2_2(long old0, long active0)
   {
      if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(0, old0); 
  +      return jjStartNfa_2(0, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(1, active0);
  +      jjStopStringLiteralDfa_2(1, active0);
         return 2;
      }
      switch(curChar)
      {
  -      case 99:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x8000000000L);
  -      case 100:
  -         if ((active0 & 0x4000000000L) != 0L)
  -            return jjStartNfaWithStates_0(2, 38, 11);
  -         break;
         case 108:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x200000L);
  -      case 111:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);
  -      case 115:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x60000000000L);
  -      case 116:
  -         if ((active0 & 0x80000000000L) != 0L)
  -            return jjStartNfaWithStates_0(2, 43, 11);
  -         break;
  +         return jjMoveStringLiteralDfa3_2(active0, 0x400000L);
         case 117:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x100000L);
  +         return jjMoveStringLiteralDfa3_2(active0, 0x200000L);
         default :
            break;
      }
  -   return jjStartNfa_0(1, active0);
  +   return jjStartNfa_2(1, active0);
   }
  -private final int jjMoveStringLiteralDfa3_0(long old0, long active0)
  +private final int jjMoveStringLiteralDfa3_2(long old0, long active0)
   {
      if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(1, old0); 
  +      return jjStartNfa_2(1, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(2, active0);
  +      jjStopStringLiteralDfa_2(2, active0);
         return 3;
      }
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x100000L) != 0L)
  -            return jjStartNfaWithStates_0(3, 20, 11);
  -         else if ((active0 & 0x40000000000L) != 0L)
  -         {
  -            jjmatchedKind = 42;
  -            jjmatchedPos = 3;
  -         }
  -         return jjMoveStringLiteralDfa4_0(active0, 0x20000000000L);
  -      case 108:
  -         return jjMoveStringLiteralDfa4_0(active0, 0x8000000000L);
  -      case 112:
  -         if ((active0 & 0x100000000000L) != 0L)
  -            return jjStartNfaWithStates_0(3, 44, 11);
  +         if ((active0 & 0x200000L) != 0L)
  +            return jjStartNfaWithStates_2(3, 21, 8);
            break;
         case 115:
  -         return jjMoveStringLiteralDfa4_0(active0, 0x200000L);
  +         return jjMoveStringLiteralDfa4_2(active0, 0x400000L);
         default :
            break;
      }
  -   return jjStartNfa_0(2, active0);
  +   return jjStartNfa_2(2, active0);
   }
  -private final int jjMoveStringLiteralDfa4_0(long old0, long active0)
  +private final int jjMoveStringLiteralDfa4_2(long old0, long active0)
   {
      if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(2, old0); 
  +      return jjStartNfa_2(2, old0); 
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(3, active0);
  +      jjStopStringLiteralDfa_2(3, active0);
         return 4;
      }
      switch(curChar)
      {
  -      case 101:
  -         if ((active0 & 0x200000L) != 0L)
  -            return jjStartNfaWithStates_0(4, 21, 11);
  -         break;
  -      case 105:
  -         return jjMoveStringLiteralDfa5_0(active0, 0x20000000000L);
  -      case 117:
  -         return jjMoveStringLiteralDfa5_0(active0, 0x8000000000L);
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_0(3, active0);
  -}
  -private final int jjMoveStringLiteralDfa5_0(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(3, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(4, active0);
  -      return 5;
  -   }
  -   switch(curChar)
  -   {
  -      case 100:
  -         return jjMoveStringLiteralDfa6_0(active0, 0x8000000000L);
  -      case 102:
  -         if ((active0 & 0x20000000000L) != 0L)
  -            return jjStartNfaWithStates_0(5, 41, 11);
  -         break;
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_0(4, active0);
  -}
  -private final int jjMoveStringLiteralDfa6_0(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_0(4, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_0(5, active0);
  -      return 6;
  -   }
  -   switch(curChar)
  -   {
         case 101:
  -         if ((active0 & 0x8000000000L) != 0L)
  -            return jjStartNfaWithStates_0(6, 39, 11);
  +         if ((active0 & 0x400000L) != 0L)
  +            return jjStartNfaWithStates_2(4, 22, 8);
            break;
         default :
            break;
      }
  -   return jjStartNfa_0(5, active0);
  +   return jjStartNfa_2(3, active0);
   }
  -private final int jjMoveNfa_0(int startState, int curPos)
  +private final int jjMoveNfa_2(int startState, int curPos)
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 12;
  +   jjnewStateCnt = 9;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -1669,31 +1796,18 @@
               switch(jjstateSet[--i])
               {
                  case 3:
  -                  if ((0x3ff000000000000L & l) != 0L)
  -                  {
  -                     if (kind > 46)
  -                        kind = 46;
  -                     jjCheckNAdd(10);
  -                  }
  -                  else if ((0x2400L & l) != 0L)
  -                  {
  -                     if (kind > 22)
  -                        kind = 22;
  -                  }
  -                  else if (curChar == 34)
  +                  if (curChar == 34)
                        jjCheckNAddTwoStates(5, 6);
                     else if (curChar == 35)
                        jjstateSet[jjnewStateCnt++] = 2;
  -                  if (curChar == 13)
  -                     jjstateSet[jjnewStateCnt++] = 8;
                     break;
                  case 0:
                     if (curChar == 42)
                        jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  case 2:
                     if (curChar == 42)
  @@ -1708,27 +1822,15 @@
                        jjCheckNAddTwoStates(5, 6);
                     break;
                  case 6:
  -                  if (curChar == 34 && kind > 19)
  -                     kind = 19;
  -                  break;
  -               case 7:
  -                  if ((0x2400L & l) != 0L && kind > 22)
  -                     kind = 22;
  +                  if (curChar == 34 && kind > 20)
  +                     kind = 20;
                     break;
                  case 8:
  -                  if (curChar == 10 && kind > 22)
  -                     kind = 22;
  -                  break;
  -               case 9:
  -                  if (curChar == 13)
  -                     jjstateSet[jjnewStateCnt++] = 8;
  -                  break;
  -               case 10:
  -                  if ((0x3ff000000000000L & l) == 0L)
  +                  if ((0x3ff200000000000L & l) == 0L)
                        break;
  -                  if (kind > 46)
  -                     kind = 46;
  -                  jjCheckNAdd(10);
  +                  if (kind > 53)
  +                     kind = 53;
  +                  jjstateSet[jjnewStateCnt++] = 8;
                     break;
                  default : break;
               }
  @@ -1742,20 +1844,26 @@
               switch(jjstateSet[--i])
               {
                  case 3:
  -               case 11:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
  -                  if (kind > 48)
  -                     kind = 48;
  -                  jjCheckNAdd(11);
  +                  if (kind > 53)
  +                     kind = 53;
  +                  jjCheckNAdd(8);
                     break;
                  case 1:
  -                  if (kind > 10)
  -                     kind = 10;
  +                  if (kind > 11)
  +                     kind = 11;
                     break;
                  case 5:
                     jjAddStates(0, 1);
                     break;
  +               case 8:
  +                  if ((0x7fffffe87fffffeL & l) == 0L)
  +                     break;
  +                  if (kind > 53)
  +                     kind = 53;
  +                  jjCheckNAdd(8);
  +                  break;
                  default : break;
               }
            } while(i != startsAt);
  @@ -1769,8 +1877,8 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  case 5:
                     if ((jjbitVec0[i2] & l2) != 0L)
  @@ -1787,80 +1895,81 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 12 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 9 - (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_7(int pos, long active0)
   {
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x1a00L) != 0L)
  +         if ((active0 & 0x3400L) != 0L)
               return 2;
            return -1;
         default :
            return -1;
      }
   }
  -private final int jjStartNfa_6(int pos, long active0)
  +private final int jjStartNfa_7(int pos, long active0)
   {
  -   return jjMoveNfa_6(jjStopStringLiteralDfa_6(pos, active0), pos + 1);
  +   return jjMoveNfa_7(jjStopStringLiteralDfa_7(pos, active0), pos + 1);
   }
  -private final int jjStartNfaWithStates_6(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_6(state, pos + 1);
  +   return jjMoveNfa_7(state, pos + 1);
   }
  -private final int jjMoveStringLiteralDfa0_6()
  +private final int jjMoveStringLiteralDfa0_7()
   {
      switch(curChar)
      {
         case 35:
  -         jjmatchedKind = 12;
  -         return jjMoveStringLiteralDfa1_6(0xa00L);
  +         jjmatchedKind = 13;
  +         return jjMoveStringLiteralDfa1_7(0x1400L);
         case 36:
  -         return jjStopAtPos(0, 8);
  -      case 42:
  -         return jjMoveStringLiteralDfa1_6(0x4000L);
  +         jjmatchedKind = 8;
  +         return jjMoveStringLiteralDfa1_7(0x200L);
         default :
  -         return jjMoveNfa_6(3, 0);
  +         return jjMoveNfa_7(3, 0);
      }
   }
  -private final int jjMoveStringLiteralDfa1_6(long active0)
  +private final int jjMoveStringLiteralDfa1_7(long active0)
   {
      try { curChar = input_stream.readChar(); }
      catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_6(0, active0);
  +      jjStopStringLiteralDfa_7(0, active0);
         return 1;
      }
      switch(curChar)
      {
  -      case 35:
  +      case 33:
            if ((active0 & 0x200L) != 0L)
               return jjStopAtPos(1, 9);
  -         else if ((active0 & 0x4000L) != 0L)
  -            return jjStopAtPos(1, 14);
            break;
  +      case 35:
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStopAtPos(1, 10);
  +         break;
         case 42:
  -         if ((active0 & 0x800L) != 0L)
  -            return jjStartNfaWithStates_6(1, 11, 0);
  +         if ((active0 & 0x1000L) != 0L)
  +            return jjStartNfaWithStates_7(1, 12, 0);
            break;
         default :
            break;
      }
  -   return jjStartNfa_6(0, active0);
  +   return jjStartNfa_7(0, active0);
   }
  -private final int jjMoveNfa_6(int startState, int curPos)
  +private final int jjMoveNfa_7(int startState, int curPos)
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 4;
  +   jjnewStateCnt = 7;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -1875,21 +1984,40 @@
            {
               switch(jjstateSet[--i])
               {
  +               case 3:
  +                  if ((0x2400L & l) != 0L)
  +                  {
  +                     if (kind > 14)
  +                        kind = 14;
  +                  }
  +                  else if (curChar == 35)
  +                     jjstateSet[jjnewStateCnt++] = 2;
  +                  if (curChar == 13)
  +                     jjstateSet[jjnewStateCnt++] = 5;
  +                  break;
                  case 0:
                     if (curChar == 42)
                        jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  case 2:
                     if (curChar == 42)
                        jjstateSet[jjnewStateCnt++] = 0;
                     break;
  -               case 3:
  -                  if (curChar == 35)
  -                     jjstateSet[jjnewStateCnt++] = 2;
  +               case 4:
  +                  if ((0x2400L & l) != 0L && kind > 14)
  +                     kind = 14;
  +                  break;
  +               case 5:
  +                  if (curChar == 10 && kind > 14)
  +                     kind = 14;
  +                  break;
  +               case 6:
  +                  if (curChar == 13)
  +                     jjstateSet[jjnewStateCnt++] = 5;
                     break;
                  default : break;
               }
  @@ -1903,7 +2031,7 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  kind = 10;
  +                  kind = 11;
                     break;
                  default : break;
               }
  @@ -1918,8 +2046,8 @@
               switch(jjstateSet[--i])
               {
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  default : break;
               }
  @@ -1932,187 +2060,81 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         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 & 0x300000L) != 0L)
  -         {
  -            jjmatchedKind = 52;
  -            return 8;
  -         }
  -         if ((active0 & 0x1a00L) != 0L)
  -            return 2;
  -         return -1;
  -      case 1:
  -         if ((active0 & 0x800L) != 0L)
  -            return 0;
  -         if ((active0 & 0x300000L) != 0L)
  -         {
  -            jjmatchedKind = 52;
  -            jjmatchedPos = 1;
  -            return 8;
  -         }
  -         return -1;
  -      case 2:
  -         if ((active0 & 0x300000L) != 0L)
  -         {
  -            jjmatchedKind = 52;
  -            jjmatchedPos = 2;
  -            return 8;
  -         }
  -         return -1;
  -      case 3:
  -         if ((active0 & 0x200000L) != 0L)
  -         {
  -            jjmatchedKind = 52;
  -            jjmatchedPos = 3;
  -            return 8;
  -         }
  -         if ((active0 & 0x100000L) != 0L)
  -            return 8;
  +         if ((active0 & 0x3400L) != 0L)
  +            return 5;
            return -1;
         default :
            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 33:
  -         return jjStopAtPos(0, 53);
         case 35:
  -         jjmatchedKind = 12;
  -         return jjMoveStringLiteralDfa1_4(0xa00L);
  +         jjmatchedKind = 13;
  +         return jjMoveStringLiteralDfa1_3(0x1400L);
         case 36:
  -         return jjStopAtPos(0, 8);
  -      case 46:
  -         return jjStopAtPos(0, 54);
  -      case 102:
  -         return jjMoveStringLiteralDfa1_4(0x200000L);
  -      case 116:
  -         return jjMoveStringLiteralDfa1_4(0x100000L);
  -      case 123:
  -         return jjStopAtPos(0, 55);
  -      case 125:
  -         return jjStopAtPos(0, 56);
  +         jjmatchedKind = 8;
  +         return jjMoveStringLiteralDfa1_3(0x200L);
         default :
  -         return jjMoveNfa_4(3, 0);
  +         return jjMoveNfa_3(0, 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 35:
  +      case 33:
            if ((active0 & 0x200L) != 0L)
               return jjStopAtPos(1, 9);
  -         break;
  -      case 42:
  -         if ((active0 & 0x800L) != 0L)
  -            return jjStartNfaWithStates_4(1, 11, 0);
  -         break;
  -      case 97:
  -         return jjMoveStringLiteralDfa2_4(active0, 0x200000L);
  -      case 114:
  -         return jjMoveStringLiteralDfa2_4(active0, 0x100000L);
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_4(0, active0);
  -}
  -private final int jjMoveStringLiteralDfa2_4(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_4(0, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_4(1, active0);
  -      return 2;
  -   }
  -   switch(curChar)
  -   {
  -      case 108:
  -         return jjMoveStringLiteralDfa3_4(active0, 0x200000L);
  -      case 117:
  -         return jjMoveStringLiteralDfa3_4(active0, 0x100000L);
  -      default :
  -         break;
  -   }
  -   return jjStartNfa_4(1, active0);
  -}
  -private final int jjMoveStringLiteralDfa3_4(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_4(1, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_4(2, active0);
  -      return 3;
  -   }
  -   switch(curChar)
  -   {
  -      case 101:
  -         if ((active0 & 0x100000L) != 0L)
  -            return jjStartNfaWithStates_4(3, 20, 8);
            break;
  -      case 115:
  -         return jjMoveStringLiteralDfa4_4(active0, 0x200000L);
  -      default :
  +      case 35:
  +         if ((active0 & 0x400L) != 0L)
  +            return jjStopAtPos(1, 10);
            break;
  -   }
  -   return jjStartNfa_4(2, active0);
  -}
  -private final int jjMoveStringLiteralDfa4_4(long old0, long active0)
  -{
  -   if (((active0 &= old0)) == 0L)
  -      return jjStartNfa_4(2, old0); 
  -   try { curChar = input_stream.readChar(); }
  -   catch(java.io.IOException e) {
  -      jjStopStringLiteralDfa_4(3, active0);
  -      return 4;
  -   }
  -   switch(curChar)
  -   {
  -      case 101:
  -         if ((active0 & 0x200000L) != 0L)
  -            return jjStartNfaWithStates_4(4, 21, 8);
  +      case 42:
  +         if ((active0 & 0x1000L) != 0L)
  +            return jjStartNfaWithStates_3(1, 12, 3);
            break;
         default :
            break;
      }
  -   return jjStartNfa_4(3, active0);
  +   return jjStartNfa_3(0, active0);
   }
  -private final int jjMoveNfa_4(int startState, int curPos)
  +private final int jjMoveNfa_3(int startState, int curPos)
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 9;
  +   jjnewStateCnt = 7;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -2127,42 +2149,42 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 3:
  -                  if (curChar == 34)
  -                     jjCheckNAddTwoStates(5, 6);
  -                  else if (curChar == 35)
  -                     jjstateSet[jjnewStateCnt++] = 2;
  -                  break;
                  case 0:
  -                  if (curChar == 42)
  -                     jjstateSet[jjnewStateCnt++] = 1;
  +                  if ((0xffffffe7ffffffffL & l) != 0L)
  +                  {
  +                     if (kind > 7)
  +                        kind = 7;
  +                     jjCheckNAdd(2);
  +                  }
  +                  else if (curChar == 35)
  +                     jjstateSet[jjnewStateCnt++] = 5;
                     break;
                  case 1:
  -                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
  -                     kind = 10;
  +                  if (kind > 6)
  +                     kind = 6;
                     break;
                  case 2:
  +                  if ((0xffffffe7ffffffffL & l) == 0L)
  +                     break;
  +                  if (kind > 7)
  +                     kind = 7;
  +                  jjCheckNAdd(2);
  +                  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 > 11)
  +                     kind = 11;
                     break;
                  case 5:
  -                  if ((0xfffffffbffffdbffL & l) != 0L)
  -                     jjCheckNAddTwoStates(5, 6);
  +                  if (curChar == 42)
  +                     jjstateSet[jjnewStateCnt++] = 3;
                     break;
                  case 6:
  -                  if (curChar == 34 && kind > 19)
  -                     kind = 19;
  -                  break;
  -               case 8:
  -                  if ((0x3ff200000000000L & l) == 0L)
  -                     break;
  -                  if (kind > 52)
  -                     kind = 52;
  -                  jjstateSet[jjnewStateCnt++] = 8;
  +                  if (curChar == 35)
  +                     jjstateSet[jjnewStateCnt++] = 5;
                     break;
                  default : break;
               }
  @@ -2175,26 +2197,30 @@
            {
               switch(jjstateSet[--i])
               {
  -               case 3:
  -                  if ((0x7fffffe07fffffeL & l) == 0L)
  -                     break;
  -                  if (kind > 52)
  -                     kind = 52;
  -                  jjCheckNAdd(8);
  +               case 0:
  +                  if ((0xffffffffefffffffL & l) != 0L)
  +                  {
  +                     if (kind > 7)
  +                        kind = 7;
  +                     jjCheckNAdd(2);
  +                  }
  +                  else if (curChar == 92)
  +                     jjstateSet[jjnewStateCnt++] = 1;
                     break;
                  case 1:
  -                  if (kind > 10)
  -                     kind = 10;
  -                  break;
  -               case 5:
  -                  jjAddStates(0, 1);
  +                  if (kind > 6)
  +                     kind = 6;
                     break;
  -               case 8:
  -                  if ((0x7fffffe87fffffeL & l) == 0L)
  +               case 2:
  +                  if ((0xffffffffefffffffL & l) == 0L)
                        break;
  -                  if (kind > 52)
  -                     kind = 52;
  -                  jjCheckNAdd(8);
  +                  if (kind > 7)
  +                     kind = 7;
  +                  jjCheckNAdd(2);
  +                  break;
  +               case 4:
  +                  if (kind > 11)
  +                     kind = 11;
                     break;
                  default : break;
               }
  @@ -2208,13 +2234,21 @@
            {
               switch(jjstateSet[--i])
               {
  +               case 0:
  +               case 2:
  +                  if ((jjbitVec0[i2] & l2) == 0L)
  +                     break;
  +                  if (kind > 7)
  +                     kind = 7;
  +                  jjCheckNAdd(2);
  +                  break;
                  case 1:
  -                  if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
  -                     kind = 10;
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 6)
  +                     kind = 6;
                     break;
  -               case 5:
  -                  if ((jjbitVec0[i2] & l2) != 0L)
  -                     jjAddStates(0, 1);
  +               case 4:
  +                  if ((jjbitVec0[i2] & l2) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  default : break;
               }
  @@ -2227,7 +2261,7 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 9 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
  @@ -2254,20 +2288,20 @@
   };
   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, 3, -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 = {
  -   0x1f15fffffb8e0ffL, 
  +   0x1e2bfffff71c0ffL, 
   };
   static final long[] jjtoSkip = {
  -   0x200000000460000L, 
  +   0x2000000008c0000L, 
   };
   static final long[] jjtoSpecial = {
  -   0x200000000400000L, 
  +   0x200000000800000L, 
   };
   static final long[] jjtoMore = {
  -   0x11f00L, 
  +   0x23f00L, 
   };
   private ASCII_CharStream input_stream;
   private final int[] jjrounds = new int[12];
  @@ -2414,27 +2448,27 @@
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_5();
  -         if (jjmatchedPos == 0 && jjmatchedKind > 16)
  +         if (jjmatchedPos == 0 && jjmatchedKind > 17)
            {
  -            jjmatchedKind = 16;
  +            jjmatchedKind = 17;
            }
            break;
          case 6:
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_6();
  -         if (jjmatchedPos == 0 && jjmatchedKind > 16)
  +         if (jjmatchedPos == 0 && jjmatchedKind > 17)
            {
  -            jjmatchedKind = 16;
  +            jjmatchedKind = 17;
            }
            break;
          case 7:
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_7();
  -         if (jjmatchedPos == 0 && jjmatchedKind > 16)
  +         if (jjmatchedPos == 0 && jjmatchedKind > 17)
            {
  -            jjmatchedKind = 16;
  +            jjmatchedKind = 17;
            }
            break;
        }
  @@ -2511,7 +2545,7 @@
   {
      switch(jjmatchedKind)
      {
  -      case 22 :
  +      case 23 :
            if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -2592,11 +2626,28 @@
            else
               image.append(new String(input_stream.GetSuffix(jjimageLen)));
            jjimageLen = 0;
  +        if (! inComment)
  +        {
  +            inReference = true;
  +
  +           if ( bDebugPrint_ )
  +                System.out.print( "$!  : going to " + REFERENCE );
  +
  +            stateStackPush();
  +            SwitchTo(REFERENCE);
  +        }
  +         break;
  +      case 10 :
  +         if (image == null)
  +              image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
  +         else
  +            image.append(new String(input_stream.GetSuffix(jjimageLen)));
  +         jjimageLen = 0;
           inComment = true;
           stateStackPush();
           SwitchTo(IN_SINGLE_LINE_COMMENT);
            break;
  -      case 10 :
  +      case 11 :
            if (image == null)
                 image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
            else
  @@ -2607,7 +2658,7 @@
           stateStackPush();
           SwitchTo( IN_FORMAL_COMMENT);
            break;
  -      case 11 :
  +      case 12 :
            if (image == null)
                 image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
            else
  @@ -2617,7 +2668,7 @@
           stateStackPush();
           SwitchTo( IN_MULTI_LINE_COMMENT );
            break;
  -      case 12 :
  +      case 13 :
            if (image == null)
                 image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
            else
  @@ -2710,7 +2761,7 @@
               }
           }
            break;
  -      case 13 :
  +      case 14 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -2718,7 +2769,7 @@
        inComment = false;
        stateStackPop();
            break;
  -      case 14 :
  +      case 15 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -2726,7 +2777,7 @@
       inComment = false;
       stateStackPop();
            break;
  -      case 15 :
  +      case 16 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -2734,7 +2785,7 @@
       inComment = false;
       stateStackPop();
            break;
  -      case 19 :
  +      case 20 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -2749,7 +2800,7 @@
           if (lparen == 0)
               SwitchTo(DEFAULT);
            break;
  -      case 38 :
  +      case 39 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -2757,21 +2808,21 @@
           inDirective = false;
           stateStackPop();
            break;
  -      case 39 :
  +      case 40 :
           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))));
         incMode = true;
            break;
  -      case 43 :
  +      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))));
         inSet = true;
            break;
  -      case 44 :
  +      case 45 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -2779,7 +2830,7 @@
           matchedToken.kind = EOF;
           fileDepth = 0;
            break;
  -      case 46 :
  +      case 47 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  
  
  

Reply via email to