geirm       00/11/19 15:28:50

  Modified:    src/java/org/apache/velocity/runtime/parser Parser.java
                        Parser.jj ParserConstants.java
                        ParserTokenManager.java
  Log:
  Usual Parser.jjt followers.
  
  Revision  Changes    Path
  1.32      +637 -529  
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.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- Parser.java       2000/11/16 20:25:04     1.31
  +++ Parser.java       2000/11/19 23:28:48     1.32
  @@ -7,7 +7,7 @@
   import org.apache.velocity.runtime.Runtime;
   import org.apache.velocity.runtime.parser.node.*;
   import org.apache.velocity.runtime.directive.Directive;
  -//import org.apache.velocity.runtime.directive.Macro;
  +import org.apache.velocity.runtime.directive.Macro;
   import org.apache.velocity.util.StringUtils;
   
   /**
  @@ -21,7 +21,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.31 2000/11/16 20:25:04 geirm Exp $ 
  + * @version $Id: Parser.java,v 1.32 2000/11/19 23:28:48 geirm Exp $ 
   */
   public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants 
{/*@bgen(jjtree)*/
     protected JJTParserState jjtree = new JJTParserState();/**
  @@ -126,6 +126,10 @@
           {
              bRecognizedDirective = true;
           }
  +        else if (Runtime.isVelocimacro( strDirective.substring(1)))
  +        {
  +            bRecognizedDirective = true;
  +        }
           else
           {
               /* order for speed? */
  @@ -342,11 +346,13 @@
           }
   
           /*
  -         * if that failed, lets lookahead to see if we matched a PD
  +         * if that failed, lets lookahead to see if we matched a PD or a VM
            */
   
           if ( isDirective( t.next.image.substring(1)))
               bControl = true;
  +        else if ( Runtime.isVelocimacro( t.next.image.substring(1)))
  +            bControl = true;
   
           t.image = "";
   
  @@ -456,6 +462,8 @@
   
   /**
    *   Supports the arguments for the Pluggable Directives
  + *   We add whitespace in here as a token so the VMs can 
  + *   easily reconstruct a macro body from the token stream
    *   @see Directive()
    */
     final public void DirectiveArg() throws ParseException {
  @@ -476,6 +484,9 @@
       case LBRACKET:
         ObjectArray();
         break;
  +    case WHITESPACE:
  +      jj_consume_token(WHITESPACE);
  +      break;
       default:
         jj_la1[3] = jj_gen;
         jj_consume_token(-1);
  @@ -504,16 +515,16 @@
   
           d = (Directive) directives.get( strDirectiveName );
   
  -      //  /*
  -      //   *  Velocimacro support : if the directive is macro directive
  -      //   *   then set the flag so after the block parsing, we add the VM
  -      //   *   right then. (So available if used w/in the current template )
  -      //   */
  -
  -      //  if ( strDirectiveName.equals("macro"))  
  -      //  {
  -      //       bDoItNow = true;
  -      //  }
  +        /*
  +         *  Velocimacro support : if the directive is macro directive
  +         *   then set the flag so after the block parsing, we add the VM
  +         *   right then. (So available if used w/in the current template )
  +         */
  +
  +        if ( strDirectiveName.equals("macro"))
  +        {
  +             bDoItNow = true;
  +        }
   
           /*
            *  set the directive name from here.  No reason for the thing to know 
about parser tokens
  @@ -527,7 +538,7 @@
                *  if null, then not a real directive, but maybe a Velocimacro
                 */
   
  -          //  d  =  (Directive) Runtime.getVelocimacro( strDirectiveName );
  +            d  =  (Directive) Runtime.getVelocimacro( strDirectiveName );
   
               if (d == null)
               {
  @@ -542,12 +553,21 @@
            */
   
           token_source.SwitchTo(DIRECTIVE);
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case WHITESPACE:
  +        jj_consume_token(WHITESPACE);
  +        break;
  +      default:
  +        jj_la1[4] = jj_gen;
  +        ;
  +      }
         jj_consume_token(LPAREN);
         label_3:
         while (true) {
           DirectiveArg();
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case LBRACKET:
  +        case WHITESPACE:
           case STRING_LITERAL:
           case NUMBER_LITERAL:
           case WORD:
  @@ -556,7 +576,7 @@
             ;
             break;
           default:
  -          jj_la1[4] = jj_gen;
  +          jj_la1[5] = jj_gen;
             break label_3;
           }
         }
  @@ -592,7 +612,7 @@
               ;
               break;
             default:
  -            jj_la1[5] = jj_gen;
  +            jj_la1[6] = jj_gen;
               break label_4;
             }
           }
  @@ -628,8 +648,8 @@
   
           if (bDoItNow)
           {
  -        //    Macro m = new Macro();
  -        //    m.processAndRegister( jjtThis );
  +            Macro m = new Macro();
  +            m.processAndRegister( jjtn000 );
           }
   
           /*
  @@ -668,6 +688,7 @@
         jj_consume_token(LBRACKET);
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case LBRACKET:
  +      case WHITESPACE:
         case STRING_LITERAL:
         case TRUE:
         case FALSE:
  @@ -682,7 +703,7 @@
               ;
               break;
             default:
  -            jj_la1[6] = jj_gen;
  +            jj_la1[7] = jj_gen;
               break label_5;
             }
             jj_consume_token(COMMA);
  @@ -690,7 +711,7 @@
           }
           break;
         default:
  -        jj_la1[7] = jj_gen;
  +        jj_la1[8] = jj_gen;
           ;
         }
         jj_consume_token(RBRACKET);
  @@ -722,6 +743,14 @@
    */
     final public void Parameter() throws ParseException {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +    case WHITESPACE:
  +      jj_consume_token(WHITESPACE);
  +      break;
  +    default:
  +      jj_la1[9] = jj_gen;
  +      ;
  +    }
  +    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case STRING_LITERAL:
         StringLiteral();
         break;
  @@ -742,10 +771,18 @@
         NumberLiteral();
         break;
       default:
  -      jj_la1[8] = jj_gen;
  +      jj_la1[10] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  +    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +    case WHITESPACE:
  +      jj_consume_token(WHITESPACE);
  +      break;
  +    default:
  +      jj_la1[11] = jj_gen;
  +      ;
  +    }
     }
   
   /**
  @@ -763,6 +800,7 @@
         jj_consume_token(LPAREN);
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case LBRACKET:
  +      case WHITESPACE:
         case STRING_LITERAL:
         case TRUE:
         case FALSE:
  @@ -777,7 +815,7 @@
               ;
               break;
             default:
  -            jj_la1[9] = jj_gen;
  +            jj_la1[12] = jj_gen;
               break label_6;
             }
             jj_consume_token(COMMA);
  @@ -785,7 +823,7 @@
           }
           break;
         default:
  -        jj_la1[10] = jj_gen;
  +        jj_la1[13] = jj_gen;
           ;
         }
         jj_consume_token(REFMOD2_RPAREN);
  @@ -821,7 +859,7 @@
           jj_consume_token(LCURLY);
           break;
         default:
  -        jj_la1[11] = jj_gen;
  +        jj_la1[14] = jj_gen;
           ;
         }
         jj_consume_token(IDENTIFIER);
  @@ -830,7 +868,7 @@
           jj_consume_token(RCURLY);
           break;
         default:
  -        jj_la1[12] = jj_gen;
  +        jj_la1[15] = jj_gen;
           ;
         }
         label_7:
  @@ -849,7 +887,7 @@
               Identifier();
               break;
             default:
  -            jj_la1[13] = jj_gen;
  +            jj_la1[16] = jj_gen;
               jj_consume_token(-1);
               throw new ParseException();
             }
  @@ -859,7 +897,7 @@
             jj_consume_token(RCURLY);
             break;
           default:
  -          jj_la1[14] = jj_gen;
  +          jj_la1[17] = jj_gen;
             ;
           }
         }
  @@ -946,7 +984,7 @@
           jj_consume_token(ESCAPE);
           break;
         default:
  -        jj_la1[15] = jj_gen;
  +        jj_la1[18] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -969,6 +1007,14 @@
     jjtree.openNodeScope(jjtn000);
       try {
         jj_consume_token(IF_DIRECTIVE);
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case WHITESPACE:
  +        jj_consume_token(WHITESPACE);
  +        break;
  +      default:
  +        jj_la1[19] = jj_gen;
  +        ;
  +      }
         jj_consume_token(LPAREN);
         Expression();
         jj_consume_token(RPAREN);
  @@ -1001,7 +1047,7 @@
               ;
               break;
             default:
  -            jj_la1[16] = jj_gen;
  +            jj_la1[20] = jj_gen;
               break label_8;
             }
           }
  @@ -1034,13 +1080,13 @@
               ;
               break;
             default:
  -            jj_la1[17] = jj_gen;
  +            jj_la1[21] = jj_gen;
               break label_9;
             }
           }
           break;
         default:
  -        jj_la1[18] = jj_gen;
  +        jj_la1[22] = jj_gen;
           ;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1048,7 +1094,7 @@
           ElseStatement();
           break;
         default:
  -        jj_la1[19] = jj_gen;
  +        jj_la1[23] = jj_gen;
           ;
         }
         jj_consume_token(END);
  @@ -1109,7 +1155,7 @@
               ;
               break;
             default:
  -            jj_la1[20] = jj_gen;
  +            jj_la1[24] = jj_gen;
               break label_10;
             }
           }
  @@ -1160,6 +1206,14 @@
     jjtree.openNodeScope(jjtn000);
       try {
         jj_consume_token(ELSEIF_DIRECTIVE);
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case WHITESPACE:
  +        jj_consume_token(WHITESPACE);
  +        break;
  +      default:
  +        jj_la1[25] = jj_gen;
  +        ;
  +      }
         jj_consume_token(LPAREN);
         Expression();
         jj_consume_token(RPAREN);
  @@ -1192,7 +1246,7 @@
               ;
               break;
             default:
  -            jj_la1[21] = jj_gen;
  +            jj_la1[26] = jj_gen;
               break label_11;
             }
           }
  @@ -1249,7 +1303,7 @@
           jj_consume_token(NEWLINE);
           break;
         default:
  -        jj_la1[22] = jj_gen;
  +        jj_la1[27] = jj_gen;
           ;
         }
       } catch (Throwable jjte000) {
  @@ -1301,6 +1355,7 @@
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case LBRACKET:
           case LPAREN:
  +        case WHITESPACE:
           case STRING_LITERAL:
           case TRUE:
           case FALSE:
  @@ -1311,7 +1366,7 @@
             ConditionalOrExpression();
             break;
           default:
  -          jj_la1[23] = jj_gen;
  +          jj_la1[28] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
  @@ -1376,33 +1431,33 @@
           ;
           break;
         default:
  -        jj_la1[24] = jj_gen;
  +        jj_la1[29] = jj_gen;
           break label_12;
         }
         jj_consume_token(LOGICAL_OR);
  -                   ASTOrNode jjtn001 = new ASTOrNode(this, JJTORNODE);
  -                   boolean jjtc001 = true;
  -                   jjtree.openNodeScope(jjtn001);
  +                     ASTOrNode jjtn001 = new ASTOrNode(this, JJTORNODE);
  +                     boolean jjtc001 = true;
  +                     jjtree.openNodeScope(jjtn001);
         try {
           ConditionalAndExpression();
         } catch (Throwable jjte001) {
  -                   if (jjtc001) {
  -                     jjtree.clearNodeScope(jjtn001);
  -                     jjtc001 = false;
  -                   } else {
  -                     jjtree.popNode();
  -                   }
  -                   if (jjte001 instanceof RuntimeException) {
  -                     {if (true) throw (RuntimeException)jjte001;}
  -                   }
  -                   if (jjte001 instanceof ParseException) {
  -                     {if (true) throw (ParseException)jjte001;}
  -                   }
  -                   {if (true) throw (Error)jjte001;}
  +                     if (jjtc001) {
  +                       jjtree.clearNodeScope(jjtn001);
  +                       jjtc001 = false;
  +                     } else {
  +                       jjtree.popNode();
  +                     }
  +                     if (jjte001 instanceof RuntimeException) {
  +                       {if (true) throw (RuntimeException)jjte001;}
  +                     }
  +                     if (jjte001 instanceof ParseException) {
  +                       {if (true) throw (ParseException)jjte001;}
  +                     }
  +                     {if (true) throw (Error)jjte001;}
         } finally {
  -                   if (jjtc001) {
  -                     jjtree.closeNodeScope(jjtn001,  2);
  -                   }
  +                     if (jjtc001) {
  +                       jjtree.closeNodeScope(jjtn001,  2);
  +                     }
         }
       }
     }
  @@ -1416,33 +1471,33 @@
           ;
           break;
         default:
  -        jj_la1[25] = jj_gen;
  +        jj_la1[30] = jj_gen;
           break label_13;
         }
         jj_consume_token(LOGICAL_AND);
  -                     ASTAndNode jjtn001 = new ASTAndNode(this, JJTANDNODE);
  -                     boolean jjtc001 = true;
  -                     jjtree.openNodeScope(jjtn001);
  +                    ASTAndNode jjtn001 = new ASTAndNode(this, JJTANDNODE);
  +                    boolean jjtc001 = true;
  +                    jjtree.openNodeScope(jjtn001);
         try {
           EqualityExpression();
         } catch (Throwable jjte001) {
  -                     if (jjtc001) {
  -                       jjtree.clearNodeScope(jjtn001);
  -                       jjtc001 = false;
  -                     } else {
  -                       jjtree.popNode();
  -                     }
  -                     if (jjte001 instanceof RuntimeException) {
  -                       {if (true) throw (RuntimeException)jjte001;}
  -                     }
  -                     if (jjte001 instanceof ParseException) {
  -                       {if (true) throw (ParseException)jjte001;}
  -                     }
  -                     {if (true) throw (Error)jjte001;}
  +                    if (jjtc001) {
  +                      jjtree.clearNodeScope(jjtn001);
  +                      jjtc001 = false;
  +                    } else {
  +                      jjtree.popNode();
  +                    }
  +                    if (jjte001 instanceof RuntimeException) {
  +                      {if (true) throw (RuntimeException)jjte001;}
  +                    }
  +                    if (jjte001 instanceof ParseException) {
  +                      {if (true) throw (ParseException)jjte001;}
  +                    }
  +                    {if (true) throw (Error)jjte001;}
         } finally {
  -                     if (jjtc001) {
  -                       jjtree.closeNodeScope(jjtn001,  2);
  -                     }
  +                    if (jjtc001) {
  +                      jjtree.closeNodeScope(jjtn001,  2);
  +                    }
         }
       }
     }
  @@ -1457,66 +1512,66 @@
           ;
           break;
         default:
  -        jj_la1[26] = jj_gen;
  +        jj_la1[31] = jj_gen;
           break label_14;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case LOGICAL_EQUALS:
           jj_consume_token(LOGICAL_EQUALS);
  -                             ASTEQNode jjtn001 = new ASTEQNode(this, JJTEQNODE);
  -                             boolean jjtc001 = true;
  -                             jjtree.openNodeScope(jjtn001);
  +                          ASTEQNode jjtn001 = new ASTEQNode(this, JJTEQNODE);
  +                          boolean jjtc001 = true;
  +                          jjtree.openNodeScope(jjtn001);
           try {
             RelationalExpression();
           } catch (Throwable jjte001) {
  -                             if (jjtc001) {
  -                               jjtree.clearNodeScope(jjtn001);
  -                               jjtc001 = false;
  -                             } else {
  -                               jjtree.popNode();
  -                             }
  -                             if (jjte001 instanceof RuntimeException) {
  -                               {if (true) throw (RuntimeException)jjte001;}
  -                             }
  -                             if (jjte001 instanceof ParseException) {
  -                               {if (true) throw (ParseException)jjte001;}
  -                             }
  -                             {if (true) throw (Error)jjte001;}
  +                          if (jjtc001) {
  +                            jjtree.clearNodeScope(jjtn001);
  +                            jjtc001 = false;
  +                          } else {
  +                            jjtree.popNode();
  +                          }
  +                          if (jjte001 instanceof RuntimeException) {
  +                            {if (true) throw (RuntimeException)jjte001;}
  +                          }
  +                          if (jjte001 instanceof ParseException) {
  +                            {if (true) throw (ParseException)jjte001;}
  +                          }
  +                          {if (true) throw (Error)jjte001;}
           } finally {
  -                             if (jjtc001) {
  -                               jjtree.closeNodeScope(jjtn001,  2);
  -                             }
  +                          if (jjtc001) {
  +                            jjtree.closeNodeScope(jjtn001,  2);
  +                          }
           }
           break;
         case LOGICAL_NOT_EQUALS:
           jj_consume_token(LOGICAL_NOT_EQUALS);
  -                                 ASTNENode jjtn002 = new ASTNENode(this, JJTNENODE);
  -                                 boolean jjtc002 = true;
  -                                 jjtree.openNodeScope(jjtn002);
  +                              ASTNENode jjtn002 = new ASTNENode(this, JJTNENODE);
  +                              boolean jjtc002 = true;
  +                              jjtree.openNodeScope(jjtn002);
           try {
             RelationalExpression();
           } catch (Throwable jjte002) {
  -                                 if (jjtc002) {
  -                                   jjtree.clearNodeScope(jjtn002);
  -                                   jjtc002 = false;
  -                                 } else {
  -                                   jjtree.popNode();
  -                                 }
  -                                 if (jjte002 instanceof RuntimeException) {
  -                                   {if (true) throw (RuntimeException)jjte002;}
  -                                 }
  -                                 if (jjte002 instanceof ParseException) {
  -                                   {if (true) throw (ParseException)jjte002;}
  -                                 }
  -                                 {if (true) throw (Error)jjte002;}
  +                              if (jjtc002) {
  +                                jjtree.clearNodeScope(jjtn002);
  +                                jjtc002 = false;
  +                              } else {
  +                                jjtree.popNode();
  +                              }
  +                              if (jjte002 instanceof RuntimeException) {
  +                                {if (true) throw (RuntimeException)jjte002;}
  +                              }
  +                              if (jjte002 instanceof ParseException) {
  +                                {if (true) throw (ParseException)jjte002;}
  +                              }
  +                              {if (true) throw (Error)jjte002;}
           } finally {
  -                                 if (jjtc002) {
  -                                   jjtree.closeNodeScope(jjtn002,  2);
  -                                 }
  +                              if (jjtc002) {
  +                                jjtree.closeNodeScope(jjtn002,  2);
  +                              }
           }
           break;
         default:
  -        jj_la1[27] = jj_gen;
  +        jj_la1[32] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1535,120 +1590,120 @@
           ;
           break;
         default:
  -        jj_la1[28] = jj_gen;
  +        jj_la1[33] = jj_gen;
           break label_15;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case LOGICAL_LT:
           jj_consume_token(LOGICAL_LT);
  -                         ASTLTNode jjtn001 = new ASTLTNode(this, JJTLTNODE);
  -                         boolean jjtc001 = true;
  -                         jjtree.openNodeScope(jjtn001);
  +                        ASTLTNode jjtn001 = new ASTLTNode(this, JJTLTNODE);
  +                        boolean jjtc001 = true;
  +                        jjtree.openNodeScope(jjtn001);
           try {
             AdditiveExpression();
           } catch (Throwable jjte001) {
  -                         if (jjtc001) {
  -                           jjtree.clearNodeScope(jjtn001);
  -                           jjtc001 = false;
  -                         } else {
  -                           jjtree.popNode();
  -                         }
  -                         if (jjte001 instanceof RuntimeException) {
  -                           {if (true) throw (RuntimeException)jjte001;}
  -                         }
  -                         if (jjte001 instanceof ParseException) {
  -                           {if (true) throw (ParseException)jjte001;}
  -                         }
  -                         {if (true) throw (Error)jjte001;}
  +                        if (jjtc001) {
  +                          jjtree.clearNodeScope(jjtn001);
  +                          jjtc001 = false;
  +                        } else {
  +                          jjtree.popNode();
  +                        }
  +                        if (jjte001 instanceof RuntimeException) {
  +                          {if (true) throw (RuntimeException)jjte001;}
  +                        }
  +                        if (jjte001 instanceof ParseException) {
  +                          {if (true) throw (ParseException)jjte001;}
  +                        }
  +                        {if (true) throw (Error)jjte001;}
           } finally {
  -                         if (jjtc001) {
  -                           jjtree.closeNodeScope(jjtn001,  2);
  -                         }
  +                        if (jjtc001) {
  +                          jjtree.closeNodeScope(jjtn001,  2);
  +                        }
           }
           break;
         case LOGICAL_GT:
           jj_consume_token(LOGICAL_GT);
  -                         ASTGTNode jjtn002 = new ASTGTNode(this, JJTGTNODE);
  -                         boolean jjtc002 = true;
  -                         jjtree.openNodeScope(jjtn002);
  +                        ASTGTNode jjtn002 = new ASTGTNode(this, JJTGTNODE);
  +                        boolean jjtc002 = true;
  +                        jjtree.openNodeScope(jjtn002);
           try {
             AdditiveExpression();
           } catch (Throwable jjte002) {
  -                         if (jjtc002) {
  -                           jjtree.clearNodeScope(jjtn002);
  -                           jjtc002 = false;
  -                         } else {
  -                           jjtree.popNode();
  -                         }
  -                         if (jjte002 instanceof RuntimeException) {
  -                           {if (true) throw (RuntimeException)jjte002;}
  -                         }
  -                         if (jjte002 instanceof ParseException) {
  -                           {if (true) throw (ParseException)jjte002;}
  -                         }
  -                         {if (true) throw (Error)jjte002;}
  +                        if (jjtc002) {
  +                          jjtree.clearNodeScope(jjtn002);
  +                          jjtc002 = false;
  +                        } else {
  +                          jjtree.popNode();
  +                        }
  +                        if (jjte002 instanceof RuntimeException) {
  +                          {if (true) throw (RuntimeException)jjte002;}
  +                        }
  +                        if (jjte002 instanceof ParseException) {
  +                          {if (true) throw (ParseException)jjte002;}
  +                        }
  +                        {if (true) throw (Error)jjte002;}
           } finally {
  -                         if (jjtc002) {
  -                           jjtree.closeNodeScope(jjtn002,  2);
  -                         }
  +                        if (jjtc002) {
  +                          jjtree.closeNodeScope(jjtn002,  2);
  +                        }
           }
           break;
         case LOGICAL_LE:
           jj_consume_token(LOGICAL_LE);
  -                         ASTLENode jjtn003 = new ASTLENode(this, JJTLENODE);
  -                         boolean jjtc003 = true;
  -                         jjtree.openNodeScope(jjtn003);
  +                        ASTLENode jjtn003 = new ASTLENode(this, JJTLENODE);
  +                        boolean jjtc003 = true;
  +                        jjtree.openNodeScope(jjtn003);
           try {
             AdditiveExpression();
           } catch (Throwable jjte003) {
  -                         if (jjtc003) {
  -                           jjtree.clearNodeScope(jjtn003);
  -                           jjtc003 = false;
  -                         } else {
  -                           jjtree.popNode();
  -                         }
  -                         if (jjte003 instanceof RuntimeException) {
  -                           {if (true) throw (RuntimeException)jjte003;}
  -                         }
  -                         if (jjte003 instanceof ParseException) {
  -                           {if (true) throw (ParseException)jjte003;}
  -                         }
  -                         {if (true) throw (Error)jjte003;}
  +                        if (jjtc003) {
  +                          jjtree.clearNodeScope(jjtn003);
  +                          jjtc003 = false;
  +                        } else {
  +                          jjtree.popNode();
  +                        }
  +                        if (jjte003 instanceof RuntimeException) {
  +                          {if (true) throw (RuntimeException)jjte003;}
  +                        }
  +                        if (jjte003 instanceof ParseException) {
  +                          {if (true) throw (ParseException)jjte003;}
  +                        }
  +                        {if (true) throw (Error)jjte003;}
           } finally {
  -                         if (jjtc003) {
  -                           jjtree.closeNodeScope(jjtn003,  2);
  -                         }
  +                        if (jjtc003) {
  +                          jjtree.closeNodeScope(jjtn003,  2);
  +                        }
           }
           break;
         case LOGICAL_GE:
           jj_consume_token(LOGICAL_GE);
  -                         ASTGENode jjtn004 = new ASTGENode(this, JJTGENODE);
  -                         boolean jjtc004 = true;
  -                         jjtree.openNodeScope(jjtn004);
  +                        ASTGENode jjtn004 = new ASTGENode(this, JJTGENODE);
  +                        boolean jjtc004 = true;
  +                        jjtree.openNodeScope(jjtn004);
           try {
             AdditiveExpression();
           } catch (Throwable jjte004) {
  -                         if (jjtc004) {
  -                           jjtree.clearNodeScope(jjtn004);
  -                           jjtc004 = false;
  -                         } else {
  -                           jjtree.popNode();
  -                         }
  -                         if (jjte004 instanceof RuntimeException) {
  -                           {if (true) throw (RuntimeException)jjte004;}
  -                         }
  -                         if (jjte004 instanceof ParseException) {
  -                           {if (true) throw (ParseException)jjte004;}
  -                         }
  -                         {if (true) throw (Error)jjte004;}
  +                        if (jjtc004) {
  +                          jjtree.clearNodeScope(jjtn004);
  +                          jjtc004 = false;
  +                        } else {
  +                          jjtree.popNode();
  +                        }
  +                        if (jjte004 instanceof RuntimeException) {
  +                          {if (true) throw (RuntimeException)jjte004;}
  +                        }
  +                        if (jjte004 instanceof ParseException) {
  +                          {if (true) throw (ParseException)jjte004;}
  +                        }
  +                        {if (true) throw (Error)jjte004;}
           } finally {
  -                         if (jjtc004) {
  -                           jjtree.closeNodeScope(jjtn004,  2);
  -                         }
  +                        if (jjtc004) {
  +                          jjtree.closeNodeScope(jjtn004,  2);
  +                        }
           }
           break;
         default:
  -        jj_la1[29] = jj_gen;
  +        jj_la1[34] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1665,66 +1720,66 @@
           ;
           break;
         default:
  -        jj_la1[30] = jj_gen;
  +        jj_la1[35] = jj_gen;
           break label_16;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case PLUS:
           jj_consume_token(PLUS);
  -                    ASTAddNode jjtn001 = new ASTAddNode(this, JJTADDNODE);
  -                    boolean jjtc001 = true;
  -                    jjtree.openNodeScope(jjtn001);
  +                  ASTAddNode jjtn001 = new ASTAddNode(this, JJTADDNODE);
  +                  boolean jjtc001 = true;
  +                  jjtree.openNodeScope(jjtn001);
           try {
             MultiplicativeExpression();
           } catch (Throwable jjte001) {
  -                    if (jjtc001) {
  -                      jjtree.clearNodeScope(jjtn001);
  -                      jjtc001 = false;
  -                    } else {
  -                      jjtree.popNode();
  -                    }
  -                    if (jjte001 instanceof RuntimeException) {
  -                      {if (true) throw (RuntimeException)jjte001;}
  -                    }
  -                    if (jjte001 instanceof ParseException) {
  -                      {if (true) throw (ParseException)jjte001;}
  -                    }
  -                    {if (true) throw (Error)jjte001;}
  +                  if (jjtc001) {
  +                    jjtree.clearNodeScope(jjtn001);
  +                    jjtc001 = false;
  +                  } else {
  +                    jjtree.popNode();
  +                  }
  +                  if (jjte001 instanceof RuntimeException) {
  +                    {if (true) throw (RuntimeException)jjte001;}
  +                  }
  +                  if (jjte001 instanceof ParseException) {
  +                    {if (true) throw (ParseException)jjte001;}
  +                  }
  +                  {if (true) throw (Error)jjte001;}
           } finally {
  -                    if (jjtc001) {
  -                      jjtree.closeNodeScope(jjtn001,  2);
  -                    }
  +                  if (jjtc001) {
  +                    jjtree.closeNodeScope(jjtn001,  2);
  +                  }
           }
           break;
         case MINUS:
           jj_consume_token(MINUS);
  -                    ASTSubtractNode jjtn002 = new ASTSubtractNode(this, 
JJTSUBTRACTNODE);
  -                    boolean jjtc002 = true;
  -                    jjtree.openNodeScope(jjtn002);
  +                  ASTSubtractNode jjtn002 = new ASTSubtractNode(this, 
JJTSUBTRACTNODE);
  +                  boolean jjtc002 = true;
  +                  jjtree.openNodeScope(jjtn002);
           try {
             MultiplicativeExpression();
           } catch (Throwable jjte002) {
  -                    if (jjtc002) {
  -                      jjtree.clearNodeScope(jjtn002);
  -                      jjtc002 = false;
  -                    } else {
  -                      jjtree.popNode();
  -                    }
  -                    if (jjte002 instanceof RuntimeException) {
  -                      {if (true) throw (RuntimeException)jjte002;}
  -                    }
  -                    if (jjte002 instanceof ParseException) {
  -                      {if (true) throw (ParseException)jjte002;}
  -                    }
  -                    {if (true) throw (Error)jjte002;}
  +                  if (jjtc002) {
  +                    jjtree.clearNodeScope(jjtn002);
  +                    jjtc002 = false;
  +                  } else {
  +                    jjtree.popNode();
  +                  }
  +                  if (jjte002 instanceof RuntimeException) {
  +                    {if (true) throw (RuntimeException)jjte002;}
  +                  }
  +                  if (jjte002 instanceof ParseException) {
  +                    {if (true) throw (ParseException)jjte002;}
  +                  }
  +                  {if (true) throw (Error)jjte002;}
           } finally {
  -                    if (jjtc002) {
  -                      jjtree.closeNodeScope(jjtn002,  2);
  -                    }
  +                  if (jjtc002) {
  +                    jjtree.closeNodeScope(jjtn002,  2);
  +                  }
           }
           break;
         default:
  -        jj_la1[31] = jj_gen;
  +        jj_la1[36] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1742,93 +1797,93 @@
           ;
           break;
         default:
  -        jj_la1[32] = jj_gen;
  +        jj_la1[37] = jj_gen;
           break label_17;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case MULTIPLY:
           jj_consume_token(MULTIPLY);
  -                       ASTMulNode jjtn001 = new ASTMulNode(this, JJTMULNODE);
  -                       boolean jjtc001 = true;
  -                       jjtree.openNodeScope(jjtn001);
  +                          ASTMulNode jjtn001 = new ASTMulNode(this, JJTMULNODE);
  +                          boolean jjtc001 = true;
  +                          jjtree.openNodeScope(jjtn001);
           try {
             UnaryExpression();
           } catch (Throwable jjte001) {
  -                       if (jjtc001) {
  -                         jjtree.clearNodeScope(jjtn001);
  -                         jjtc001 = false;
  -                       } else {
  -                         jjtree.popNode();
  -                       }
  -                       if (jjte001 instanceof RuntimeException) {
  -                         {if (true) throw (RuntimeException)jjte001;}
  -                       }
  -                       if (jjte001 instanceof ParseException) {
  -                         {if (true) throw (ParseException)jjte001;}
  -                       }
  -                       {if (true) throw (Error)jjte001;}
  +                          if (jjtc001) {
  +                            jjtree.clearNodeScope(jjtn001);
  +                            jjtc001 = false;
  +                          } else {
  +                            jjtree.popNode();
  +                          }
  +                          if (jjte001 instanceof RuntimeException) {
  +                            {if (true) throw (RuntimeException)jjte001;}
  +                          }
  +                          if (jjte001 instanceof ParseException) {
  +                            {if (true) throw (ParseException)jjte001;}
  +                          }
  +                          {if (true) throw (Error)jjte001;}
           } finally {
  -                       if (jjtc001) {
  -                         jjtree.closeNodeScope(jjtn001,  2);
  -                       }
  +                          if (jjtc001) {
  +                            jjtree.closeNodeScope(jjtn001,  2);
  +                          }
           }
           break;
         case DIVIDE:
           jj_consume_token(DIVIDE);
  -                       ASTDivNode jjtn002 = new ASTDivNode(this, JJTDIVNODE);
  -                       boolean jjtc002 = true;
  -                       jjtree.openNodeScope(jjtn002);
  +                        ASTDivNode jjtn002 = new ASTDivNode(this, JJTDIVNODE);
  +                        boolean jjtc002 = true;
  +                        jjtree.openNodeScope(jjtn002);
           try {
             UnaryExpression();
           } catch (Throwable jjte002) {
  -                       if (jjtc002) {
  -                         jjtree.clearNodeScope(jjtn002);
  -                         jjtc002 = false;
  -                       } else {
  -                         jjtree.popNode();
  -                       }
  -                       if (jjte002 instanceof RuntimeException) {
  -                         {if (true) throw (RuntimeException)jjte002;}
  -                       }
  -                       if (jjte002 instanceof ParseException) {
  -                         {if (true) throw (ParseException)jjte002;}
  -                       }
  -                       {if (true) throw (Error)jjte002;}
  +                        if (jjtc002) {
  +                          jjtree.clearNodeScope(jjtn002);
  +                          jjtc002 = false;
  +                        } else {
  +                          jjtree.popNode();
  +                        }
  +                        if (jjte002 instanceof RuntimeException) {
  +                          {if (true) throw (RuntimeException)jjte002;}
  +                        }
  +                        if (jjte002 instanceof ParseException) {
  +                          {if (true) throw (ParseException)jjte002;}
  +                        }
  +                        {if (true) throw (Error)jjte002;}
           } finally {
  -                       if (jjtc002) {
  -                         jjtree.closeNodeScope(jjtn002,  2);
  -                       }
  +                        if (jjtc002) {
  +                          jjtree.closeNodeScope(jjtn002,  2);
  +                        }
           }
           break;
         case MODULUS:
           jj_consume_token(MODULUS);
  -                       ASTModNode jjtn003 = new ASTModNode(this, JJTMODNODE);
  -                       boolean jjtc003 = true;
  -                       jjtree.openNodeScope(jjtn003);
  +                         ASTModNode jjtn003 = new ASTModNode(this, JJTMODNODE);
  +                         boolean jjtc003 = true;
  +                         jjtree.openNodeScope(jjtn003);
           try {
             UnaryExpression();
           } catch (Throwable jjte003) {
  -                       if (jjtc003) {
  -                         jjtree.clearNodeScope(jjtn003);
  -                         jjtc003 = false;
  -                       } else {
  -                         jjtree.popNode();
  -                       }
  -                       if (jjte003 instanceof RuntimeException) {
  -                         {if (true) throw (RuntimeException)jjte003;}
  -                       }
  -                       if (jjte003 instanceof ParseException) {
  -                         {if (true) throw (ParseException)jjte003;}
  -                       }
  -                       {if (true) throw (Error)jjte003;}
  +                         if (jjtc003) {
  +                           jjtree.clearNodeScope(jjtn003);
  +                           jjtc003 = false;
  +                         } else {
  +                           jjtree.popNode();
  +                         }
  +                         if (jjte003 instanceof RuntimeException) {
  +                           {if (true) throw (RuntimeException)jjte003;}
  +                         }
  +                         if (jjte003 instanceof ParseException) {
  +                           {if (true) throw (ParseException)jjte003;}
  +                         }
  +                         {if (true) throw (Error)jjte003;}
           } finally {
  -                       if (jjtc003) {
  -                         jjtree.closeNodeScope(jjtn003,  2);
  -                       }
  +                         if (jjtc003) {
  +                           jjtree.closeNodeScope(jjtn003,  2);
  +                         }
           }
           break;
         default:
  -        jj_la1[33] = jj_gen;
  +        jj_la1[38] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1839,33 +1894,34 @@
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case LOGICAL_NOT:
         jj_consume_token(LOGICAL_NOT);
  -                    ASTNotNode jjtn001 = new ASTNotNode(this, JJTNOTNODE);
  -                    boolean jjtc001 = true;
  -                    jjtree.openNodeScope(jjtn001);
  +                     ASTNotNode jjtn001 = new ASTNotNode(this, JJTNOTNODE);
  +                     boolean jjtc001 = true;
  +                     jjtree.openNodeScope(jjtn001);
         try {
           UnaryExpression();
         } catch (Throwable jjte001) {
  -                    if (jjtc001) {
  -                      jjtree.clearNodeScope(jjtn001);
  -                      jjtc001 = false;
  -                    } else {
  -                      jjtree.popNode();
  -                    }
  -                    if (jjte001 instanceof RuntimeException) {
  -                      {if (true) throw (RuntimeException)jjte001;}
  -                    }
  -                    if (jjte001 instanceof ParseException) {
  -                      {if (true) throw (ParseException)jjte001;}
  -                    }
  -                    {if (true) throw (Error)jjte001;}
  +                     if (jjtc001) {
  +                       jjtree.clearNodeScope(jjtn001);
  +                       jjtc001 = false;
  +                     } else {
  +                       jjtree.popNode();
  +                     }
  +                     if (jjte001 instanceof RuntimeException) {
  +                       {if (true) throw (RuntimeException)jjte001;}
  +                     }
  +                     if (jjte001 instanceof ParseException) {
  +                       {if (true) throw (ParseException)jjte001;}
  +                     }
  +                     {if (true) throw (Error)jjte001;}
         } finally {
  -                    if (jjtc001) {
  -                      jjtree.closeNodeScope(jjtn001,  1);
  -                    }
  +                     if (jjtc001) {
  +                       jjtree.closeNodeScope(jjtn001,  1);
  +                     }
         }
         break;
       case LBRACKET:
       case LPAREN:
  +    case WHITESPACE:
       case STRING_LITERAL:
       case TRUE:
       case FALSE:
  @@ -1875,7 +1931,7 @@
         PrimaryExpression();
         break;
       default:
  -      jj_la1[34] = jj_gen;
  +      jj_la1[39] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -1883,6 +1939,14 @@
   
     final public void PrimaryExpression() throws ParseException {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +    case WHITESPACE:
  +      jj_consume_token(WHITESPACE);
  +      break;
  +    default:
  +      jj_la1[40] = jj_gen;
  +      ;
  +    }
  +    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case STRING_LITERAL:
         StringLiteral();
         break;
  @@ -1908,10 +1972,18 @@
         jj_consume_token(RPAREN);
         break;
       default:
  -      jj_la1[35] = jj_gen;
  +      jj_la1[41] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  +    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +    case WHITESPACE:
  +      jj_consume_token(WHITESPACE);
  +      break;
  +    default:
  +      jj_la1[42] = jj_gen;
  +      ;
  +    }
     }
   
     final private boolean jj_2_1(int xla) {
  @@ -1942,131 +2014,105 @@
       return retval;
     }
   
  -  final private boolean jj_3R_57() {
  -    if (jj_scan_token(COMMA)) return true;
  +  final private boolean jj_3R_67() {
  +    if (jj_scan_token(LOGICAL_NOT_EQUALS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_30()) 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_63() {
  -    if (jj_scan_token(LOGICAL_NOT_EQUALS)) return true;
  +  final private boolean jj_3R_66() {
  +    if (jj_scan_token(LOGICAL_EQUALS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_58()) 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_58() {
  -    if (jj_3R_60()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +  final private boolean jj_3R_63() {
       Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_61()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_62() {
  -    if (jj_scan_token(LOGICAL_EQUALS)) 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_59() {
  -    Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_62()) {
  +    if (jj_3R_66()) {
       jj_scanpos = xsp;
  -    if (jj_3R_63()) 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;
       return false;
     }
   
  -  final private boolean jj_3_3() {
  -    if (jj_3R_19()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_31() {
  -    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_55() {
  -    if (jj_3R_58()) return true;
  +  final private boolean jj_3R_59() {
  +    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_59()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_63()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
     final private boolean jj_3R_22() {
  -    if (jj_3R_30()) return true;
  +    if (jj_3R_32()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3R_57()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_61()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_32() {
  -    if (jj_scan_token(NUMBER_LITERAL)) return true;
  +  final private boolean jj_3R_38() {
  +    if (jj_scan_token(FALSE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_36() {
  -    if (jj_scan_token(FALSE)) return true;
  +  final private boolean jj_3R_33() {
  +    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_56() {
  +  final private boolean jj_3R_60() {
       if (jj_scan_token(LOGICAL_AND)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_55()) return true;
  +    if (jj_3R_59()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_53() {
  -    if (jj_3R_55()) return true;
  +  final private boolean jj_3R_57() {
  +    if (jj_3R_59()) 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_3R_60()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_35() {
  +  final private boolean jj_3R_37() {
       if (jj_scan_token(TRUE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_54() {
  +  final private boolean jj_3R_34() {
  +    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_58() {
       if (jj_scan_token(LOGICAL_OR)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_53()) return true;
  +    if (jj_3R_57()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
  @@ -2082,12 +2128,12 @@
       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_49()) jj_scanpos = xsp;
  +    if (jj_3R_52()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_45() {
  +  final private boolean jj_3R_48() {
       if (jj_scan_token(RCURLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
  @@ -2101,43 +2147,43 @@
       return false;
     }
   
  -  final private boolean jj_3R_52() {
  -    if (jj_3R_53()) return true;
  +  final private boolean jj_3R_55() {
  +    if (jj_3R_57()) return true;
       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_3R_58()) { jj_scanpos = xsp; break; }
         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(LCURLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_51() {
  +  final private boolean jj_3R_54() {
       if (jj_3R_20()) 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_37()) return true;
  +    if (jj_3R_39()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_33() {
  +  final private boolean jj_3R_35() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_44()) jj_scanpos = xsp;
  +    if (jj_3R_47()) 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_45()) jj_scanpos = xsp;
  +    if (jj_3R_48()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       while (true) {
         xsp = jj_scanpos;
  @@ -2147,16 +2193,14 @@
       return false;
     }
   
  -  final private boolean jj_3R_50() {
  -    if (jj_scan_token(COMMA)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_30()) return true;
  +  final private boolean jj_3R_51() {
  +    if (jj_3R_55()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_48() {
  -    if (jj_3R_52()) return true;
  +  final private boolean jj_3R_50() {
  +    if (jj_3R_54()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
  @@ -2175,169 +2219,210 @@
       return false;
     }
   
  -  final private boolean jj_3R_37() {
  +  final private boolean jj_3R_39() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_47()) {
  +    if (jj_3R_50()) {
       jj_scanpos = xsp;
  -    if (jj_3R_48()) return true;
  +    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;
       return false;
     }
   
  -  final private boolean jj_3R_47() {
  -    if (jj_3R_51()) return true;
  +  final private boolean jj_3R_53() {
  +    if (jj_scan_token(COMMA)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_32()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_46() {
  +    if (jj_3R_34()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_56() {
  +    if (jj_scan_token(WHITESPACE)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_45() {
  +    if (jj_3R_35()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_44() {
  +    if (jj_3R_38()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
     final private boolean jj_3R_43() {
  -    if (jj_3R_32()) return true;
  +    if (jj_3R_37()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
     final private boolean jj_3R_42() {
  -    if (jj_3R_33()) return true;
  +    if (jj_3R_36()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
     final private boolean jj_3R_41() {
  -    if (jj_3R_36()) return true;
  +    if (jj_3R_33()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_46() {
  -    if (jj_3R_30()) return true;
  +  final private boolean jj_3R_49() {
  +    if (jj_3R_32()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3R_50()) { jj_scanpos = xsp; break; }
  +      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_40() {
  -    if (jj_3R_35()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_39() {
  -    if (jj_3R_34()) return true;
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_30() {
  +  final private boolean jj_3R_32() {
       Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_40()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       xsp = jj_scanpos;
  -    if (jj_3R_38()) {
  +    if (jj_3R_41()) {
       jj_scanpos = xsp;
  -    if (jj_3R_39()) {
  +    if (jj_3R_42()) {
       jj_scanpos = xsp;
  -    if (jj_3R_40()) {
  +    if (jj_3R_43()) {
       jj_scanpos = xsp;
  -    if (jj_3R_41()) {
  +    if (jj_3R_44()) {
       jj_scanpos = xsp;
  -    if (jj_3R_42()) {
  +    if (jj_3R_45()) {
       jj_scanpos = xsp;
  -    if (jj_3R_43()) return true;
  +    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;
       } 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;
  +    xsp = jj_scanpos;
  +    if (jj_3R_56()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_38() {
  -    if (jj_3R_31()) return true;
  +  final private boolean jj_3R_30() {
  +    if (jj_scan_token(LPAREN)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_39()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(RPAREN)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
     final private boolean jj_3R_29() {
  -    if (jj_scan_token(LPAREN)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_37()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(RPAREN)) return true;
  +    if (jj_3R_38()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_1() {
  -    if (jj_scan_token(DOUBLE_ESCAPE)) return true;
  +  final private boolean jj_3R_31() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
     final private boolean jj_3R_28() {
  -    if (jj_3R_36()) return true;
  +    if (jj_3R_37()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
     final private boolean jj_3R_27() {
  +    if (jj_3R_36()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_26() {
       if (jj_3R_35()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_49() {
  +  final private boolean jj_3R_52() {
       if (jj_scan_token(RCURLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_26() {
  +  final private boolean jj_3R_25() {
       if (jj_3R_34()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_34() {
  +  final private boolean jj_3R_24() {
  +    if (jj_3R_33()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_36() {
       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_46()) jj_scanpos = xsp;
  +    if (jj_3R_49()) 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_25() {
  -    if (jj_3R_33()) return true;
  +  final private boolean jj_3R_23() {
  +    if (jj_scan_token(WHITESPACE)) 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;
  +  final private boolean jj_3_1() {
  +    if (jj_scan_token(DOUBLE_ESCAPE)) 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_82() {
  +    if (jj_scan_token(MODULUS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_74()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
     final private boolean jj_3R_20() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_23()) {
  -    jj_scanpos = xsp;
  +    if (jj_3R_23()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
       if (jj_3R_24()) {
       jj_scanpos = xsp;
       if (jj_3R_25()) {
  @@ -2347,8 +2432,10 @@
       if (jj_3R_27()) {
       jj_scanpos = xsp;
       if (jj_3R_28()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_29()) {
       jj_scanpos = xsp;
  -    if (jj_3R_29()) return true;
  +    if (jj_3R_30()) 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;
  @@ -2356,69 +2443,64 @@
       } 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;
  +    xsp = jj_scanpos;
  +    if (jj_3R_31()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_75() {
  +  final private boolean jj_3R_81() {
  +    if (jj_scan_token(DIVIDE)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_74()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_79() {
       if (jj_3R_20()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_78() {
  -    if (jj_scan_token(MODULUS)) return true;
  +  final private boolean jj_3R_80() {
  +    if (jj_scan_token(MULTIPLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_70()) return true;
  +    if (jj_3R_74()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_74() {
  +  final private boolean jj_3R_78() {
       if (jj_scan_token(LOGICAL_NOT)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_70()) return true;
  +    if (jj_3R_74()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_70() {
  +  final private boolean jj_3R_75() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_74()) {
  +    if (jj_3R_80()) {
       jj_scanpos = xsp;
  -    if (jj_3R_75()) return true;
  +    if (jj_3R_81()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_82()) 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_77() {
  -    if (jj_scan_token(DIVIDE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_70()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_76() {
  -    if (jj_scan_token(MULTIPLY)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_70()) 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_71() {
  +  final private boolean jj_3R_74() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_76()) {
  +    if (jj_3R_78()) {
       jj_scanpos = xsp;
  -    if (jj_3R_77()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_78()) return true;
  +    if (jj_3R_79()) 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;
       return false;
     }
   
  @@ -2428,105 +2510,99 @@
       return false;
     }
   
  -  final private boolean jj_3R_73() {
  -    if (jj_scan_token(MINUS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_64()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_64() {
  -    if (jj_3R_70()) return true;
  +  final private boolean jj_3R_68() {
  +    if (jj_3R_74()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3R_71()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_75()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_72() {
  -    if (jj_scan_token(PLUS)) return true;
  +  final private boolean jj_3R_77() {
  +    if (jj_scan_token(MINUS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_64()) return true;
  +    if (jj_3R_68()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_65() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_72()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_73()) return true;
  +  final private boolean jj_3R_76() {
  +    if (jj_scan_token(PLUS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else 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_69() {
  -    if (jj_scan_token(LOGICAL_GE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_60()) return true;
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_76()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_77()) 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_60() {
  -    if (jj_3R_64()) return true;
  +  final private boolean jj_3R_64() {
  +    if (jj_3R_68()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3R_65()) { 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_68() {
  -    if (jj_scan_token(LOGICAL_LE)) return true;
  +  final private boolean jj_3R_73() {
  +    if (jj_scan_token(LOGICAL_GE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_60()) return true;
  +    if (jj_3R_64()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_21() {
  -    if (jj_scan_token(IDENTIFIER)) return true;
  +  final private boolean jj_3R_72() {
  +    if (jj_scan_token(LOGICAL_LE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_64()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_67() {
  +  final private boolean jj_3R_71() {
       if (jj_scan_token(LOGICAL_GT)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_60()) return true;
  +    if (jj_3R_64()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_66() {
  +  final private boolean jj_3R_70() {
       if (jj_scan_token(LOGICAL_LT)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_60()) return true;
  +    if (jj_3R_64()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_61() {
  +  final private boolean jj_3R_65() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_66()) {
  +    if (jj_3R_70()) {
       jj_scanpos = xsp;
  -    if (jj_3R_67()) {
  +    if (jj_3R_71()) {
       jj_scanpos = xsp;
  -    if (jj_3R_68()) {
  +    if (jj_3R_72()) {
       jj_scanpos = xsp;
  -    if (jj_3R_69()) 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;
       } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  @@ -2534,6 +2610,38 @@
       return false;
     }
   
  +  final private boolean jj_3R_61() {
  +    if (jj_scan_token(COMMA)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_32()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_21() {
  +    if (jj_scan_token(IDENTIFIER)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_62() {
  +    if (jj_3R_64()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3R_65()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
  +    return false;
  +  }
  +
  +  final private boolean jj_3_3() {
  +    if (jj_3R_19()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
     public ParserTokenManager token_source;
     ASCII_CharStream jj_input_stream;
     public Token token, jj_nt;
  @@ -2543,9 +2651,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 = 
{0x11f81b0,0x11f81b0,0x1c0000,0x1000002,0x1000002,0x11f81b0,0x8,0x7000002,0x7000002,0x8,0x7000002,0x0,0x0,0x0,0x0,0x1030030,0x11f81b0,0x0,0x0,0x0,0x11f81b0,0x11f81b0,0x8000000,0x7000012,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x30000000,0xc0000000,0xc0000000,0x7000012,0x7000012,};
  -  final private int[] jj_la1_1 = 
{0x38a9000,0x38a9000,0x0,0x28a0000,0x28a0000,0x38a9000,0x0,0x2820000,0x2820000,0x0,0x2820000,0x2000000,0x4000000,0x800000,0x4000000,0x1020000,0x38a9000,0x2000,0x2000,0x4000,0x38a9000,0x38a9000,0x0,0x2820200,0x4,0x2,0x180,0x180,0x78,0x78,0x0,0x0,0x1,0x1,0x2820200,0x2820000,};
  +  final private int[] jj_la1 = new int[43];
  +  final private int[] jj_la1_0 = 
{0x9f81b0,0x9f81b0,0x1c0000,0xc00002,0x400000,0xc00002,0x9f81b0,0x8,0x3c00002,0x400000,0x3800002,0x400000,0x8,0x3c00002,0x0,0x0,0x0,0x0,0x830030,0x400000,0x9f81b0,0x0,0x0,0x0,0x9f81b0,0x400000,0x9f81b0,0x4000000,0x3c00012,0x0,0x0,0x0,0x0,0x0,0x0,0x18000000,0x18000000,0xe0000000,0xe0000000,0x3c00012,0x400000,0x3800012,0x400000,};
  +  final private int[] jj_la1_1 = 
{0x1c54800,0x1c54800,0x0,0x1450000,0x0,0x1450000,0x1c54800,0x0,0x1410000,0x0,0x1410000,0x0,0x0,0x1410000,0x1000000,0x2000000,0x400000,0x2000000,0x810000,0x0,0x1c54800,0x1000,0x1000,0x2000,0x1c54800,0x0,0x1c54800,0x0,0x1410100,0x2,0x1,0xc0,0xc0,0x3c,0x3c,0x0,0x0,0x0,0x0,0x1410100,0x0,0x1410000,0x0,};
     final private JJCalls[] jj_2_rtns = new JJCalls[4];
     private boolean jj_rescan = false;
     private int jj_gc = 0;
  @@ -2556,7 +2664,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 < 43; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2567,7 +2675,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 < 43; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2577,7 +2685,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 < 43; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2588,7 +2696,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 < 43; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2597,7 +2705,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 < 43; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2607,7 +2715,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 < 43; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2714,15 +2822,15 @@
   
     final public ParseException generateParseException() {
       jj_expentries.removeAllElements();
  -    boolean[] la1tokens = new boolean[61];
  -    for (int i = 0; i < 61; i++) {
  +    boolean[] la1tokens = new boolean[60];
  +    for (int i = 0; i < 60; i++) {
         la1tokens[i] = false;
       }
       if (jj_kind >= 0) {
         la1tokens[jj_kind] = true;
         jj_kind = -1;
       }
  -    for (int i = 0; i < 36; i++) {
  +    for (int i = 0; i < 43; i++) {
         if (jj_la1[i] == jj_gen) {
           for (int j = 0; j < 32; j++) {
             if ((jj_la1_0[i] & (1<<j)) != 0) {
  @@ -2734,7 +2842,7 @@
           }
         }
       }
  -    for (int i = 0; i < 61; i++) {
  +    for (int i = 0; i < 60; i++) {
         if (la1tokens[i]) {
           jj_expentry = new int[1];
           jj_expentry[0] = i;
  
  
  
  1.30      +412 -398  
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.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- Parser.jj 2000/11/16 20:25:04     1.29
  +++ Parser.jj 2000/11/19 23:28:49     1.30
  @@ -92,7 +92,7 @@
   import org.apache.velocity.runtime.Runtime;
   import org.apache.velocity.runtime.parser.node.*;
   import org.apache.velocity.runtime.directive.Directive;
  -//import org.apache.velocity.runtime.directive.Macro;
  +import org.apache.velocity.runtime.directive.Macro;
   import org.apache.velocity.util.StringUtils;
   
   /**
  @@ -106,7 +106,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.29 2000/11/16 20:25:04 geirm Exp $ 
  + * @version $Id: Parser.jj,v 1.30 2000/11/19 23:28:49 geirm Exp $ 
   */
   public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants/*@egen*/
   {/*@bgen(jjtree)*/
  @@ -215,6 +215,10 @@
           {
              bRecognizedDirective = true;
           }
  +        else if (Runtime.isVelocimacro( strDirective.substring(1)))
  +        {
  +            bRecognizedDirective = true;
  +        }
           else
           {
               /* order for speed? */
  @@ -695,16 +699,13 @@
    *  DIRECTIVE Lexical State (some of it, anyway)
    * 
    * ---------------------------------------------------------------------- */
  -<DIRECTIVE,REFMOD2> 
  -SKIP:
  +
  +<DIRECTIVE,REFMOD2>
  +TOKEN:
   {
  -    " "
  -|   "\t"
  -//|   "\n"
  -//|   "\r"
  +    <WHITESPACE : ([" ","\t"])+ >
   }
   
  -
   <REFERENCE,DIRECTIVE,REFMODIFIER,REFMOD2>
   TOKEN :
   {
  @@ -1058,12 +1059,14 @@
           }
   
           /*
  -         * if that failed, lets lookahead to see if we matched a PD
  +         * if that failed, lets lookahead to see if we matched a PD or a VM
            */ 
   
           if ( isDirective( t.next.image.substring(1)))
               bControl = true;
  -        
  +        else if ( Runtime.isVelocimacro( t.next.image.substring(1)))
  +            bControl = true;
  +
           t.image = "";
           
           for( int i = 0; i < iCount; i++)
  @@ -1178,6 +1181,8 @@
   
   /**
    *   Supports the arguments for the Pluggable Directives
  + *   We add whitespace in here as a token so the VMs can 
  + *   easily reconstruct a macro body from the token stream
    *   @see Directive()
    */
   void DirectiveArg()       : {}
  @@ -1187,6 +1192,7 @@
   |   StringLiteral()
   |   NumberLiteral()
   |   ObjectArray()
  +|   <WHITESPACE>
   }
   
   /**
  @@ -1215,17 +1221,17 @@
           String strDirectiveName = t.image.substring(1);
    
           d = (Directive) directives.get( strDirectiveName );
  +
  +        /*
  +         *  Velocimacro support : if the directive is macro directive
  +         *   then set the flag so after the block parsing, we add the VM
  +         *   right then. (So available if used w/in the current template )
  +         */
   
  -      //  /*
  -      //   *  Velocimacro support : if the directive is macro directive
  -      //   *   then set the flag so after the block parsing, we add the VM
  -      //   *   right then. (So available if used w/in the current template )
  -      //   */
  -
  -      //  if ( strDirectiveName.equals("macro"))  
  -      //  {
  -      //       bDoItNow = true;
  -      //  }
  +        if ( strDirectiveName.equals("macro"))  
  +        {
  +             bDoItNow = true;
  +        }
   
           /*
            *  set the directive name from here.  No reason for the thing to know 
about parser tokens
  @@ -1239,7 +1245,7 @@
                *  if null, then not a real directive, but maybe a Velocimacro
                 */
   
  -          //  d  =  (Directive) Runtime.getVelocimacro( strDirectiveName );
  +            d  =  (Directive) Runtime.getVelocimacro( strDirectiveName );
   
               if (d == null) 
               {   
  @@ -1260,7 +1266,7 @@
        *  if this is indeed a token, match the #foo ( arg ) pattern
        */
   
  -    <LPAREN> ( DirectiveArg() )+ <RPAREN>
  +    [<WHITESPACE>] <LPAREN> (  DirectiveArg()  )+ <RPAREN>
       {
           if (d.getType() == Directive.LINE)
               return jjtn000;
  @@ -1315,8 +1321,8 @@
         
           if (bDoItNow)  
           {
  -        //    Macro m = new Macro();
  -        //    m.processAndRegister( jjtThis );
  +            Macro m = new Macro();
  +            m.processAndRegister( jjtn000 );
           }
   
           /*
  @@ -1385,12 +1391,16 @@
    */
   void Parameter()      : {}
   {
  -    StringLiteral()
  -|   ObjectArray()
  -|   True()
  -|   False()
  -|   Reference()
  -|   NumberLiteral()
  +    [<WHITESPACE>]
  +    (
  +        StringLiteral()
  +      | ObjectArray()
  +      | True()
  +      | False()
  +      | Reference()
  +      | NumberLiteral()
  +    )
  +    [<WHITESPACE>]
   }
   
   /**
  @@ -1541,7 +1551,7 @@
   {/*@bgen(jjtree) IfStatement */
       try {
   /*@egen*/
  -    <IF_DIRECTIVE> <LPAREN> Expression() <RPAREN>/*@bgen(jjtree) Block */
  +    <IF_DIRECTIVE> [<WHITESPACE>] <LPAREN> Expression() <RPAREN>/*@bgen(jjtree) 
Block */
       {
         ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK);
         boolean jjtc001 = true;
  @@ -1663,7 +1673,7 @@
   {/*@bgen(jjtree) ElseIfStatement */
       try {
   /*@egen*/
  -    <ELSEIF_DIRECTIVE> 
  +    <ELSEIF_DIRECTIVE> [<WHITESPACE>] 
       <LPAREN> Expression() <RPAREN>/*@bgen(jjtree) Block */
       {
         ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK);
  @@ -1773,7 +1783,7 @@
   {/*@bgen(jjtree) Expression */
       try {
   /*@egen*/
  -    LOOKAHEAD( PrimaryExpression() <EQUALS> ) Assignment()
  +    LOOKAHEAD( PrimaryExpression() <EQUALS>  ) Assignment()
   |   ConditionalOrExpression()/*@bgen(jjtree)*/
       } catch (Throwable jjte000) {
         if (jjtc000) {
  @@ -1805,7 +1815,7 @@
   {/*@bgen(jjtree) #Assignment( 2) */
       try {
   /*@egen*/
  -    PrimaryExpression() <EQUALS> Expression()/*@bgen(jjtree)*/
  +    PrimaryExpression() <EQUALS>  Expression()/*@bgen(jjtree)*/
       } catch (Throwable jjte000) {
         if (jjtc000) {
           jjtree.clearNodeScope(jjtn000);
  @@ -1831,48 +1841,14 @@
   void ConditionalOrExpression()       : {}
   {
     ConditionalAndExpression()
  -  ( <LOGICAL_OR>/*@bgen(jjtree) #OrNode( 2) */
  -                 {
  -                   ASTOrNode jjtn001 = new ASTOrNode(this, JJTORNODE);
  -                   boolean jjtc001 = true;
  -                   jjtree.openNodeScope(jjtn001);
  -                 }
  -                 try {
  -/*@egen*/ ConditionalAndExpression()/*@bgen(jjtree)*/
  -                 } catch (Throwable jjte001) {
  -                   if (jjtc001) {
  -                     jjtree.clearNodeScope(jjtn001);
  -                     jjtc001 = false;
  -                   } else {
  -                     jjtree.popNode();
  -                   }
  -                   if (jjte001 instanceof RuntimeException) {
  -                     throw (RuntimeException)jjte001;
  -                   }
  -                   if (jjte001 instanceof ParseException) {
  -                     throw (ParseException)jjte001;
  -                   }
  -                   throw (Error)jjte001;
  -                 } finally {
  -                   if (jjtc001) {
  -                     jjtree.closeNodeScope(jjtn001,  2);
  -                   }
  -                 }
  -/*@egen*/ )*
  -}
  -
  -
  -void ConditionalAndExpression()       : {}
  -{
  -  EqualityExpression()
  -  ( <LOGICAL_AND>/*@bgen(jjtree) #AndNode( 2) */
  +  (  <LOGICAL_OR>/*@bgen(jjtree) #OrNode( 2) */
                      {
  -                     ASTAndNode jjtn001 = new ASTAndNode(this, JJTANDNODE);
  +                     ASTOrNode jjtn001 = new ASTOrNode(this, JJTORNODE);
                        boolean jjtc001 = true;
                        jjtree.openNodeScope(jjtn001);
                      }
                      try {
  -/*@egen*/  EqualityExpression()/*@bgen(jjtree)*/
  +/*@egen*/  ConditionalAndExpression()/*@bgen(jjtree)*/
                      } catch (Throwable jjte001) {
                        if (jjtc001) {
                          jjtree.clearNodeScope(jjtn001);
  @@ -1895,200 +1871,18 @@
   /*@egen*/ )*
   }
   
  -void EqualityExpression()       : {}
  -{
  -    RelationalExpression()
  -    (
  -          <LOGICAL_EQUALS>/*@bgen(jjtree) #EQNode( 2) */
  -                           {
  -                             ASTEQNode jjtn001 = new ASTEQNode(this, JJTEQNODE);
  -                             boolean jjtc001 = true;
  -                             jjtree.openNodeScope(jjtn001);
  -                           }
  -                           try {
  -/*@egen*/ RelationalExpression()/*@bgen(jjtree)*/
  -                           } catch (Throwable jjte001) {
  -                             if (jjtc001) {
  -                               jjtree.clearNodeScope(jjtn001);
  -                               jjtc001 = false;
  -                             } else {
  -                               jjtree.popNode();
  -                             }
  -                             if (jjte001 instanceof RuntimeException) {
  -                               throw (RuntimeException)jjte001;
  -                             }
  -                             if (jjte001 instanceof ParseException) {
  -                               throw (ParseException)jjte001;
  -                             }
  -                             throw (Error)jjte001;
  -                           } finally {
  -                             if (jjtc001) {
  -                               jjtree.closeNodeScope(jjtn001,  2);
  -                             }
  -                           }
  -/*@egen*/
  -        | <LOGICAL_NOT_EQUALS>/*@bgen(jjtree) #NENode( 2) */
  -                               {
  -                                 ASTNENode jjtn002 = new ASTNENode(this, JJTNENODE);
  -                                 boolean jjtc002 = true;
  -                                 jjtree.openNodeScope(jjtn002);
  -                               }
  -                               try {
  -/*@egen*/ RelationalExpression()/*@bgen(jjtree)*/
  -                               } catch (Throwable jjte002) {
  -                                 if (jjtc002) {
  -                                   jjtree.clearNodeScope(jjtn002);
  -                                   jjtc002 = false;
  -                                 } else {
  -                                   jjtree.popNode();
  -                                 }
  -                                 if (jjte002 instanceof RuntimeException) {
  -                                   throw (RuntimeException)jjte002;
  -                                 }
  -                                 if (jjte002 instanceof ParseException) {
  -                                   throw (ParseException)jjte002;
  -                                 }
  -                                 throw (Error)jjte002;
  -                               } finally {
  -                                 if (jjtc002) {
  -                                   jjtree.closeNodeScope(jjtn002,  2);
  -                                 }
  -                               }
  -/*@egen*/
  -    )*
  -}
   
  -void RelationalExpression()       : {}
  -{
  -    AdditiveExpression()
  -    (
  -          <LOGICAL_LT>/*@bgen(jjtree) #LTNode( 2) */
  -                       {
  -                         ASTLTNode jjtn001 = new ASTLTNode(this, JJTLTNODE);
  -                         boolean jjtc001 = true;
  -                         jjtree.openNodeScope(jjtn001);
  -                       }
  -                       try {
  -/*@egen*/ AdditiveExpression()/*@bgen(jjtree)*/
  -                       } catch (Throwable jjte001) {
  -                         if (jjtc001) {
  -                           jjtree.clearNodeScope(jjtn001);
  -                           jjtc001 = false;
  -                         } else {
  -                           jjtree.popNode();
  -                         }
  -                         if (jjte001 instanceof RuntimeException) {
  -                           throw (RuntimeException)jjte001;
  -                         }
  -                         if (jjte001 instanceof ParseException) {
  -                           throw (ParseException)jjte001;
  -                         }
  -                         throw (Error)jjte001;
  -                       } finally {
  -                         if (jjtc001) {
  -                           jjtree.closeNodeScope(jjtn001,  2);
  -                         }
  -                       }
  -/*@egen*/
  -        | <LOGICAL_GT>/*@bgen(jjtree) #GTNode( 2) */
  -                       {
  -                         ASTGTNode jjtn002 = new ASTGTNode(this, JJTGTNODE);
  -                         boolean jjtc002 = true;
  -                         jjtree.openNodeScope(jjtn002);
  -                       }
  -                       try {
  -/*@egen*/ AdditiveExpression()/*@bgen(jjtree)*/
  -                       } catch (Throwable jjte002) {
  -                         if (jjtc002) {
  -                           jjtree.clearNodeScope(jjtn002);
  -                           jjtc002 = false;
  -                         } else {
  -                           jjtree.popNode();
  -                         }
  -                         if (jjte002 instanceof RuntimeException) {
  -                           throw (RuntimeException)jjte002;
  -                         }
  -                         if (jjte002 instanceof ParseException) {
  -                           throw (ParseException)jjte002;
  -                         }
  -                         throw (Error)jjte002;
  -                       } finally {
  -                         if (jjtc002) {
  -                           jjtree.closeNodeScope(jjtn002,  2);
  -                         }
  -                       }
  -/*@egen*/
  -        | <LOGICAL_LE>/*@bgen(jjtree) #LENode( 2) */
  -                       {
  -                         ASTLENode jjtn003 = new ASTLENode(this, JJTLENODE);
  -                         boolean jjtc003 = true;
  -                         jjtree.openNodeScope(jjtn003);
  -                       }
  -                       try {
  -/*@egen*/ AdditiveExpression()/*@bgen(jjtree)*/
  -                       } catch (Throwable jjte003) {
  -                         if (jjtc003) {
  -                           jjtree.clearNodeScope(jjtn003);
  -                           jjtc003 = false;
  -                         } else {
  -                           jjtree.popNode();
  -                         }
  -                         if (jjte003 instanceof RuntimeException) {
  -                           throw (RuntimeException)jjte003;
  -                         }
  -                         if (jjte003 instanceof ParseException) {
  -                           throw (ParseException)jjte003;
  -                         }
  -                         throw (Error)jjte003;
  -                       } finally {
  -                         if (jjtc003) {
  -                           jjtree.closeNodeScope(jjtn003,  2);
  -                         }
  -                       }
  -/*@egen*/
  -        | <LOGICAL_GE>/*@bgen(jjtree) #GENode( 2) */
  -                       {
  -                         ASTGENode jjtn004 = new ASTGENode(this, JJTGENODE);
  -                         boolean jjtc004 = true;
  -                         jjtree.openNodeScope(jjtn004);
  -                       }
  -                       try {
  -/*@egen*/ AdditiveExpression()/*@bgen(jjtree)*/
  -                       } catch (Throwable jjte004) {
  -                         if (jjtc004) {
  -                           jjtree.clearNodeScope(jjtn004);
  -                           jjtc004 = false;
  -                         } else {
  -                           jjtree.popNode();
  -                         }
  -                         if (jjte004 instanceof RuntimeException) {
  -                           throw (RuntimeException)jjte004;
  -                         }
  -                         if (jjte004 instanceof ParseException) {
  -                           throw (ParseException)jjte004;
  -                         }
  -                         throw (Error)jjte004;
  -                       } finally {
  -                         if (jjtc004) {
  -                           jjtree.closeNodeScope(jjtn004,  2);
  -                         }
  -                       }
  -/*@egen*/
  -    )*
  -}
  -
  -void AdditiveExpression()       : {}
  +void ConditionalAndExpression()       : {}
   {
  -    MultiplicativeExpression()
  -    (
  -          <PLUS>/*@bgen(jjtree) #AddNode( 2) */
  +  EqualityExpression()
  +  ( <LOGICAL_AND>/*@bgen(jjtree) #AndNode( 2) */
                     {
  -                    ASTAddNode jjtn001 = new ASTAddNode(this, JJTADDNODE);
  +                    ASTAndNode jjtn001 = new ASTAndNode(this, JJTANDNODE);
                       boolean jjtc001 = true;
                       jjtree.openNodeScope(jjtn001);
                     }
                     try {
  -/*@egen*/  MultiplicativeExpression()/*@bgen(jjtree)*/
  +/*@egen*/ EqualityExpression()/*@bgen(jjtree)*/
                     } catch (Throwable jjte001) {
                       if (jjtc001) {
                         jjtree.clearNodeScope(jjtn001);
  @@ -2108,35 +1902,251 @@
                         jjtree.closeNodeScope(jjtn001,  2);
                       }
                     }
  -/*@egen*/
  -        | <MINUS>/*@bgen(jjtree) #SubtractNode( 2) */
  -                  {
  -                    ASTSubtractNode jjtn002 = new ASTSubtractNode(this, 
JJTSUBTRACTNODE);
  -                    boolean jjtc002 = true;
  -                    jjtree.openNodeScope(jjtn002);
  +/*@egen*/ )*
  +}
  +
  +void EqualityExpression()       : {}
  +{
  +    RelationalExpression()
  +    (           
  +       <LOGICAL_EQUALS>/*@bgen(jjtree) #EQNode( 2) */
  +                        {
  +                          ASTEQNode jjtn001 = new ASTEQNode(this, JJTEQNODE);
  +                          boolean jjtc001 = true;
  +                          jjtree.openNodeScope(jjtn001);
  +                        }
  +                        try {
  +/*@egen*/ RelationalExpression()/*@bgen(jjtree)*/
  +                        } catch (Throwable jjte001) {
  +                          if (jjtc001) {
  +                            jjtree.clearNodeScope(jjtn001);
  +                            jjtc001 = false;
  +                          } else {
  +                            jjtree.popNode();
  +                          }
  +                          if (jjte001 instanceof RuntimeException) {
  +                            throw (RuntimeException)jjte001;
  +                          }
  +                          if (jjte001 instanceof ParseException) {
  +                            throw (ParseException)jjte001;
  +                          }
  +                          throw (Error)jjte001;
  +                        } finally {
  +                          if (jjtc001) {
  +                            jjtree.closeNodeScope(jjtn001,  2);
  +                          }
  +                        }
  +/*@egen*/
  +     | <LOGICAL_NOT_EQUALS>/*@bgen(jjtree) #NENode( 2) */
  +                            {
  +                              ASTNENode jjtn002 = new ASTNENode(this, JJTNENODE);
  +                              boolean jjtc002 = true;
  +                              jjtree.openNodeScope(jjtn002);
  +                            }
  +                            try {
  +/*@egen*/ RelationalExpression()/*@bgen(jjtree)*/
  +                            } catch (Throwable jjte002) {
  +                              if (jjtc002) {
  +                                jjtree.clearNodeScope(jjtn002);
  +                                jjtc002 = false;
  +                              } else {
  +                                jjtree.popNode();
  +                              }
  +                              if (jjte002 instanceof RuntimeException) {
  +                                throw (RuntimeException)jjte002;
  +                              }
  +                              if (jjte002 instanceof ParseException) {
  +                                throw (ParseException)jjte002;
  +                              }
  +                              throw (Error)jjte002;
  +                            } finally {
  +                              if (jjtc002) {
  +                                jjtree.closeNodeScope(jjtn002,  2);
  +                              }
  +                            }
  +/*@egen*/    
  +    )*
  +}
  +
  +void RelationalExpression()       : {}
  +{
  +    AdditiveExpression() 
  +    (
  +        <LOGICAL_LT>/*@bgen(jjtree) #LTNode( 2) */
  +                      {
  +                        ASTLTNode jjtn001 = new ASTLTNode(this, JJTLTNODE);
  +                        boolean jjtc001 = true;
  +                        jjtree.openNodeScope(jjtn001);
  +                      }
  +                      try {
  +/*@egen*/  AdditiveExpression()/*@bgen(jjtree)*/
  +                      } catch (Throwable jjte001) {
  +                        if (jjtc001) {
  +                          jjtree.clearNodeScope(jjtn001);
  +                          jjtc001 = false;
  +                        } else {
  +                          jjtree.popNode();
  +                        }
  +                        if (jjte001 instanceof RuntimeException) {
  +                          throw (RuntimeException)jjte001;
  +                        }
  +                        if (jjte001 instanceof ParseException) {
  +                          throw (ParseException)jjte001;
  +                        }
  +                        throw (Error)jjte001;
  +                      } finally {
  +                        if (jjtc001) {
  +                          jjtree.closeNodeScope(jjtn001,  2);
  +                        }
  +                      }
  +/*@egen*/
  +      | <LOGICAL_GT>/*@bgen(jjtree) #GTNode( 2) */
  +                      {
  +                        ASTGTNode jjtn002 = new ASTGTNode(this, JJTGTNODE);
  +                        boolean jjtc002 = true;
  +                        jjtree.openNodeScope(jjtn002);
  +                      }
  +                      try {
  +/*@egen*/  AdditiveExpression()/*@bgen(jjtree)*/
  +                      } catch (Throwable jjte002) {
  +                        if (jjtc002) {
  +                          jjtree.clearNodeScope(jjtn002);
  +                          jjtc002 = false;
  +                        } else {
  +                          jjtree.popNode();
  +                        }
  +                        if (jjte002 instanceof RuntimeException) {
  +                          throw (RuntimeException)jjte002;
  +                        }
  +                        if (jjte002 instanceof ParseException) {
  +                          throw (ParseException)jjte002;
  +                        }
  +                        throw (Error)jjte002;
  +                      } finally {
  +                        if (jjtc002) {
  +                          jjtree.closeNodeScope(jjtn002,  2);
  +                        }
  +                      }
  +/*@egen*/
  +      | <LOGICAL_LE>/*@bgen(jjtree) #LENode( 2) */
  +                      {
  +                        ASTLENode jjtn003 = new ASTLENode(this, JJTLENODE);
  +                        boolean jjtc003 = true;
  +                        jjtree.openNodeScope(jjtn003);
  +                      }
  +                      try {
  +/*@egen*/  AdditiveExpression()/*@bgen(jjtree)*/
  +                      } catch (Throwable jjte003) {
  +                        if (jjtc003) {
  +                          jjtree.clearNodeScope(jjtn003);
  +                          jjtc003 = false;
  +                        } else {
  +                          jjtree.popNode();
  +                        }
  +                        if (jjte003 instanceof RuntimeException) {
  +                          throw (RuntimeException)jjte003;
  +                        }
  +                        if (jjte003 instanceof ParseException) {
  +                          throw (ParseException)jjte003;
  +                        }
  +                        throw (Error)jjte003;
  +                      } finally {
  +                        if (jjtc003) {
  +                          jjtree.closeNodeScope(jjtn003,  2);
  +                        }
  +                      }
  +/*@egen*/
  +      | <LOGICAL_GE>/*@bgen(jjtree) #GENode( 2) */
  +                      {
  +                        ASTGENode jjtn004 = new ASTGENode(this, JJTGENODE);
  +                        boolean jjtc004 = true;
  +                        jjtree.openNodeScope(jjtn004);
  +                      }
  +                      try {
  +/*@egen*/  AdditiveExpression()/*@bgen(jjtree)*/
  +                      } catch (Throwable jjte004) {
  +                        if (jjtc004) {
  +                          jjtree.clearNodeScope(jjtn004);
  +                          jjtc004 = false;
  +                        } else {
  +                          jjtree.popNode();
  +                        }
  +                        if (jjte004 instanceof RuntimeException) {
  +                          throw (RuntimeException)jjte004;
  +                        }
  +                        if (jjte004 instanceof ParseException) {
  +                          throw (ParseException)jjte004;
  +                        }
  +                        throw (Error)jjte004;
  +                      } finally {
  +                        if (jjtc004) {
  +                          jjtree.closeNodeScope(jjtn004,  2);
  +                        }
  +                      }
  +/*@egen*/  
  +    )*
  +}
  +
  +void AdditiveExpression()       : {}
  +{
  +    MultiplicativeExpression()
  +    (
  +        <PLUS>/*@bgen(jjtree) #AddNode( 2) */
  +                {
  +                  ASTAddNode jjtn001 = new ASTAddNode(this, JJTADDNODE);
  +                  boolean jjtc001 = true;
  +                  jjtree.openNodeScope(jjtn001);
  +                }
  +                try {
  +/*@egen*/  MultiplicativeExpression()/*@bgen(jjtree)*/
  +                } catch (Throwable jjte001) {
  +                  if (jjtc001) {
  +                    jjtree.clearNodeScope(jjtn001);
  +                    jjtc001 = false;
  +                  } else {
  +                    jjtree.popNode();
                     }
  -                  try {
  -/*@egen*/ MultiplicativeExpression()/*@bgen(jjtree)*/
  -                  } catch (Throwable jjte002) {
  -                    if (jjtc002) {
  -                      jjtree.clearNodeScope(jjtn002);
  -                      jjtc002 = false;
  -                    } else {
  -                      jjtree.popNode();
  -                    }
  -                    if (jjte002 instanceof RuntimeException) {
  -                      throw (RuntimeException)jjte002;
  -                    }
  -                    if (jjte002 instanceof ParseException) {
  -                      throw (ParseException)jjte002;
  -                    }
  -                    throw (Error)jjte002;
  -                  } finally {
  -                    if (jjtc002) {
  -                      jjtree.closeNodeScope(jjtn002,  2);
  -                    }
  +                  if (jjte001 instanceof RuntimeException) {
  +                    throw (RuntimeException)jjte001;
  +                  }
  +                  if (jjte001 instanceof ParseException) {
  +                    throw (ParseException)jjte001;
                     }
  +                  throw (Error)jjte001;
  +                } finally {
  +                  if (jjtc001) {
  +                    jjtree.closeNodeScope(jjtn001,  2);
  +                  }
  +                }
   /*@egen*/
  +      | <MINUS>/*@bgen(jjtree) #SubtractNode( 2) */
  +                {
  +                  ASTSubtractNode jjtn002 = new ASTSubtractNode(this, 
JJTSUBTRACTNODE);
  +                  boolean jjtc002 = true;
  +                  jjtree.openNodeScope(jjtn002);
  +                }
  +                try {
  +/*@egen*/ MultiplicativeExpression()/*@bgen(jjtree)*/
  +                } catch (Throwable jjte002) {
  +                  if (jjtc002) {
  +                    jjtree.clearNodeScope(jjtn002);
  +                    jjtc002 = false;
  +                  } else {
  +                    jjtree.popNode();
  +                  }
  +                  if (jjte002 instanceof RuntimeException) {
  +                    throw (RuntimeException)jjte002;
  +                  }
  +                  if (jjte002 instanceof ParseException) {
  +                    throw (ParseException)jjte002;
  +                  }
  +                  throw (Error)jjte002;
  +                } finally {
  +                  if (jjtc002) {
  +                    jjtree.closeNodeScope(jjtn002,  2);
  +                  }
  +                }
  +/*@egen*/    
       )*
   }
   
  @@ -2144,89 +2154,89 @@
   {
       UnaryExpression()
       (
  -          <MULTIPLY>/*@bgen(jjtree) #MulNode( 2) */
  -                     {
  -                       ASTMulNode jjtn001 = new ASTMulNode(this, JJTMULNODE);
  -                       boolean jjtc001 = true;
  -                       jjtree.openNodeScope(jjtn001);
  -                     }
  -                     try {
  -/*@egen*/ UnaryExpression()/*@bgen(jjtree)*/
  -                     } catch (Throwable jjte001) {
  -                       if (jjtc001) {
  -                         jjtree.clearNodeScope(jjtn001);
  -                         jjtc001 = false;
  -                       } else {
  -                         jjtree.popNode();
  -                       }
  -                       if (jjte001 instanceof RuntimeException) {
  -                         throw (RuntimeException)jjte001;
  -                       }
  -                       if (jjte001 instanceof ParseException) {
  -                         throw (ParseException)jjte001;
  -                       }
  -                       throw (Error)jjte001;
  -                     } finally {
  -                       if (jjtc001) {
  -                         jjtree.closeNodeScope(jjtn001,  2);
  -                       }
  -                     }
  +            <MULTIPLY>/*@bgen(jjtree) #MulNode( 2) */
  +                        {
  +                          ASTMulNode jjtn001 = new ASTMulNode(this, JJTMULNODE);
  +                          boolean jjtc001 = true;
  +                          jjtree.openNodeScope(jjtn001);
  +                        }
  +                        try {
  +/*@egen*/  UnaryExpression()/*@bgen(jjtree)*/
  +                        } catch (Throwable jjte001) {
  +                          if (jjtc001) {
  +                            jjtree.clearNodeScope(jjtn001);
  +                            jjtc001 = false;
  +                          } else {
  +                            jjtree.popNode();
  +                          }
  +                          if (jjte001 instanceof RuntimeException) {
  +                            throw (RuntimeException)jjte001;
  +                          }
  +                          if (jjte001 instanceof ParseException) {
  +                            throw (ParseException)jjte001;
  +                          }
  +                          throw (Error)jjte001;
  +                        } finally {
  +                          if (jjtc001) {
  +                            jjtree.closeNodeScope(jjtn001,  2);
  +                          }
  +                        }
  +/*@egen*/
  +          | <DIVIDE>/*@bgen(jjtree) #DivNode( 2) */
  +                      {
  +                        ASTDivNode jjtn002 = new ASTDivNode(this, JJTDIVNODE);
  +                        boolean jjtc002 = true;
  +                        jjtree.openNodeScope(jjtn002);
  +                      }
  +                      try {
  +/*@egen*/  UnaryExpression()/*@bgen(jjtree)*/
  +                      } catch (Throwable jjte002) {
  +                        if (jjtc002) {
  +                          jjtree.clearNodeScope(jjtn002);
  +                          jjtc002 = false;
  +                        } else {
  +                          jjtree.popNode();
  +                        }
  +                        if (jjte002 instanceof RuntimeException) {
  +                          throw (RuntimeException)jjte002;
  +                        }
  +                        if (jjte002 instanceof ParseException) {
  +                          throw (ParseException)jjte002;
  +                        }
  +                        throw (Error)jjte002;
  +                      } finally {
  +                        if (jjtc002) {
  +                          jjtree.closeNodeScope(jjtn002,  2);
  +                        }
  +                      }
   /*@egen*/
  -        | <DIVIDE>/*@bgen(jjtree) #DivNode( 2) */
  -                     {
  -                       ASTDivNode jjtn002 = new ASTDivNode(this, JJTDIVNODE);
  -                       boolean jjtc002 = true;
  -                       jjtree.openNodeScope(jjtn002);
  -                     }
  -                     try {
  -/*@egen*/   UnaryExpression()/*@bgen(jjtree)*/
  -                     } catch (Throwable jjte002) {
  -                       if (jjtc002) {
  -                         jjtree.clearNodeScope(jjtn002);
  -                         jjtc002 = false;
  -                       } else {
  -                         jjtree.popNode();
  -                       }
  -                       if (jjte002 instanceof RuntimeException) {
  -                         throw (RuntimeException)jjte002;
  -                       }
  -                       if (jjte002 instanceof ParseException) {
  -                         throw (ParseException)jjte002;
  -                       }
  -                       throw (Error)jjte002;
  -                     } finally {
  -                       if (jjtc002) {
  -                         jjtree.closeNodeScope(jjtn002,  2);
  +          | <MODULUS>/*@bgen(jjtree) #ModNode( 2) */
  +                       {
  +                         ASTModNode jjtn003 = new ASTModNode(this, JJTMODNODE);
  +                         boolean jjtc003 = true;
  +                         jjtree.openNodeScope(jjtn003);
                          }
  -                     }
  -/*@egen*/
  -        | <MODULUS>/*@bgen(jjtree) #ModNode( 2) */
  -                     {
  -                       ASTModNode jjtn003 = new ASTModNode(this, JJTMODNODE);
  -                       boolean jjtc003 = true;
  -                       jjtree.openNodeScope(jjtn003);
  -                     }
  -                     try {
  +                       try {
   /*@egen*/  UnaryExpression()/*@bgen(jjtree)*/
  -                     } catch (Throwable jjte003) {
  -                       if (jjtc003) {
  -                         jjtree.clearNodeScope(jjtn003);
  -                         jjtc003 = false;
  -                       } else {
  -                         jjtree.popNode();
  -                       }
  -                       if (jjte003 instanceof RuntimeException) {
  -                         throw (RuntimeException)jjte003;
  -                       }
  -                       if (jjte003 instanceof ParseException) {
  -                         throw (ParseException)jjte003;
  -                       }
  -                       throw (Error)jjte003;
  -                     } finally {
  -                       if (jjtc003) {
  -                         jjtree.closeNodeScope(jjtn003,  2);
  +                       } catch (Throwable jjte003) {
  +                         if (jjtc003) {
  +                           jjtree.clearNodeScope(jjtn003);
  +                           jjtc003 = false;
  +                         } else {
  +                           jjtree.popNode();
  +                         }
  +                         if (jjte003 instanceof RuntimeException) {
  +                           throw (RuntimeException)jjte003;
  +                         }
  +                         if (jjte003 instanceof ParseException) {
  +                           throw (ParseException)jjte003;
  +                         }
  +                         throw (Error)jjte003;
  +                       } finally {
  +                         if (jjtc003) {
  +                           jjtree.closeNodeScope(jjtn003,  2);
  +                         }
                          }
  -                     }
   /*@egen*/
       )*
   }
  @@ -2234,45 +2244,49 @@
   void UnaryExpression()       : {}
   {
       <LOGICAL_NOT>/*@bgen(jjtree) #NotNode( 1) */
  -                  {
  -                    ASTNotNode jjtn001 = new ASTNotNode(this, JJTNOTNODE);
  -                    boolean jjtc001 = true;
  -                    jjtree.openNodeScope(jjtn001);
  -                  }
  -                  try {
  -/*@egen*/ UnaryExpression()/*@bgen(jjtree)*/
  -                  } catch (Throwable jjte001) {
  -                    if (jjtc001) {
  -                      jjtree.clearNodeScope(jjtn001);
  -                      jjtc001 = false;
  -                    } else {
  -                      jjtree.popNode();
  -                    }
  -                    if (jjte001 instanceof RuntimeException) {
  -                      throw (RuntimeException)jjte001;
  -                    }
  -                    if (jjte001 instanceof ParseException) {
  -                      throw (ParseException)jjte001;
  -                    }
  -                    throw (Error)jjte001;
  -                  } finally {
  -                    if (jjtc001) {
  -                      jjtree.closeNodeScope(jjtn001,  1);
  -                    }
  -                  }
  +                   {
  +                     ASTNotNode jjtn001 = new ASTNotNode(this, JJTNOTNODE);
  +                     boolean jjtc001 = true;
  +                     jjtree.openNodeScope(jjtn001);
  +                   }
  +                   try {
  +/*@egen*/  UnaryExpression()/*@bgen(jjtree)*/
  +                   } catch (Throwable jjte001) {
  +                     if (jjtc001) {
  +                       jjtree.clearNodeScope(jjtn001);
  +                       jjtc001 = false;
  +                     } else {
  +                       jjtree.popNode();
  +                     }
  +                     if (jjte001 instanceof RuntimeException) {
  +                       throw (RuntimeException)jjte001;
  +                     }
  +                     if (jjte001 instanceof ParseException) {
  +                       throw (ParseException)jjte001;
  +                     }
  +                     throw (Error)jjte001;
  +                   } finally {
  +                     if (jjtc001) {
  +                       jjtree.closeNodeScope(jjtn001,  1);
  +                     }
  +                   }
   /*@egen*/
  -|   PrimaryExpression()
  +|   PrimaryExpression() 
   }
   
   void PrimaryExpression()       : {}
  -{    
  +{  
  +[<WHITESPACE>] 
  +(  
       StringLiteral()
  -|   NumberLiteral()    
  -|   Reference()
  -|   ObjectArray()
  -|   True()
  -|   False()
  -|   <LPAREN> Expression() <RPAREN>
  +  | NumberLiteral()    
  +  | Reference()
  +  | ObjectArray()
  +  | True()
  +  | False()
  +  | <LPAREN>  Expression()  <RPAREN>
  +)
  +[<WHITESPACE>]
   }
   
   
  
  
  
  1.15      +39 -39    
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.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ParserConstants.java      2000/11/11 22:47:57     1.14
  +++ ParserConstants.java      2000/11/19 23:28:49     1.15
  @@ -21,43 +21,44 @@
     int SINGLE_LINE_COMMENT = 18;
     int FORMAL_COMMENT = 19;
     int MULTI_LINE_COMMENT = 20;
  -  int STRING_LITERAL = 24;
  -  int TRUE = 25;
  -  int FALSE = 26;
  -  int NEWLINE = 27;
  -  int MINUS = 28;
  -  int PLUS = 29;
  -  int MULTIPLY = 30;
  -  int DIVIDE = 31;
  -  int MODULUS = 32;
  -  int LOGICAL_AND = 33;
  -  int LOGICAL_OR = 34;
  -  int LOGICAL_LT = 35;
  -  int LOGICAL_LE = 36;
  -  int LOGICAL_GT = 37;
  -  int LOGICAL_GE = 38;
  -  int LOGICAL_EQUALS = 39;
  -  int LOGICAL_NOT_EQUALS = 40;
  -  int LOGICAL_NOT = 41;
  -  int EQUALS = 42;
  -  int END = 43;
  -  int IF_DIRECTIVE = 44;
  -  int ELSEIF_DIRECTIVE = 45;
  -  int ELSE_DIRECTIVE = 46;
  -  int STOP_DIRECTIVE = 47;
  -  int DIGIT = 48;
  -  int NUMBER_LITERAL = 49;
  -  int LETTER = 50;
  -  int WORD = 51;
  -  int ALPHA_CHAR = 52;
  -  int ALPHANUM_CHAR = 53;
  -  int IDENTIFIER_CHAR = 54;
  -  int IDENTIFIER = 55;
  -  int DOT = 56;
  -  int LCURLY = 57;
  -  int RCURLY = 58;
  -  int REFERENCE_TERMINATOR = 59;
  -  int DIRECTIVE_TERMINATOR = 60;
  +  int WHITESPACE = 22;
  +  int STRING_LITERAL = 23;
  +  int TRUE = 24;
  +  int FALSE = 25;
  +  int NEWLINE = 26;
  +  int MINUS = 27;
  +  int PLUS = 28;
  +  int MULTIPLY = 29;
  +  int DIVIDE = 30;
  +  int MODULUS = 31;
  +  int LOGICAL_AND = 32;
  +  int LOGICAL_OR = 33;
  +  int LOGICAL_LT = 34;
  +  int LOGICAL_LE = 35;
  +  int LOGICAL_GT = 36;
  +  int LOGICAL_GE = 37;
  +  int LOGICAL_EQUALS = 38;
  +  int LOGICAL_NOT_EQUALS = 39;
  +  int LOGICAL_NOT = 40;
  +  int EQUALS = 41;
  +  int END = 42;
  +  int IF_DIRECTIVE = 43;
  +  int ELSEIF_DIRECTIVE = 44;
  +  int ELSE_DIRECTIVE = 45;
  +  int STOP_DIRECTIVE = 46;
  +  int DIGIT = 47;
  +  int NUMBER_LITERAL = 48;
  +  int LETTER = 49;
  +  int WORD = 50;
  +  int ALPHA_CHAR = 51;
  +  int ALPHANUM_CHAR = 52;
  +  int IDENTIFIER_CHAR = 53;
  +  int IDENTIFIER = 54;
  +  int DOT = 55;
  +  int LCURLY = 56;
  +  int RCURLY = 57;
  +  int REFERENCE_TERMINATOR = 58;
  +  int DIRECTIVE_TERMINATOR = 59;
   
     int DIRECTIVE = 0;
     int REFMODIFIER = 1;
  @@ -92,8 +93,7 @@
       "\"*#\"",
       "\"*#\"",
       "<token of kind 21>",
  -    "\" \"",
  -    "\"\\t\"",
  +    "<WHITESPACE>",
       "<STRING_LITERAL>",
       "\"true\"",
       "\"false\"",
  
  
  
  1.28      +321 -305  
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.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- ParserTokenManager.java   2000/11/16 20:25:04     1.27
  +++ ParserTokenManager.java   2000/11/19 23:28:49     1.28
  @@ -5,7 +5,7 @@
   import org.apache.velocity.runtime.Runtime;
   import org.apache.velocity.runtime.parser.node.*;
   import org.apache.velocity.runtime.directive.Directive;
  -//import org.apache.velocity.runtime.directive.Macro;
  +import org.apache.velocity.runtime.directive.Macro;
   import org.apache.velocity.util.StringUtils;
   
   public class ParserTokenManager implements ParserConstants
  @@ -196,16 +196,16 @@
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x6000000L) != 0L)
  -         {
  -            jjmatchedKind = 51;
  -            return 18;
  -         }
            if ((active0 & 0x400L) != 0L)
            {
               jjmatchedKind = 9;
               return -1;
            }
  +         if ((active0 & 0x3000000L) != 0L)
  +         {
  +            jjmatchedKind = 50;
  +            return 19;
  +         }
            if ((active0 & 0x6800L) != 0L)
               return 9;
            return -1;
  @@ -219,32 +219,32 @@
               }
               return -1;
            }
  -         if ((active0 & 0x6000000L) != 0L)
  +         if ((active0 & 0x2000L) != 0L)
  +            return 7;
  +         if ((active0 & 0x3000000L) != 0L)
            {
  -            jjmatchedKind = 51;
  +            jjmatchedKind = 50;
               jjmatchedPos = 1;
  -            return 18;
  +            return 19;
            }
  -         if ((active0 & 0x2000L) != 0L)
  -            return 7;
            return -1;
         case 2:
  -         if ((active0 & 0x6000000L) != 0L)
  +         if ((active0 & 0x3000000L) != 0L)
            {
  -            jjmatchedKind = 51;
  +            jjmatchedKind = 50;
               jjmatchedPos = 2;
  -            return 18;
  +            return 19;
            }
            return -1;
         case 3:
            if ((active0 & 0x2000000L) != 0L)
  -            return 18;
  -         if ((active0 & 0x4000000L) != 0L)
            {
  -            jjmatchedKind = 51;
  +            jjmatchedKind = 50;
               jjmatchedPos = 3;
  -            return 18;
  +            return 19;
            }
  +         if ((active0 & 0x1000000L) != 0L)
  +            return 19;
            return -1;
         default :
            return -1;
  @@ -273,48 +273,48 @@
      switch(curChar)
      {
         case 33:
  -         jjmatchedKind = 41;
  -         return jjMoveStringLiteralDfa1_0(0x10000000000L);
  +         jjmatchedKind = 40;
  +         return jjMoveStringLiteralDfa1_0(0x8000000000L);
         case 35:
            jjmatchedKind = 14;
            return jjMoveStringLiteralDfa1_0(0x2800L);
         case 36:
            return jjMoveStringLiteralDfa1_0(0x400L);
         case 37:
  -         return jjStopAtPos(0, 32);
  +         return jjStopAtPos(0, 31);
         case 38:
  -         return jjMoveStringLiteralDfa1_0(0x200000000L);
  +         return jjMoveStringLiteralDfa1_0(0x100000000L);
         case 40:
            return jjStopAtPos(0, 4);
         case 42:
  -         return jjStopAtPos(0, 30);
  -      case 43:
            return jjStopAtPos(0, 29);
  +      case 43:
  +         return jjStopAtPos(0, 28);
         case 44:
            return jjStopAtPos(0, 3);
         case 45:
  -         return jjStopAtPos(0, 28);
  +         return jjStopAtPos(0, 27);
         case 47:
  -         return jjStopAtPos(0, 31);
  +         return jjStopAtPos(0, 30);
         case 60:
  -         jjmatchedKind = 35;
  -         return jjMoveStringLiteralDfa1_0(0x1000000000L);
  +         jjmatchedKind = 34;
  +         return jjMoveStringLiteralDfa1_0(0x800000000L);
         case 61:
  -         jjmatchedKind = 42;
  -         return jjMoveStringLiteralDfa1_0(0x8000000000L);
  -      case 62:
  -         jjmatchedKind = 37;
  +         jjmatchedKind = 41;
            return jjMoveStringLiteralDfa1_0(0x4000000000L);
  +      case 62:
  +         jjmatchedKind = 36;
  +         return jjMoveStringLiteralDfa1_0(0x2000000000L);
         case 91:
            return jjStopAtPos(0, 1);
         case 93:
            return jjStopAtPos(0, 2);
         case 102:
  -         return jjMoveStringLiteralDfa1_0(0x4000000L);
  -      case 116:
            return jjMoveStringLiteralDfa1_0(0x2000000L);
  +      case 116:
  +         return jjMoveStringLiteralDfa1_0(0x1000000L);
         case 124:
  -         return jjMoveStringLiteralDfa1_0(0x400000000L);
  +         return jjMoveStringLiteralDfa1_0(0x200000000L);
         default :
            return jjMoveNfa_0(0, 0);
      }
  @@ -337,30 +337,30 @@
               return jjStopAtPos(1, 11);
            break;
         case 38:
  -         if ((active0 & 0x200000000L) != 0L)
  -            return jjStopAtPos(1, 33);
  +         if ((active0 & 0x100000000L) != 0L)
  +            return jjStopAtPos(1, 32);
            break;
         case 42:
            if ((active0 & 0x2000L) != 0L)
               return jjStartNfaWithStates_0(1, 13, 7);
            break;
         case 61:
  -         if ((active0 & 0x1000000000L) != 0L)
  -            return jjStopAtPos(1, 36);
  +         if ((active0 & 0x800000000L) != 0L)
  +            return jjStopAtPos(1, 35);
  +         else if ((active0 & 0x2000000000L) != 0L)
  +            return jjStopAtPos(1, 37);
            else if ((active0 & 0x4000000000L) != 0L)
               return jjStopAtPos(1, 38);
            else if ((active0 & 0x8000000000L) != 0L)
               return jjStopAtPos(1, 39);
  -         else if ((active0 & 0x10000000000L) != 0L)
  -            return jjStopAtPos(1, 40);
            break;
         case 97:
  -         return jjMoveStringLiteralDfa2_0(active0, 0x4000000L);
  -      case 114:
            return jjMoveStringLiteralDfa2_0(active0, 0x2000000L);
  +      case 114:
  +         return jjMoveStringLiteralDfa2_0(active0, 0x1000000L);
         case 124:
  -         if ((active0 & 0x400000000L) != 0L)
  -            return jjStopAtPos(1, 34);
  +         if ((active0 & 0x200000000L) != 0L)
  +            return jjStopAtPos(1, 33);
            break;
         default :
            break;
  @@ -379,9 +379,9 @@
      switch(curChar)
      {
         case 108:
  -         return jjMoveStringLiteralDfa3_0(active0, 0x4000000L);
  -      case 117:
            return jjMoveStringLiteralDfa3_0(active0, 0x2000000L);
  +      case 117:
  +         return jjMoveStringLiteralDfa3_0(active0, 0x1000000L);
         default :
            break;
      }
  @@ -399,11 +399,11 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x2000000L) != 0L)
  -            return jjStartNfaWithStates_0(3, 25, 18);
  +         if ((active0 & 0x1000000L) != 0L)
  +            return jjStartNfaWithStates_0(3, 24, 19);
            break;
         case 115:
  -         return jjMoveStringLiteralDfa4_0(active0, 0x4000000L);
  +         return jjMoveStringLiteralDfa4_0(active0, 0x2000000L);
         default :
            break;
      }
  @@ -421,8 +421,8 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x4000000L) != 0L)
  -            return jjStartNfaWithStates_0(4, 26, 18);
  +         if ((active0 & 0x2000000L) != 0L)
  +            return jjStartNfaWithStates_0(4, 25, 19);
            break;
         default :
            break;
  @@ -466,7 +466,7 @@
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 19;
  +   jjnewStateCnt = 20;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -484,17 +484,23 @@
                  case 0:
                     if ((0x3ff000000000000L & l) != 0L)
                     {
  -                     if (kind > 49)
  -                        kind = 49;
  -                     jjCheckNAdd(17);
  +                     if (kind > 48)
  +                        kind = 48;
  +                     jjCheckNAdd(18);
                     }
                     else if ((0x2400L & l) != 0L)
  +                  {
  +                     if (kind > 26)
  +                        kind = 26;
  +                  }
  +                  else if ((0x100000200L & l) != 0L)
                     {
  -                     if (kind > 27)
  -                        kind = 27;
  +                     if (kind > 22)
  +                        kind = 22;
  +                     jjCheckNAdd(11);
                     }
                     else if (curChar == 34)
  -                     jjCheckNAddTwoStates(12, 13);
  +                     jjCheckNAddTwoStates(13, 14);
                     else if (curChar == 35)
                        jjstateSet[jjnewStateCnt++] = 9;
                     else if (curChar == 36)
  @@ -509,7 +515,7 @@
                        jjCheckNAddStates(0, 2);
                     }
                     if (curChar == 13)
  -                     jjstateSet[jjnewStateCnt++] = 15;
  +                     jjstateSet[jjnewStateCnt++] = 16;
                     break;
                  case 1:
                     if ((0x100000200L & l) != 0L)
  @@ -548,35 +554,42 @@
                        jjstateSet[jjnewStateCnt++] = 9;
                     break;
                  case 11:
  -                  if (curChar == 34)
  -                     jjCheckNAddTwoStates(12, 13);
  +                  if ((0x100000200L & l) == 0L)
  +                     break;
  +                  if (kind > 22)
  +                     kind = 22;
  +                  jjCheckNAdd(11);
                     break;
                  case 12:
  -                  if ((0xfffffffbffffdbffL & l) != 0L)
  -                     jjCheckNAddTwoStates(12, 13);
  +                  if (curChar == 34)
  +                     jjCheckNAddTwoStates(13, 14);
                     break;
                  case 13:
  -                  if (curChar == 34 && kind > 24)
  -                     kind = 24;
  +                  if ((0xfffffffbffffdbffL & l) != 0L)
  +                     jjCheckNAddTwoStates(13, 14);
                     break;
                  case 14:
  -                  if ((0x2400L & l) != 0L && kind > 27)
  -                     kind = 27;
  +                  if (curChar == 34 && kind > 23)
  +                     kind = 23;
                     break;
                  case 15:
  -                  if (curChar == 10 && kind > 27)
  -                     kind = 27;
  +                  if ((0x2400L & l) != 0L && kind > 26)
  +                     kind = 26;
                     break;
                  case 16:
  -                  if (curChar == 13)
  -                     jjstateSet[jjnewStateCnt++] = 15;
  +                  if (curChar == 10 && kind > 26)
  +                     kind = 26;
                     break;
                  case 17:
  +                  if (curChar == 13)
  +                     jjstateSet[jjnewStateCnt++] = 16;
  +                  break;
  +               case 18:
                     if ((0x3ff000000000000L & l) == 0L)
                        break;
  -                  if (kind > 49)
  -                     kind = 49;
  -                  jjCheckNAdd(17);
  +                  if (kind > 48)
  +                     kind = 48;
  +                  jjCheckNAdd(18);
                     break;
                  default : break;
               }
  @@ -592,9 +605,9 @@
                  case 0:
                     if ((0x7fffffe07fffffeL & l) != 0L)
                     {
  -                     if (kind > 51)
  -                        kind = 51;
  -                     jjCheckNAdd(18);
  +                     if (kind > 50)
  +                        kind = 50;
  +                     jjCheckNAdd(19);
                     }
                     else if (curChar == 92)
                        jjCheckNAddTwoStates(5, 6);
  @@ -607,15 +620,15 @@
                     if (kind > 12)
                        kind = 12;
                     break;
  -               case 12:
  +               case 13:
                     jjAddStates(3, 4);
                     break;
  -               case 18:
  +               case 19:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
  -                  if (kind > 51)
  -                     kind = 51;
  -                  jjCheckNAdd(18);
  +                  if (kind > 50)
  +                     kind = 50;
  +                  jjCheckNAdd(19);
                     break;
                  default : break;
               }
  @@ -633,7 +646,7 @@
                     if ((jjbitVec0[i2] & l2) != 0L && kind > 12)
                        kind = 12;
                     break;
  -               case 12:
  +               case 13:
                     if ((jjbitVec0[i2] & l2) != 0L)
                        jjAddStates(3, 4);
                     break;
  @@ -648,7 +661,7 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 19 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 20 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
  @@ -828,9 +841,9 @@
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x600000000000L) != 0L)
  +         if ((active0 & 0x300000000000L) != 0L)
            {
  -            jjmatchedKind = 51;
  +            jjmatchedKind = 50;
               return 11;
            }
            if ((active0 & 0x6800L) != 0L)
  @@ -840,22 +853,22 @@
               jjmatchedKind = 9;
               return -1;
            }
  -         if ((active0 & 0x900000000000L) != 0L)
  +         if ((active0 & 0x480000000000L) != 0L)
            {
  -            jjmatchedKind = 51;
  +            jjmatchedKind = 50;
               return 14;
            }
            return -1;
         case 1:
            if ((active0 & 0x2000L) != 0L)
               return 2;
  -         if ((active0 & 0xe00000000000L) != 0L)
  +         if ((active0 & 0x700000000000L) != 0L)
            {
  -            jjmatchedKind = 51;
  +            jjmatchedKind = 50;
               jjmatchedPos = 1;
               return 14;
            }
  -         if ((active0 & 0x100000000000L) != 0L)
  +         if ((active0 & 0x80000000000L) != 0L)
               return 14;
            if ((active0 & 0x400L) != 0L)
            {
  @@ -868,21 +881,21 @@
            }
            return -1;
         case 2:
  -         if ((active0 & 0xe00000000000L) != 0L)
  +         if ((active0 & 0x700000000000L) != 0L)
            {
  -            jjmatchedKind = 51;
  +            jjmatchedKind = 50;
               jjmatchedPos = 2;
               return 14;
            }
            return -1;
         case 3:
  -         if ((active0 & 0xe00000000000L) != 0L)
  +         if ((active0 & 0x700000000000L) != 0L)
               return 14;
            return -1;
         case 4:
  -         if ((active0 & 0x200000000000L) != 0L)
  +         if ((active0 & 0x100000000000L) != 0L)
            {
  -            jjmatchedKind = 51;
  +            jjmatchedKind = 50;
               jjmatchedPos = 4;
               return 14;
            }
  @@ -913,11 +926,11 @@
         case 36:
            return jjMoveStringLiteralDfa1_4(0x400L);
         case 101:
  -         return jjMoveStringLiteralDfa1_4(0x600000000000L);
  +         return jjMoveStringLiteralDfa1_4(0x300000000000L);
         case 105:
  -         return jjMoveStringLiteralDfa1_4(0x100000000000L);
  +         return jjMoveStringLiteralDfa1_4(0x80000000000L);
         case 115:
  -         return jjMoveStringLiteralDfa1_4(0x800000000000L);
  +         return jjMoveStringLiteralDfa1_4(0x400000000000L);
         default :
            return jjMoveNfa_4(5, 0);
      }
  @@ -944,13 +957,13 @@
               return jjStartNfaWithStates_4(1, 13, 2);
            break;
         case 102:
  -         if ((active0 & 0x100000000000L) != 0L)
  -            return jjStartNfaWithStates_4(1, 44, 14);
  +         if ((active0 & 0x80000000000L) != 0L)
  +            return jjStartNfaWithStates_4(1, 43, 14);
            break;
         case 108:
  -         return jjMoveStringLiteralDfa2_4(active0, 0x600000000000L);
  +         return jjMoveStringLiteralDfa2_4(active0, 0x300000000000L);
         case 116:
  -         return jjMoveStringLiteralDfa2_4(active0, 0x800000000000L);
  +         return jjMoveStringLiteralDfa2_4(active0, 0x400000000000L);
         default :
            break;
      }
  @@ -968,9 +981,9 @@
      switch(curChar)
      {
         case 111:
  -         return jjMoveStringLiteralDfa3_4(active0, 0x800000000000L);
  +         return jjMoveStringLiteralDfa3_4(active0, 0x400000000000L);
         case 115:
  -         return jjMoveStringLiteralDfa3_4(active0, 0x600000000000L);
  +         return jjMoveStringLiteralDfa3_4(active0, 0x300000000000L);
         default :
            break;
      }
  @@ -988,15 +1001,15 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x400000000000L) != 0L)
  +         if ((active0 & 0x200000000000L) != 0L)
            {
  -            jjmatchedKind = 46;
  +            jjmatchedKind = 45;
               jjmatchedPos = 3;
            }
  -         return jjMoveStringLiteralDfa4_4(active0, 0x200000000000L);
  +         return jjMoveStringLiteralDfa4_4(active0, 0x100000000000L);
         case 112:
  -         if ((active0 & 0x800000000000L) != 0L)
  -            return jjStartNfaWithStates_4(3, 47, 14);
  +         if ((active0 & 0x400000000000L) != 0L)
  +            return jjStartNfaWithStates_4(3, 46, 14);
            break;
         default :
            break;
  @@ -1015,7 +1028,7 @@
      switch(curChar)
      {
         case 105:
  -         return jjMoveStringLiteralDfa5_4(active0, 0x200000000000L);
  +         return jjMoveStringLiteralDfa5_4(active0, 0x100000000000L);
         default :
            break;
      }
  @@ -1033,8 +1046,8 @@
      switch(curChar)
      {
         case 102:
  -         if ((active0 & 0x200000000000L) != 0L)
  -            return jjStartNfaWithStates_4(5, 45, 14);
  +         if ((active0 & 0x100000000000L) != 0L)
  +            return jjStartNfaWithStates_4(5, 44, 14);
            break;
         default :
            break;
  @@ -1063,8 +1076,8 @@
                  case 5:
                     if ((0x3ff000000000000L & l) != 0L)
                     {
  -                     if (kind > 49)
  -                        kind = 49;
  +                     if (kind > 48)
  +                        kind = 48;
                        jjCheckNAdd(13);
                     }
                     else if (curChar == 35)
  @@ -1096,12 +1109,12 @@
                        jjAddStates(5, 7);
                     break;
                  case 8:
  -                  if ((0x2400L & l) != 0L && kind > 43)
  -                     kind = 43;
  +                  if ((0x2400L & l) != 0L && kind > 42)
  +                     kind = 42;
                     break;
                  case 9:
  -                  if (curChar == 10 && kind > 43)
  -                     kind = 43;
  +                  if (curChar == 10 && kind > 42)
  +                     kind = 42;
                     break;
                  case 10:
                     if (curChar == 13)
  @@ -1110,8 +1123,8 @@
                  case 13:
                     if ((0x3ff000000000000L & l) == 0L)
                        break;
  -                  if (kind > 49)
  -                     kind = 49;
  +                  if (kind > 48)
  +                     kind = 48;
                     jjCheckNAdd(13);
                     break;
                  default : break;
  @@ -1128,8 +1141,8 @@
                  case 5:
                     if ((0x7fffffe07fffffeL & l) != 0L)
                     {
  -                     if (kind > 51)
  -                        kind = 51;
  +                     if (kind > 50)
  +                        kind = 50;
                        jjCheckNAdd(14);
                     }
                     else if (curChar == 92)
  @@ -1140,8 +1153,8 @@
                  case 11:
                     if ((0x7fffffe07fffffeL & l) != 0L)
                     {
  -                     if (kind > 51)
  -                        kind = 51;
  +                     if (kind > 50)
  +                        kind = 50;
                        jjCheckNAdd(14);
                     }
                     if (curChar == 110)
  @@ -1158,8 +1171,8 @@
                  case 6:
                     if (curChar != 100)
                        break;
  -                  if (kind > 43)
  -                     kind = 43;
  +                  if (kind > 42)
  +                     kind = 42;
                     jjAddStates(5, 7);
                     break;
                  case 12:
  @@ -1169,8 +1182,8 @@
                  case 14:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
  -                  if (kind > 51)
  -                     kind = 51;
  +                  if (kind > 50)
  +                     kind = 50;
                     jjCheckNAdd(14);
                     break;
                  default : break;
  @@ -1844,9 +1857,9 @@
               jjmatchedKind = 9;
               return -1;
            }
  -         if ((active0 & 0x6000000L) != 0L)
  +         if ((active0 & 0x3000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               return 10;
            }
            return -1;
  @@ -1862,27 +1875,27 @@
               }
               return -1;
            }
  -         if ((active0 & 0x6000000L) != 0L)
  +         if ((active0 & 0x3000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               jjmatchedPos = 1;
               return 10;
            }
            return -1;
         case 2:
  -         if ((active0 & 0x6000000L) != 0L)
  +         if ((active0 & 0x3000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               jjmatchedPos = 2;
               return 10;
            }
            return -1;
         case 3:
  -         if ((active0 & 0x2000000L) != 0L)
  +         if ((active0 & 0x1000000L) != 0L)
               return 10;
  -         if ((active0 & 0x4000000L) != 0L)
  +         if ((active0 & 0x2000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               jjmatchedPos = 3;
               return 10;
            }
  @@ -1913,13 +1926,13 @@
         case 36:
            return jjMoveStringLiteralDfa1_5(0x400L);
         case 102:
  -         return jjMoveStringLiteralDfa1_5(0x4000000L);
  -      case 116:
            return jjMoveStringLiteralDfa1_5(0x2000000L);
  +      case 116:
  +         return jjMoveStringLiteralDfa1_5(0x1000000L);
         case 123:
  -         return jjStopAtPos(0, 57);
  +         return jjStopAtPos(0, 56);
         case 125:
  -         return jjStopAtPos(0, 58);
  +         return jjStopAtPos(0, 57);
         default :
            return jjMoveNfa_5(5, 0);
      }
  @@ -1946,9 +1959,9 @@
               return jjStartNfaWithStates_5(1, 13, 2);
            break;
         case 97:
  -         return jjMoveStringLiteralDfa2_5(active0, 0x4000000L);
  -      case 114:
            return jjMoveStringLiteralDfa2_5(active0, 0x2000000L);
  +      case 114:
  +         return jjMoveStringLiteralDfa2_5(active0, 0x1000000L);
         default :
            break;
      }
  @@ -1966,9 +1979,9 @@
      switch(curChar)
      {
         case 108:
  -         return jjMoveStringLiteralDfa3_5(active0, 0x4000000L);
  -      case 117:
            return jjMoveStringLiteralDfa3_5(active0, 0x2000000L);
  +      case 117:
  +         return jjMoveStringLiteralDfa3_5(active0, 0x1000000L);
         default :
            break;
      }
  @@ -1986,11 +1999,11 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x2000000L) != 0L)
  -            return jjStartNfaWithStates_5(3, 25, 10);
  +         if ((active0 & 0x1000000L) != 0L)
  +            return jjStartNfaWithStates_5(3, 24, 10);
            break;
         case 115:
  -         return jjMoveStringLiteralDfa4_5(active0, 0x4000000L);
  +         return jjMoveStringLiteralDfa4_5(active0, 0x2000000L);
         default :
            break;
      }
  @@ -2008,8 +2021,8 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x4000000L) != 0L)
  -            return jjStartNfaWithStates_5(4, 26, 10);
  +         if ((active0 & 0x2000000L) != 0L)
  +            return jjStartNfaWithStates_5(4, 25, 10);
            break;
         default :
            break;
  @@ -2073,14 +2086,14 @@
                        jjCheckNAddTwoStates(7, 8);
                     break;
                  case 8:
  -                  if (curChar == 34 && kind > 24)
  -                     kind = 24;
  +                  if (curChar == 34 && kind > 23)
  +                     kind = 23;
                     break;
                  case 10:
                     if ((0x3ff200000000000L & l) == 0L)
                        break;
  -                  if (kind > 55)
  -                     kind = 55;
  +                  if (kind > 54)
  +                     kind = 54;
                     jjstateSet[jjnewStateCnt++] = 10;
                     break;
                  case 11:
  @@ -2101,8 +2114,8 @@
                  case 5:
                     if ((0x7fffffe07fffffeL & l) != 0L)
                     {
  -                     if (kind > 55)
  -                        kind = 55;
  +                     if (kind > 54)
  +                        kind = 54;
                        jjCheckNAdd(10);
                     }
                     else if (curChar == 92)
  @@ -2122,20 +2135,20 @@
                  case 9:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
  -                  if (kind > 55)
  -                     kind = 55;
  +                  if (kind > 54)
  +                     kind = 54;
                     jjCheckNAdd(10);
                     break;
                  case 10:
                     if ((0x7fffffe87fffffeL & l) == 0L)
                        break;
  -                  if (kind > 55)
  -                     kind = 55;
  +                  if (kind > 54)
  +                     kind = 54;
                     jjCheckNAdd(10);
                     break;
                  case 12:
  -                  if ((0x7fffffe07fffffeL & l) != 0L && kind > 56)
  -                     kind = 56;
  +                  if ((0x7fffffe07fffffeL & l) != 0L && kind > 55)
  +                     kind = 55;
                     break;
                  default : break;
               }
  @@ -2179,11 +2192,6 @@
      switch (pos)
      {
         case 0:
  -         if ((active0 & 0x6000000L) != 0L)
  -         {
  -            jjmatchedKind = 55;
  -            return 11;
  -         }
            if ((active0 & 0x6800L) != 0L)
               return 4;
            if ((active0 & 0x400L) != 0L)
  @@ -2191,6 +2199,11 @@
               jjmatchedKind = 9;
               return -1;
            }
  +         if ((active0 & 0x3000000L) != 0L)
  +         {
  +            jjmatchedKind = 54;
  +            return 12;
  +         }
            return -1;
         case 1:
            if ((active0 & 0x2000L) != 0L)
  @@ -2204,29 +2217,29 @@
               }
               return -1;
            }
  -         if ((active0 & 0x6000000L) != 0L)
  +         if ((active0 & 0x3000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               jjmatchedPos = 1;
  -            return 11;
  +            return 12;
            }
            return -1;
         case 2:
  -         if ((active0 & 0x6000000L) != 0L)
  +         if ((active0 & 0x3000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               jjmatchedPos = 2;
  -            return 11;
  +            return 12;
            }
            return -1;
         case 3:
  +         if ((active0 & 0x1000000L) != 0L)
  +            return 12;
            if ((active0 & 0x2000000L) != 0L)
  -            return 11;
  -         if ((active0 & 0x4000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               jjmatchedPos = 3;
  -            return 11;
  +            return 12;
            }
            return -1;
         default :
  @@ -2263,13 +2276,13 @@
         case 93:
            return jjStopAtPos(0, 2);
         case 102:
  -         return jjMoveStringLiteralDfa1_2(0x4000000L);
  -      case 116:
            return jjMoveStringLiteralDfa1_2(0x2000000L);
  +      case 116:
  +         return jjMoveStringLiteralDfa1_2(0x1000000L);
         case 123:
  -         return jjStopAtPos(0, 57);
  +         return jjStopAtPos(0, 56);
         case 125:
  -         return jjStopAtPos(0, 58);
  +         return jjStopAtPos(0, 57);
         default :
            return jjMoveNfa_2(5, 0);
      }
  @@ -2296,9 +2309,9 @@
               return jjStartNfaWithStates_2(1, 13, 2);
            break;
         case 97:
  -         return jjMoveStringLiteralDfa2_2(active0, 0x4000000L);
  -      case 114:
            return jjMoveStringLiteralDfa2_2(active0, 0x2000000L);
  +      case 114:
  +         return jjMoveStringLiteralDfa2_2(active0, 0x1000000L);
         default :
            break;
      }
  @@ -2316,9 +2329,9 @@
      switch(curChar)
      {
         case 108:
  -         return jjMoveStringLiteralDfa3_2(active0, 0x4000000L);
  -      case 117:
            return jjMoveStringLiteralDfa3_2(active0, 0x2000000L);
  +      case 117:
  +         return jjMoveStringLiteralDfa3_2(active0, 0x1000000L);
         default :
            break;
      }
  @@ -2336,11 +2349,11 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x2000000L) != 0L)
  -            return jjStartNfaWithStates_2(3, 25, 11);
  +         if ((active0 & 0x1000000L) != 0L)
  +            return jjStartNfaWithStates_2(3, 24, 12);
            break;
         case 115:
  -         return jjMoveStringLiteralDfa4_2(active0, 0x4000000L);
  +         return jjMoveStringLiteralDfa4_2(active0, 0x2000000L);
         default :
            break;
      }
  @@ -2358,8 +2371,8 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x4000000L) != 0L)
  -            return jjStartNfaWithStates_2(4, 26, 11);
  +         if ((active0 & 0x2000000L) != 0L)
  +            return jjStartNfaWithStates_2(4, 25, 12);
            break;
         default :
            break;
  @@ -2370,7 +2383,7 @@
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 14;
  +   jjnewStateCnt = 15;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -2388,14 +2401,20 @@
                  case 5:
                     if ((0x3ff000000000000L & l) != 0L)
                     {
  -                     if (kind > 49)
  -                        kind = 49;
  -                     jjCheckNAdd(9);
  +                     if (kind > 48)
  +                        kind = 48;
  +                     jjCheckNAdd(10);
                     }
  +                  else if ((0x100000200L & l) != 0L)
  +                  {
  +                     if (kind > 22)
  +                        kind = 22;
  +                     jjCheckNAdd(6);
  +                  }
                     else if (curChar == 46)
  -                     jjstateSet[jjnewStateCnt++] = 13;
  +                     jjstateSet[jjnewStateCnt++] = 14;
                     else if (curChar == 34)
  -                     jjCheckNAddTwoStates(7, 8);
  +                     jjCheckNAddTwoStates(8, 9);
                     else if (curChar == 35)
                        jjstateSet[jjnewStateCnt++] = 4;
                     else if (curChar == 36)
  @@ -2421,34 +2440,41 @@
                        jjstateSet[jjnewStateCnt++] = 2;
                     break;
                  case 6:
  -                  if (curChar == 34)
  -                     jjCheckNAddTwoStates(7, 8);
  +                  if ((0x100000200L & l) == 0L)
  +                     break;
  +                  if (kind > 22)
  +                     kind = 22;
  +                  jjCheckNAdd(6);
                     break;
                  case 7:
  -                  if ((0xfffffffbffffdbffL & l) != 0L)
  -                     jjCheckNAddTwoStates(7, 8);
  +                  if (curChar == 34)
  +                     jjCheckNAddTwoStates(8, 9);
                     break;
                  case 8:
  -                  if (curChar == 34 && kind > 24)
  -                     kind = 24;
  +                  if ((0xfffffffbffffdbffL & l) != 0L)
  +                     jjCheckNAddTwoStates(8, 9);
                     break;
                  case 9:
  +                  if (curChar == 34 && kind > 23)
  +                     kind = 23;
  +                  break;
  +               case 10:
                     if ((0x3ff000000000000L & l) == 0L)
                        break;
  -                  if (kind > 49)
  -                     kind = 49;
  -                  jjCheckNAdd(9);
  +                  if (kind > 48)
  +                     kind = 48;
  +                  jjCheckNAdd(10);
                     break;
  -               case 11:
  +               case 12:
                     if ((0x3ff200000000000L & l) == 0L)
                        break;
  -                  if (kind > 55)
  -                     kind = 55;
  -                  jjstateSet[jjnewStateCnt++] = 11;
  +                  if (kind > 54)
  +                     kind = 54;
  +                  jjstateSet[jjnewStateCnt++] = 12;
                     break;
  -               case 12:
  +               case 13:
                     if (curChar == 46)
  -                     jjstateSet[jjnewStateCnt++] = 13;
  +                     jjstateSet[jjnewStateCnt++] = 14;
                     break;
                  default : break;
               }
  @@ -2464,9 +2490,9 @@
                  case 5:
                     if ((0x7fffffe07fffffeL & l) != 0L)
                     {
  -                     if (kind > 55)
  -                        kind = 55;
  -                     jjCheckNAdd(11);
  +                     if (kind > 54)
  +                        kind = 54;
  +                     jjCheckNAdd(12);
                     }
                     else if (curChar == 92)
                        jjCheckNAddTwoStates(0, 1);
  @@ -2479,26 +2505,26 @@
                     if (kind > 12)
                        kind = 12;
                     break;
  -               case 7:
  -                  jjAddStates(10, 11);
  +               case 8:
  +                  jjAddStates(12, 13);
                     break;
  -               case 10:
  +               case 11:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
  -                  if (kind > 55)
  -                     kind = 55;
  -                  jjCheckNAdd(11);
  +                  if (kind > 54)
  +                     kind = 54;
  +                  jjCheckNAdd(12);
                     break;
  -               case 11:
  +               case 12:
                     if ((0x7fffffe87fffffeL & l) == 0L)
                        break;
  -                  if (kind > 55)
  -                     kind = 55;
  -                  jjCheckNAdd(11);
  +                  if (kind > 54)
  +                     kind = 54;
  +                  jjCheckNAdd(12);
                     break;
  -               case 13:
  -                  if ((0x7fffffe07fffffeL & l) != 0L && kind > 56)
  -                     kind = 56;
  +               case 14:
  +                  if ((0x7fffffe07fffffeL & l) != 0L && kind > 55)
  +                     kind = 55;
                     break;
                  default : break;
               }
  @@ -2516,9 +2542,9 @@
                     if ((jjbitVec0[i2] & l2) != 0L && kind > 12)
                        kind = 12;
                     break;
  -               case 7:
  +               case 8:
                     if ((jjbitVec0[i2] & l2) != 0L)
  -                     jjAddStates(10, 11);
  +                     jjAddStates(12, 13);
                     break;
                  default : break;
               }
  @@ -2531,7 +2557,7 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 14 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 15 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
  @@ -2549,9 +2575,9 @@
               jjmatchedKind = 9;
               return -1;
            }
  -         if ((active0 & 0x6000000L) != 0L)
  +         if ((active0 & 0x3000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               return 10;
            }
            return -1;
  @@ -2567,27 +2593,27 @@
               }
               return -1;
            }
  -         if ((active0 & 0x6000000L) != 0L)
  +         if ((active0 & 0x3000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               jjmatchedPos = 1;
               return 10;
            }
            return -1;
         case 2:
  -         if ((active0 & 0x6000000L) != 0L)
  +         if ((active0 & 0x3000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               jjmatchedPos = 2;
               return 10;
            }
            return -1;
         case 3:
  -         if ((active0 & 0x2000000L) != 0L)
  +         if ((active0 & 0x1000000L) != 0L)
               return 10;
  -         if ((active0 & 0x4000000L) != 0L)
  +         if ((active0 & 0x2000000L) != 0L)
            {
  -            jjmatchedKind = 55;
  +            jjmatchedKind = 54;
               jjmatchedPos = 3;
               return 10;
            }
  @@ -2624,13 +2650,13 @@
         case 93:
            return jjStopAtPos(0, 2);
         case 102:
  -         return jjMoveStringLiteralDfa1_1(0x4000000L);
  -      case 116:
            return jjMoveStringLiteralDfa1_1(0x2000000L);
  +      case 116:
  +         return jjMoveStringLiteralDfa1_1(0x1000000L);
         case 123:
  -         return jjStopAtPos(0, 57);
  +         return jjStopAtPos(0, 56);
         case 125:
  -         return jjStopAtPos(0, 58);
  +         return jjStopAtPos(0, 57);
         default :
            return jjMoveNfa_1(5, 0);
      }
  @@ -2657,9 +2683,9 @@
               return jjStartNfaWithStates_1(1, 13, 2);
            break;
         case 97:
  -         return jjMoveStringLiteralDfa2_1(active0, 0x4000000L);
  -      case 114:
            return jjMoveStringLiteralDfa2_1(active0, 0x2000000L);
  +      case 114:
  +         return jjMoveStringLiteralDfa2_1(active0, 0x1000000L);
         default :
            break;
      }
  @@ -2677,9 +2703,9 @@
      switch(curChar)
      {
         case 108:
  -         return jjMoveStringLiteralDfa3_1(active0, 0x4000000L);
  -      case 117:
            return jjMoveStringLiteralDfa3_1(active0, 0x2000000L);
  +      case 117:
  +         return jjMoveStringLiteralDfa3_1(active0, 0x1000000L);
         default :
            break;
      }
  @@ -2697,11 +2723,11 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x2000000L) != 0L)
  -            return jjStartNfaWithStates_1(3, 25, 10);
  +         if ((active0 & 0x1000000L) != 0L)
  +            return jjStartNfaWithStates_1(3, 24, 10);
            break;
         case 115:
  -         return jjMoveStringLiteralDfa4_1(active0, 0x4000000L);
  +         return jjMoveStringLiteralDfa4_1(active0, 0x2000000L);
         default :
            break;
      }
  @@ -2719,8 +2745,8 @@
      switch(curChar)
      {
         case 101:
  -         if ((active0 & 0x4000000L) != 0L)
  -            return jjStartNfaWithStates_1(4, 26, 10);
  +         if ((active0 & 0x2000000L) != 0L)
  +            return jjStartNfaWithStates_1(4, 25, 10);
            break;
         default :
            break;
  @@ -2784,14 +2810,14 @@
                        jjCheckNAddTwoStates(7, 8);
                     break;
                  case 8:
  -                  if (curChar == 34 && kind > 24)
  -                     kind = 24;
  +                  if (curChar == 34 && kind > 23)
  +                     kind = 23;
                     break;
                  case 10:
                     if ((0x3ff200000000000L & l) == 0L)
                        break;
  -                  if (kind > 55)
  -                     kind = 55;
  +                  if (kind > 54)
  +                     kind = 54;
                     jjstateSet[jjnewStateCnt++] = 10;
                     break;
                  case 11:
  @@ -2812,8 +2838,8 @@
                  case 5:
                     if ((0x7fffffe07fffffeL & l) != 0L)
                     {
  -                     if (kind > 55)
  -                        kind = 55;
  +                     if (kind > 54)
  +                        kind = 54;
                        jjCheckNAdd(10);
                     }
                     else if (curChar == 92)
  @@ -2833,20 +2859,20 @@
                  case 9:
                     if ((0x7fffffe07fffffeL & l) == 0L)
                        break;
  -                  if (kind > 55)
  -                     kind = 55;
  +                  if (kind > 54)
  +                     kind = 54;
                     jjCheckNAdd(10);
                     break;
                  case 10:
                     if ((0x7fffffe87fffffeL & l) == 0L)
                        break;
  -                  if (kind > 55)
  -                     kind = 55;
  +                  if (kind > 54)
  +                     kind = 54;
                     jjCheckNAdd(10);
                     break;
                  case 12:
  -                  if ((0x7fffffe07fffffeL & l) != 0L && kind > 56)
  -                     kind = 56;
  +                  if ((0x7fffffe07fffffeL & l) != 0L && kind > 55)
  +                     kind = 55;
                     break;
                  default : break;
               }
  @@ -2886,14 +2912,14 @@
      }
   }
   static final int[] jjnextStates = {
  -   1, 2, 4, 12, 13, 7, 8, 10, 9, 10, 7, 8, 
  +   1, 2, 4, 13, 14, 7, 8, 10, 9, 10, 7, 8, 8, 9, 
   };
   public static final String[] jjstrLiteralImages = {
   null, null, null, null, null, null, null, null, null, null, null, null, null, 
   null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
   null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
   null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
  -null, null, null, null, null, null, };
  +null, null, null, null, null, };
   public static final String[] lexStateNames = {
      "DIRECTIVE", 
      "REFMODIFIER", 
  @@ -2908,23 +2934,23 @@
   public static final int[] jjnewLexState = {
      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, 
      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, 
  -   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
  +   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
   };
   static final long[] jjtoToken = {
  -   0x78affffff1f81ffL, 
  +   0x3c57fffffdf81ffL, 
   };
   static final long[] jjtoSkip = {
  -   0x1800000000c00000L, 
  +   0xc00000000000000L, 
   };
   static final long[] jjtoSpecial = {
  -   0x1800000000000000L, 
  +   0xc00000000000000L, 
   };
   static final long[] jjtoMore = {
      0x207e00L, 
   };
   private ASCII_CharStream input_stream;
  -private final int[] jjrounds = new int[19];
  -private final int[] jjstateSet = new int[38];
  +private final int[] jjrounds = new int[20];
  +private final int[] jjstateSet = new int[40];
   StringBuffer image;
   int jjimageLen;
   int lengthOfMatch;
  @@ -2951,7 +2977,7 @@
   {
      int i;
      jjround = 0x80000001;
  -   for (i = 19; i-- > 0;)
  +   for (i = 20; i-- > 0;)
         jjrounds[i] = 0x80000000;
   }
   public void ReInit(ASCII_CharStream stream, int lexState)
  @@ -3017,11 +3043,6 @@
        switch(curLexState)
        {
          case 0:
  -         try { input_stream.backup(0);
  -            while (curChar <= 32 && (0x100000200L & (1L << curChar)) != 0L)
  -               curChar = input_stream.BeginToken();
  -         }
  -         catch (java.io.IOException e1) { continue EOFLoop; }
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_0();
  @@ -3030,23 +3051,18 @@
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_1();
  -         if (jjmatchedPos == 0 && jjmatchedKind > 59)
  +         if (jjmatchedPos == 0 && jjmatchedKind > 58)
            {
  -            jjmatchedKind = 59;
  +            jjmatchedKind = 58;
            }
            break;
          case 2:
  -         try { input_stream.backup(0);
  -            while (curChar <= 32 && (0x100000200L & (1L << curChar)) != 0L)
  -               curChar = input_stream.BeginToken();
  -         }
  -         catch (java.io.IOException e1) { continue EOFLoop; }
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_2();
  -         if (jjmatchedPos == 0 && jjmatchedKind > 59)
  +         if (jjmatchedPos == 0 && jjmatchedKind > 58)
            {
  -            jjmatchedKind = 59;
  +            jjmatchedKind = 58;
            }
            break;
          case 3:
  @@ -3058,18 +3074,18 @@
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_4();
  -         if (jjmatchedPos == 0 && jjmatchedKind > 60)
  +         if (jjmatchedPos == 0 && jjmatchedKind > 59)
            {
  -            jjmatchedKind = 60;
  +            jjmatchedKind = 59;
            }
            break;
          case 5:
            jjmatchedKind = 0x7fffffff;
            jjmatchedPos = 0;
            curPos = jjMoveStringLiteralDfa0_5();
  -         if (jjmatchedPos == 0 && jjmatchedKind > 59)
  +         if (jjmatchedPos == 0 && jjmatchedKind > 58)
            {
  -            jjmatchedKind = 59;
  +            jjmatchedKind = 58;
            }
            break;
          case 6:
  @@ -3173,7 +3189,7 @@
   {
      switch(jjmatchedKind)
      {
  -      case 59 :
  +      case 58 :
            if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -3191,7 +3207,7 @@
   
           stateStackPop();
            break;
  -      case 60 :
  +      case 59 :
            if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -3380,7 +3396,7 @@
       inComment = false;
       stateStackPop();
            break;
  -      case 24 :
  +      case 23 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -3397,7 +3413,7 @@
           else if( curLexState == DIRECTIVE && !inSet && lparen == 0)
               stateStackPop();
            break;
  -      case 27 :
  +      case 26 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -3413,7 +3429,7 @@
           if (inDirective)
               inDirective = false;
            break;
  -      case 43 :
  +      case 42 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -3421,21 +3437,21 @@
           inDirective = false;
           stateStackPop();
            break;
  -      case 44 :
  +      case 43 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
               image.append(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
           SwitchTo(DIRECTIVE);
            break;
  -      case 45 :
  +      case 44 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
               image.append(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
           SwitchTo(DIRECTIVE);
            break;
  -      case 46 :
  +      case 45 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -3443,7 +3459,7 @@
           inDirective = false;
           stateStackPop();
            break;
  -      case 47 :
  +      case 46 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -3451,7 +3467,7 @@
           matchedToken.kind = EOF;
           fileDepth = 0;
            break;
  -      case 49 :
  +      case 48 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -3465,7 +3481,7 @@
           if ( lparen == 0 && !inSet && curLexState != REFMOD2)
               stateStackPop();
            break;
  -      case 56 :
  +      case 55 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  @@ -3486,7 +3502,7 @@
               System.out.print("DOT : switching to " + REFMODIFIER);
           SwitchTo(REFMODIFIER);
            break;
  -      case 58 :
  +      case 57 :
           if (image == null)
               image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + 
(lengthOfMatch = jjmatchedPos + 1))));
            else
  
  
  

Reply via email to