geirm       00/12/28 08:22:42

  Modified:    src/java/org/apache/velocity/runtime/parser Parser.java
                        Parser.jj ParserConstants.java
                        ParserTokenManager.java ParserTreeConstants.java
  Log:
  Parser.jjt followers.
  
  Revision  Changes    Path
  1.51      +545 -322  
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.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- Parser.java       2000/12/27 23:48:59     1.50
  +++ Parser.java       2000/12/28 16:22:25     1.51
  @@ -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.50 2000/12/27 23:48:59 geirm Exp $ 
  + * @version $Id: Parser.java,v 1.51 2000/12/28 16:22:25 geirm Exp $ 
   */
   public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants 
{/*@bgen(jjtree)*/
     protected JJTParserState jjtree = new JJTParserState();/**
  @@ -497,22 +497,30 @@
       case NUMBER_LITERAL:
         NumberLiteral();
         break;
  -    case LBRACKET:
  -      ObjectArray();
  -      break;
  -    case TRUE:
  -      True();
  -      break;
  -    case FALSE:
  -      False();
  -      break;
  -    case WHITESPACE:
  -      jj_consume_token(WHITESPACE);
  -      break;
       default:
         jj_la1[3] = jj_gen;
  -      jj_consume_token(-1);
  -      throw new ParseException();
  +      if (jj_2_2(4)) {
  +        IntegerRange();
  +      } else {
  +        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +        case LBRACKET:
  +          ObjectArray();
  +          break;
  +        case TRUE:
  +          True();
  +          break;
  +        case FALSE:
  +          False();
  +          break;
  +        case WHITESPACE:
  +          jj_consume_token(WHITESPACE);
  +          break;
  +        default:
  +          jj_la1[4] = jj_gen;
  +          jj_consume_token(-1);
  +          throw new ParseException();
  +        }
  +      }
       }
     }
   
  @@ -581,7 +589,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[4] = jj_gen;
  +        jj_la1[5] = jj_gen;
           ;
         }
         jj_consume_token(LPAREN);
  @@ -600,7 +608,7 @@
             ;
             break;
           default:
  -          jj_la1[5] = jj_gen;
  +          jj_la1[6] = jj_gen;
             break label_3;
           }
           DirectiveArg();
  @@ -637,7 +645,7 @@
               ;
               break;
             default:
  -            jj_la1[6] = jj_gen;
  +            jj_la1[7] = jj_gen;
               break label_4;
             }
           }
  @@ -728,15 +736,108 @@
               ;
               break;
             default:
  -            jj_la1[7] = jj_gen;
  +            jj_la1[8] = jj_gen;
               break label_5;
             }
             jj_consume_token(COMMA);
             Parameter();
           }
           break;
  +      default:
  +        jj_la1[9] = jj_gen;
  +        ;
  +      }
  +      jj_consume_token(RBRACKET);
  +    } catch (Throwable jjte000) {
  +      if (jjtc000) {
  +        jjtree.clearNodeScope(jjtn000);
  +        jjtc000 = false;
  +      } else {
  +        jjtree.popNode();
  +      }
  +      if (jjte000 instanceof RuntimeException) {
  +        {if (true) throw (RuntimeException)jjte000;}
  +      }
  +      if (jjte000 instanceof ParseException) {
  +        {if (true) throw (ParseException)jjte000;}
  +      }
  +      {if (true) throw (Error)jjte000;}
  +    } finally {
  +      if (jjtc000) {
  +        jjtree.closeNodeScope(jjtn000, true);
  +      }
  +    }
  +  }
  +
  +/**
  + *  supports the [n..m] vector generator for use in
  + *  the #foreach() to generate measured ranges w/o 
  + *  needing explicit support from the app/servlet
  + */
  +  final public void IntegerRange() throws ParseException {
  +                       /*@bgen(jjtree) IntegerRange */
  +  ASTIntegerRange jjtn000 = new ASTIntegerRange(this, JJTINTEGERRANGE);
  +  boolean jjtc000 = true;
  +  jjtree.openNodeScope(jjtn000);
  +    try {
  +      jj_consume_token(LBRACKET);
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case WHITESPACE:
  +        jj_consume_token(WHITESPACE);
  +        break;
  +      default:
  +        jj_la1[10] = jj_gen;
  +        ;
  +      }
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case IDENTIFIER:
  +      case LCURLY:
  +        Reference();
  +        break;
  +      case NUMBER_LITERAL:
  +        NumberLiteral();
  +        break;
  +      default:
  +        jj_la1[11] = 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[12] = jj_gen;
  +        ;
  +      }
  +      jj_consume_token(DOUBLEDOT);
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case WHITESPACE:
  +        jj_consume_token(WHITESPACE);
  +        break;
  +      default:
  +        jj_la1[13] = jj_gen;
  +        ;
  +      }
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case IDENTIFIER:
  +      case LCURLY:
  +        Reference();
  +        break;
  +      case NUMBER_LITERAL:
  +        NumberLiteral();
  +        break;
  +      default:
  +        jj_la1[14] = 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[8] = jj_gen;
  +        jj_la1[15] = jj_gen;
           ;
         }
         jj_consume_token(RBRACKET);
  @@ -772,7 +873,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
  -      jj_la1[9] = jj_gen;
  +      jj_la1[16] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -796,7 +897,7 @@
         NumberLiteral();
         break;
       default:
  -      jj_la1[10] = jj_gen;
  +      jj_la1[17] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -805,7 +906,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
  -      jj_la1[11] = jj_gen;
  +      jj_la1[18] = jj_gen;
         ;
       }
     }
  @@ -840,7 +941,7 @@
               ;
               break;
             default:
  -            jj_la1[12] = jj_gen;
  +            jj_la1[19] = jj_gen;
               break label_6;
             }
             jj_consume_token(COMMA);
  @@ -848,7 +949,7 @@
           }
           break;
         default:
  -        jj_la1[13] = jj_gen;
  +        jj_la1[20] = jj_gen;
           ;
         }
         jj_consume_token(REFMOD2_RPAREN);
  @@ -884,7 +985,7 @@
           jj_consume_token(LCURLY);
           break;
         default:
  -        jj_la1[14] = jj_gen;
  +        jj_la1[21] = jj_gen;
           ;
         }
         jj_consume_token(IDENTIFIER);
  @@ -893,18 +994,18 @@
           jj_consume_token(RCURLY);
           break;
         default:
  -        jj_la1[15] = jj_gen;
  +        jj_la1[22] = jj_gen;
           ;
         }
         label_7:
         while (true) {
  -        if (jj_2_2(2)) {
  +        if (jj_2_3(2)) {
             ;
           } else {
             break label_7;
           }
           jj_consume_token(DOT);
  -        if (jj_2_3(3)) {
  +        if (jj_2_4(3)) {
             Method();
           } else {
             switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -912,7 +1013,7 @@
               Identifier();
               break;
             default:
  -            jj_la1[16] = jj_gen;
  +            jj_la1[23] = jj_gen;
               jj_consume_token(-1);
               throw new ParseException();
             }
  @@ -922,7 +1023,7 @@
             jj_consume_token(RCURLY);
             break;
           default:
  -          jj_la1[17] = jj_gen;
  +          jj_la1[24] = jj_gen;
             ;
           }
         }
  @@ -1009,7 +1110,7 @@
           jj_consume_token(ESCAPE);
           break;
         default:
  -        jj_la1[18] = jj_gen;
  +        jj_la1[25] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1037,7 +1138,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[19] = jj_gen;
  +        jj_la1[26] = jj_gen;
           ;
         }
         jj_consume_token(LPAREN);
  @@ -1072,7 +1173,7 @@
               ;
               break;
             default:
  -            jj_la1[20] = jj_gen;
  +            jj_la1[27] = jj_gen;
               break label_8;
             }
           }
  @@ -1105,13 +1206,13 @@
               ;
               break;
             default:
  -            jj_la1[21] = jj_gen;
  +            jj_la1[28] = jj_gen;
               break label_9;
             }
           }
           break;
         default:
  -        jj_la1[22] = jj_gen;
  +        jj_la1[29] = jj_gen;
           ;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1119,7 +1220,7 @@
           ElseStatement();
           break;
         default:
  -        jj_la1[23] = jj_gen;
  +        jj_la1[30] = jj_gen;
           ;
         }
         jj_consume_token(END);
  @@ -1180,7 +1281,7 @@
               ;
               break;
             default:
  -            jj_la1[24] = jj_gen;
  +            jj_la1[31] = jj_gen;
               break label_10;
             }
           }
  @@ -1236,7 +1337,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[25] = jj_gen;
  +        jj_la1[32] = jj_gen;
           ;
         }
         jj_consume_token(LPAREN);
  @@ -1271,7 +1372,7 @@
               ;
               break;
             default:
  -            jj_la1[26] = jj_gen;
  +            jj_la1[33] = jj_gen;
               break label_11;
             }
           }
  @@ -1327,12 +1428,12 @@
     jjtree.openNodeScope(jjtn000);
       try {
         jj_consume_token(SET_DIRECTIVE);
  -      if (jj_2_4(2)) {
  +      if (jj_2_5(2)) {
           jj_consume_token(WHITESPACE);
         } else {
           ;
         }
  -      if (jj_2_5(2)) {
  +      if (jj_2_6(2)) {
           jj_consume_token(LPAREN);
           Expression();
           jj_consume_token(RPAREN);
  @@ -1354,12 +1455,12 @@
               jj_consume_token(NEWLINE);
               break;
             default:
  -            jj_la1[27] = jj_gen;
  +            jj_la1[34] = jj_gen;
               ;
             }
             break;
           default:
  -          jj_la1[28] = jj_gen;
  +          jj_la1[35] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
  @@ -1407,7 +1508,7 @@
     boolean jjtc000 = true;
     jjtree.openNodeScope(jjtn000);
       try {
  -      if (jj_2_6(2147483647)) {
  +      if (jj_2_7(2147483647)) {
           Assignment();
         } else {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1424,7 +1525,7 @@
             ConditionalOrExpression();
             break;
           default:
  -          jj_la1[29] = jj_gen;
  +          jj_la1[36] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
  @@ -1489,7 +1590,7 @@
           ;
           break;
         default:
  -        jj_la1[30] = jj_gen;
  +        jj_la1[37] = jj_gen;
           break label_12;
         }
         jj_consume_token(LOGICAL_OR);
  @@ -1529,7 +1630,7 @@
           ;
           break;
         default:
  -        jj_la1[31] = jj_gen;
  +        jj_la1[38] = jj_gen;
           break label_13;
         }
         jj_consume_token(LOGICAL_AND);
  @@ -1570,7 +1671,7 @@
           ;
           break;
         default:
  -        jj_la1[32] = jj_gen;
  +        jj_la1[39] = jj_gen;
           break label_14;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1629,7 +1730,7 @@
           }
           break;
         default:
  -        jj_la1[33] = jj_gen;
  +        jj_la1[40] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1648,7 +1749,7 @@
           ;
           break;
         default:
  -        jj_la1[34] = jj_gen;
  +        jj_la1[41] = jj_gen;
           break label_15;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1761,7 +1862,7 @@
           }
           break;
         default:
  -        jj_la1[35] = jj_gen;
  +        jj_la1[42] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1778,7 +1879,7 @@
           ;
           break;
         default:
  -        jj_la1[36] = jj_gen;
  +        jj_la1[43] = jj_gen;
           break label_16;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1837,7 +1938,7 @@
           }
           break;
         default:
  -        jj_la1[37] = jj_gen;
  +        jj_la1[44] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1855,7 +1956,7 @@
           ;
           break;
         default:
  -        jj_la1[38] = jj_gen;
  +        jj_la1[45] = jj_gen;
           break label_17;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1941,7 +2042,7 @@
           }
           break;
         default:
  -        jj_la1[39] = jj_gen;
  +        jj_la1[46] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1949,13 +2050,13 @@
     }
   
     final public void UnaryExpression() throws ParseException {
  -    if (jj_2_7(2)) {
  +    if (jj_2_8(2)) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case WHITESPACE:
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[40] = jj_gen;
  +        jj_la1[47] = jj_gen;
           ;
         }
         jj_consume_token(LOGICAL_NOT);
  @@ -1997,7 +2098,7 @@
           PrimaryExpression();
           break;
         default:
  -        jj_la1[41] = jj_gen;
  +        jj_la1[48] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -2010,7 +2111,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
  -      jj_la1[42] = jj_gen;
  +      jj_la1[49] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -2024,31 +2125,39 @@
       case LCURLY:
         Reference();
         break;
  -    case LBRACKET:
  -      ObjectArray();
  -      break;
  -    case TRUE:
  -      True();
  -      break;
  -    case FALSE:
  -      False();
  -      break;
  -    case LPAREN:
  -      jj_consume_token(LPAREN);
  -      Expression();
  -      jj_consume_token(RPAREN);
  -      break;
       default:
  -      jj_la1[43] = jj_gen;
  -      jj_consume_token(-1);
  -      throw new ParseException();
  +      jj_la1[50] = jj_gen;
  +      if (jj_2_9(4)) {
  +        IntegerRange();
  +      } else {
  +        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +        case LBRACKET:
  +          ObjectArray();
  +          break;
  +        case TRUE:
  +          True();
  +          break;
  +        case FALSE:
  +          False();
  +          break;
  +        case LPAREN:
  +          jj_consume_token(LPAREN);
  +          Expression();
  +          jj_consume_token(RPAREN);
  +          break;
  +        default:
  +          jj_la1[51] = 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[44] = jj_gen;
  +      jj_la1[52] = jj_gen;
         ;
       }
     }
  @@ -2101,294 +2210,241 @@
       jj_save(6, xla);
       return retval;
     }
  -
  -  final private boolean jj_3R_64() {
  -    if (jj_3R_66()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_72()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_76() {
  -    if (jj_scan_token(LOGICAL_GE)) 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_75() {
  -    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_74() {
  -    if (jj_scan_token(LOGICAL_GT)) 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_69() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_73()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_74()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_75()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_76()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  +  final private boolean jj_2_8(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    boolean retval = !jj_3_8();
  +    jj_save(7, xla);
  +    return retval;
     }
   
  -  final private boolean jj_3R_73() {
  -    if (jj_scan_token(LOGICAL_LT)) 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_2_9(int xla) {
  +    jj_la = xla; jj_lastpos = jj_scanpos = token;
  +    boolean retval = !jj_3_9();
  +    jj_save(8, xla);
  +    return retval;
     }
   
  -  final private boolean jj_3R_61() {
  -    if (jj_3R_64()) return true;
  +  final private boolean jj_3R_70() {
  +    if (jj_3R_73()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3R_69()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_78()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_71() {
  +  final private boolean jj_3R_80() {
       if (jj_scan_token(LOGICAL_NOT_EQUALS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_61()) return true;
  +    if (jj_3R_70()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_68() {
  +  final private boolean jj_3R_77() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_70()) {
  +    if (jj_3R_79()) {
       jj_scanpos = xsp;
  -    if (jj_3R_71()) return true;
  +    if (jj_3R_80()) 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_70() {
  +  final private boolean jj_3R_79() {
       if (jj_scan_token(LOGICAL_EQUALS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_61()) return true;
  +    if (jj_3R_70()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_58() {
  -    if (jj_3R_61()) return true;
  +  final private boolean jj_3R_67() {
  +    if (jj_3R_70()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3R_68()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_77()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_65() {
  +  final private boolean jj_3R_74() {
       if (jj_scan_token(LOGICAL_AND)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_58()) return true;
  +    if (jj_3R_67()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_54() {
  -    if (jj_3R_58()) return true;
  +  final private boolean jj_3R_64() {
  +    if (jj_3R_67()) 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_74()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_63() {
  +  final private boolean jj_3R_72() {
       if (jj_scan_token(LOGICAL_OR)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_54()) return true;
  +    if (jj_3R_64()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_6() {
  -    if (jj_3R_21()) return true;
  +  final private boolean jj_3_7() {
  +    if (jj_3R_22()) 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;
       return false;
     }
   
  -  final private boolean jj_3R_40() {
  -    if (jj_3R_54()) return true;
  +  final private boolean jj_3R_50() {
  +    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_63()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_72()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_39() {
  -    if (jj_3R_21()) return true;
  +  final private boolean jj_3R_49() {
  +    if (jj_3R_22()) 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_20()) return true;
  +    if (jj_3R_21()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_27() {
  -    if (jj_3R_40()) return true;
  +  final private boolean jj_3R_35() {
  +    if (jj_3R_50()) 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_26()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_27()) return true;
  +  final private boolean jj_3R_34() {
  +    if (jj_3R_49()) 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_26() {
  -    if (jj_3R_39()) return true;
  +  final private boolean jj_3R_21() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_34()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_35()) 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_5() {
  +  final private boolean jj_3_6() {
       if (jj_scan_token(LPAREN)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_20()) return true;
  +    if (jj_3R_21()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_4() {
  +  final private boolean jj_3_5() {
       if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_59() {
  +  final private boolean jj_3R_68() {
       if (jj_scan_token(RCURLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_18() {
  -    if (jj_3R_24()) return true;
  +  final private boolean jj_3R_19() {
  +    if (jj_3R_32()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_67() {
  -    if (jj_scan_token(COMMA)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_38()) return true;
  +  final private boolean jj_3_2() {
  +    if (jj_3R_18()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_24() {
  -    if (jj_scan_token(IDENTIFIER)) return true;
  +  final private boolean jj_3R_76() {
  +    if (jj_scan_token(COMMA)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_48()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_3() {
  -    if (jj_3R_19()) return true;
  +  final private boolean jj_3_4() {
  +    if (jj_3R_20()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_25() {
  -    if (jj_3R_38()) return true;
  +  final private boolean jj_3R_33() {
  +    if (jj_3R_48()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3R_67()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_76()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_46() {
  +  final private boolean jj_3R_54() {
       if (jj_scan_token(FALSE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_41() {
  -    if (jj_scan_token(STRING_LITERAL)) return true;
  +  final private boolean jj_3R_32() {
  +    if (jj_scan_token(IDENTIFIER)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_45() {
  +  final private boolean jj_3R_53() {
       if (jj_scan_token(TRUE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_42() {
  -    if (jj_scan_token(NUMBER_LITERAL)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3_2() {
  +  final private boolean jj_3_3() {
       if (jj_scan_token(DOT)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3_3()) {
  +    if (jj_3_4()) {
       jj_scanpos = xsp;
  -    if (jj_3R_18()) return true;
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       xsp = jj_scanpos;
  -    if (jj_3R_59()) jj_scanpos = xsp;
  +    if (jj_3R_68()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
  @@ -2405,7 +2461,7 @@
       return false;
     }
   
  -  final private boolean jj_3R_43() {
  +  final private boolean jj_3R_46() {
       Token xsp;
       xsp = jj_scanpos;
       if (jj_3R_55()) jj_scanpos = xsp;
  @@ -2417,157 +2473,181 @@
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3_2()) { jj_scanpos = xsp; break; }
  +      if (jj_3_3()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_19() {
  -    if (jj_3R_24()) return true;
  +  final private boolean jj_3R_51() {
  +    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_20() {
  +    if (jj_3R_32()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       if (jj_scan_token(LPAREN)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_25()) jj_scanpos = xsp;
  +    if (jj_3R_33()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       if (jj_scan_token(REFMOD2_RPAREN)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_60() {
  -    if (jj_scan_token(COMMA)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_38()) return true;
  +  final private boolean jj_3R_47() {
  +    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_53() {
  -    if (jj_3R_42()) return true;
  +  final private boolean jj_3R_29() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_52() {
  -    if (jj_3R_43()) return true;
  +  final private boolean jj_3R_63() {
  +    if (jj_3R_47()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
     final private boolean jj_3R_62() {
  +    if (jj_3R_46()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_71() {
       if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_51() {
  -    if (jj_3R_46()) return true;
  +  final private boolean jj_3R_61() {
  +    if (jj_3R_54()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_50() {
  -    if (jj_3R_45()) return true;
  +  final private boolean jj_3R_60() {
  +    if (jj_3R_53()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_49() {
  -    if (jj_3R_44()) return true;
  +  final private boolean jj_3R_59() {
  +    if (jj_3R_52()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_22() {
  +  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_48() {
  -    if (jj_3R_41()) return true;
  +  final private boolean jj_3R_58() {
  +    if (jj_3R_51()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_35() {
  +  final private boolean jj_3R_43() {
       if (jj_scan_token(LPAREN)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_20()) return true;
  +    if (jj_3R_21()) 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_36() {
  +  final private boolean jj_3R_42() {
  +    if (jj_3R_54()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_44() {
       if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_34() {
  -    if (jj_3R_46()) return true;
  +  final private boolean jj_3R_41() {
  +    if (jj_3R_53()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_57() {
  -    if (jj_3R_38()) return true;
  +  final private boolean jj_3R_31() {
  +    if (jj_3R_47()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_60()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_33() {
  -    if (jj_3R_45()) return true;
  +  final private boolean jj_3R_40() {
  +    if (jj_3R_52()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_32() {
  -    if (jj_3R_44()) return true;
  +  final private boolean jj_3R_27() {
  +    if (jj_3R_47()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_47() {
  +  final private boolean jj_3R_69() {
  +    if (jj_scan_token(COMMA)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_48()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_9() {
  +    if (jj_3R_18()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_57() {
       if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_31() {
  -    if (jj_3R_43()) return true;
  +  final private boolean jj_3R_39() {
  +    if (jj_3R_46()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_38() {
  +  final private boolean jj_3R_48() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_47()) jj_scanpos = xsp;
  +    if (jj_3R_57()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       xsp = jj_scanpos;
  -    if (jj_3R_48()) {
  +    if (jj_3R_58()) {
       jj_scanpos = xsp;
  -    if (jj_3R_49()) {
  +    if (jj_3R_59()) {
       jj_scanpos = xsp;
  -    if (jj_3R_50()) {
  +    if (jj_3R_60()) {
       jj_scanpos = xsp;
  -    if (jj_3R_51()) {
  +    if (jj_3R_61()) {
       jj_scanpos = xsp;
  -    if (jj_3R_52()) {
  +    if (jj_3R_62()) {
       jj_scanpos = xsp;
  -    if (jj_3R_53()) return true;
  +    if (jj_3R_63()) 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;
  @@ -2575,56 +2655,64 @@
       } 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_62()) jj_scanpos = xsp;
  +    if (jj_3R_71()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_30() {
  -    if (jj_3R_42()) return true;
  +  final private boolean jj_3R_38() {
  +    if (jj_3R_47()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_29() {
  -    if (jj_3R_41()) return true;
  +  final private boolean jj_3R_37() {
  +    if (jj_3R_51()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_28() {
  +  final private boolean jj_3R_25() {
       if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_82() {
  +  final private boolean jj_3R_36() {
  +    if (jj_scan_token(WHITESPACE)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_91() {
       if (jj_scan_token(MODULUS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_23()) return true;
  +    if (jj_3R_24()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_21() {
  +  final private boolean jj_3R_22() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_28()) jj_scanpos = xsp;
  +    if (jj_3R_36()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       xsp = jj_scanpos;
  -    if (jj_3R_29()) {
  +    if (jj_3R_37()) {
       jj_scanpos = xsp;
  -    if (jj_3R_30()) {
  +    if (jj_3R_38()) {
       jj_scanpos = xsp;
  -    if (jj_3R_31()) {
  +    if (jj_3R_39()) {
       jj_scanpos = xsp;
  -    if (jj_3R_32()) {
  +    if (jj_3_9()) {
       jj_scanpos = xsp;
  -    if (jj_3R_33()) {
  +    if (jj_3R_40()) {
       jj_scanpos = xsp;
  -    if (jj_3R_34()) {
  +    if (jj_3R_41()) {
       jj_scanpos = xsp;
  -    if (jj_3R_35()) return true;
  +    if (jj_3R_42()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_43()) 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;
  @@ -2632,128 +2720,261 @@
       } 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_36()) jj_scanpos = xsp;
  +    if (jj_3R_44()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_37() {
  -    if (jj_3R_21()) return true;
  +  final private boolean jj_3R_90() {
  +    if (jj_scan_token(DIVIDE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_24()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_7() {
  +  final private boolean jj_3_8() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_22()) jj_scanpos = xsp;
  +    if (jj_3R_23()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       if (jj_scan_token(LOGICAL_NOT)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_23()) return true;
  +    if (jj_3R_24()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_23() {
  +  final private boolean jj_3R_24() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3_7()) {
  +    if (jj_3_8()) {
       jj_scanpos = xsp;
  -    if (jj_3R_37()) return true;
  +    if (jj_3R_45()) 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_81() {
  -    if (jj_scan_token(DIVIDE)) return true;
  +  final private boolean jj_3R_45() {
  +    if (jj_3R_22()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_23()) return true;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_89() {
  +    if (jj_scan_token(MULTIPLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_24()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_77() {
  +  final private boolean jj_3R_86() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_80()) {
  +    if (jj_3R_89()) {
       jj_scanpos = xsp;
  -    if (jj_3R_81()) {
  +    if (jj_3R_90()) {
       jj_scanpos = xsp;
  -    if (jj_3R_82()) return true;
  +    if (jj_3R_91()) 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;
     }
   
  -  final private boolean jj_3R_80() {
  -    if (jj_scan_token(MULTIPLY)) return true;
  +  final private boolean jj_3R_65() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_23()) return true;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_30() {
  +    if (jj_3R_46()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_44() {
  +  final private boolean jj_3R_28() {
  +    if (jj_scan_token(WHITESPACE)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_26() {
  +    if (jj_3R_46()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_66() {
  +    if (jj_3R_48()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3R_69()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_18() {
       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_57()) jj_scanpos = xsp;
  +    if (jj_3R_25()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(RBRACKET)) return true;
  +    xsp = jj_scanpos;
  +    if (jj_3R_26()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_27()) 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;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_28()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_scan_token(DOUBLEDOT)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_29()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_30()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_31()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_65()) 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_66() {
  -    if (jj_3R_23()) return true;
  +  final private boolean jj_3R_75() {
  +    if (jj_3R_24()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       while (true) {
         xsp = jj_scanpos;
  -      if (jj_3R_77()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_86()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_79() {
  +  final private boolean jj_3R_88() {
       if (jj_scan_token(MINUS)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_66()) return true;
  +    if (jj_3R_75()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_72() {
  +  final private boolean jj_3R_87() {
  +    if (jj_scan_token(PLUS)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_75()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_81() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_78()) {
  +    if (jj_3R_87()) {
       jj_scanpos = xsp;
  -    if (jj_3R_79()) return true;
  +    if (jj_3R_88()) 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_78() {
  -    if (jj_scan_token(PLUS)) return true;
  +  final private boolean jj_3R_52() {
  +    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_66()) 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_73() {
  +    if (jj_3R_75()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3R_81()) { jj_scanpos = xsp; break; }
  +      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;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_85() {
  +    if (jj_scan_token(LOGICAL_GE)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_73()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_84() {
  +    if (jj_scan_token(LOGICAL_LE)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_73()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_83() {
  +    if (jj_scan_token(LOGICAL_GT)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_66()) return true;
  +    if (jj_3R_73()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  +  final private boolean jj_3R_82() {
  +    if (jj_scan_token(LOGICAL_LT)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_73()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_78() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_82()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_83()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_84()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_85()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    return false;
  +  }
  +
     public ParserTokenManager token_source;
     ASCII_CharStream jj_input_stream;
     public Token token, jj_nt;
  @@ -2763,10 +2984,10 @@
     public boolean lookingAhead = false;
     private boolean jj_semLA;
     private int jj_gen;
  -  final private int[] jj_la1 = new int[45];
  -  final private int[] jj_la1_0 = 
{0x13f0360,0x13f0360,0x380000,0x7800002,0x800000,0x7800002,0x13f0360,0x10,0x7800002,0x800000,0x7000002,0x800000,0x10,0x7800002,0x0,0x0,0x0,0x0,0x1060060,0x800000,0x13f0360,0x0,0x0,0x0,0x13f0360,0x800000,0x13f0360,0x8000000,0x7800022,0x7800022,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x30000000,0xc0000000,0xc0000000,0x800000,0x7800022,0x800000,0x7000022,0x800000,};
  -  final private int[] jj_la1_1 = 
{0x38a9000,0x38a9000,0x0,0x28a0000,0x0,0x28a0000,0x38a9000,0x0,0x2820000,0x0,0x2820000,0x0,0x0,0x2820000,0x2000000,0x4000000,0x800000,0x4000000,0x1020000,0x0,0x38a9000,0x2000,0x2000,0x4000,0x38a9000,0x0,0x38a9000,0x0,0x2820200,0x2820200,0x4,0x2,0x180,0x180,0x78,0x78,0x0,0x0,0x1,0x1,0x0,0x2820000,0x0,0x2820000,0x0,};
  -  final private JJCalls[] jj_2_rtns = new JJCalls[7];
  +  final private int[] jj_la1 = new int[53];
  +  final private int[] jj_la1_0 = 
{0x13f0360,0x13f0360,0x380000,0x1000000,0x6800002,0x800000,0x7800002,0x13f0360,0x8,0x7800002,0x800000,0x0,0x800000,0x800000,0x0,0x800000,0x800000,0x7000002,0x800000,0x8,0x7800002,0x0,0x0,0x0,0x0,0x1060060,0x800000,0x13f0360,0x0,0x0,0x0,0x13f0360,0x800000,0x13f0360,0x8000000,0x7800022,0x7800022,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x30000000,0xc0000000,0xc0000000,0x800000,0x7800022,0x800000,0x1000000,0x6000022,0x800000,};
  +  final private int[] jj_la1_1 = 
{0x38a9000,0x38a9000,0x0,0x28a0000,0x0,0x0,0x28a0000,0x38a9000,0x0,0x2820000,0x0,0x2820000,0x0,0x0,0x2820000,0x0,0x0,0x2820000,0x0,0x0,0x2820000,0x2000000,0x4000000,0x800000,0x4000000,0x1020000,0x0,0x38a9000,0x2000,0x2000,0x4000,0x38a9000,0x0,0x38a9000,0x0,0x2820200,0x2820200,0x4,0x2,0x180,0x180,0x78,0x78,0x0,0x0,0x1,0x1,0x0,0x2820000,0x0,0x2820000,0x0,0x0,};
  +  final private JJCalls[] jj_2_rtns = new JJCalls[9];
     private boolean jj_rescan = false;
     private int jj_gc = 0;
   
  @@ -2776,7 +2997,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 45; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 53; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2787,7 +3008,7 @@
       jj_ntk = -1;
       jjtree.reset();
       jj_gen = 0;
  -    for (int i = 0; i < 45; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 53; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2797,7 +3018,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 45; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 53; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2808,7 +3029,7 @@
       jj_ntk = -1;
       jjtree.reset();
       jj_gen = 0;
  -    for (int i = 0; i < 45; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 53; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2817,7 +3038,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 45; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 53; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2827,7 +3048,7 @@
       jj_ntk = -1;
       jjtree.reset();
       jj_gen = 0;
  -    for (int i = 0; i < 45; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 53; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -2942,7 +3163,7 @@
         la1tokens[jj_kind] = true;
         jj_kind = -1;
       }
  -    for (int i = 0; i < 45; i++) {
  +    for (int i = 0; i < 53; i++) {
         if (jj_la1[i] == jj_gen) {
           for (int j = 0; j < 32; j++) {
             if ((jj_la1_0[i] & (1<<j)) != 0) {
  @@ -2979,7 +3200,7 @@
   
     final private void jj_rescan_token() {
       jj_rescan = true;
  -    for (int i = 0; i < 7; i++) {
  +    for (int i = 0; i < 9; i++) {
         JJCalls p = jj_2_rtns[i];
         do {
           if (p.gen > jj_gen) {
  @@ -2992,6 +3213,8 @@
               case 4: jj_3_5(); break;
               case 5: jj_3_6(); break;
               case 6: jj_3_7(); break;
  +            case 7: jj_3_8(); break;
  +            case 8: jj_3_9(); break;
             }
           }
           p = p.next;
  
  
  
  1.49      +45 -6     
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.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- Parser.jj 2000/12/27 23:48:59     1.48
  +++ Parser.jj 2000/12/28 16:22:28     1.49
  @@ -96,7 +96,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.48 2000/12/27 23:48:59 geirm Exp $ 
  + * @version $Id: Parser.jj,v 1.49 2000/12/28 16:22:28 geirm Exp $ 
   */
   public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants/*@egen*/
   {/*@bgen(jjtree)*/
  @@ -422,6 +422,7 @@
   { 
       <LBRACKET: "[">
   |   <RBRACKET: "]">
  +|   <COMMA:",">
   }
   
   <DIRECTIVE>
  @@ -430,11 +431,6 @@
     <DOUBLEDOT : ".." >
   }
   
  -<DIRECTIVE,REFMOD2>
  -TOKEN:
  -{
  -    <COMMA:",">
  -}
   
   <DIRECTIVE,REFMODIFIER>
   TOKEN:
  @@ -1174,6 +1170,7 @@
   |   Word()  
   |   StringLiteral()
   |   NumberLiteral()
  +|   LOOKAHEAD(4) IntegerRange()
   |   ObjectArray()
   |   True()
   |   False()
  @@ -1371,6 +1368,47 @@
   }
   
   /**
  + *  supports the [n..m] vector generator for use in
  + *  the #foreach() to generate measured ranges w/o 
  + *  needing explicit support from the app/servlet
  + */
  +void IntegerRange() : {/*@bgen(jjtree) IntegerRange */
  +  ASTIntegerRange jjtn000 = new ASTIntegerRange(this, JJTINTEGERRANGE);
  +  boolean jjtc000 = true;
  +  jjtree.openNodeScope(jjtn000);
  +/*@egen*/}
  +{/*@bgen(jjtree) IntegerRange */
  +    try {
  +/*@egen*/
  +    <LBRACKET> [<WHITESPACE>] 
  +    ( Reference() | NumberLiteral()) 
  +    [<WHITESPACE>] <DOUBLEDOT> [<WHITESPACE>] 
  +    (Reference() | NumberLiteral()) 
  +    [<WHITESPACE>] <RBRACKET>/*@bgen(jjtree)*/
  +    } catch (Throwable jjte000) {
  +      if (jjtc000) {
  +        jjtree.clearNodeScope(jjtn000);
  +        jjtc000 = false;
  +      } else {
  +        jjtree.popNode();
  +      }
  +      if (jjte000 instanceof RuntimeException) {
  +        throw (RuntimeException)jjte000;
  +      }
  +      if (jjte000 instanceof ParseException) {
  +        throw (ParseException)jjte000;
  +      }
  +      throw (Error)jjte000;
  +    } finally {
  +      if (jjtc000) {
  +        jjtree.closeNodeScope(jjtn000, true);
  +      }
  +    }
  +/*@egen*/
  +}
  +
  +
  +/**
    * This method has yet to be fully implemented
    * but will allow arbitrarily nested method
    * calls
  @@ -2273,6 +2311,7 @@
       StringLiteral()
     | NumberLiteral()    
     | Reference()
  +  | LOOKAHEAD(4) IntegerRange()
     | ObjectArray()
     | True()
     | False()
  
  
  
  1.19      +3 -3      
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.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- ParserConstants.java      2000/12/27 23:49:00     1.18
  +++ ParserConstants.java      2000/12/28 16:22:30     1.19
  @@ -6,8 +6,8 @@
     int EOF = 0;
     int LBRACKET = 1;
     int RBRACKET = 2;
  -  int DOUBLEDOT = 3;
  -  int COMMA = 4;
  +  int COMMA = 3;
  +  int DOUBLEDOT = 4;
     int LPAREN = 5;
     int RPAREN = 6;
     int REFMOD2_RPAREN = 7;
  @@ -75,8 +75,8 @@
       "<EOF>",
       "\"[\"",
       "\"]\"",
  -    "\"..\"",
       "\",\"",
  +    "\"..\"",
       "\"(\"",
       "<RPAREN>",
       "\")\"",
  
  
  
  1.40      +5 -5      
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.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- ParserTokenManager.java   2000/12/27 23:49:00     1.39
  +++ ParserTokenManager.java   2000/12/28 16:22:30     1.40
  @@ -244,11 +244,11 @@
         case 43:
            return jjStopAtPos(0, 29);
         case 44:
  -         return jjStopAtPos(0, 4);
  +         return jjStopAtPos(0, 3);
         case 45:
            return jjStartNfaWithStates_0(0, 28, 20);
         case 46:
  -         return jjMoveStringLiteralDfa1_0(0x8L);
  +         return jjMoveStringLiteralDfa1_0(0x10L);
         case 47:
            return jjStopAtPos(0, 31);
         case 60:
  @@ -296,8 +296,8 @@
               return jjStartNfaWithStates_0(1, 14, 5);
            break;
         case 46:
  -         if ((active0 & 0x8L) != 0L)
  -            return jjStopAtPos(1, 3);
  +         if ((active0 & 0x10L) != 0L)
  +            return jjStopAtPos(1, 4);
            break;
         case 61:
            if ((active0 & 0x1000000000L) != 0L)
  @@ -2409,7 +2409,7 @@
         case 41:
            return jjStopAtPos(0, 7);
         case 44:
  -         return jjStopAtPos(0, 4);
  +         return jjStopAtPos(0, 3);
         case 91:
            return jjStopAtPos(0, 1);
         case 93:
  
  
  
  1.5       +27 -25    
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java
  
  Index: ParserTreeConstants.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ParserTreeConstants.java  2000/11/11 22:47:57     1.4
  +++ ParserTreeConstants.java  2000/12/28 16:22:32     1.5
  @@ -16,31 +16,32 @@
     public int JJTDIRECTIVE = 9;
     public int JJTBLOCK = 10;
     public int JJTOBJECTARRAY = 11;
  -  public int JJTMETHOD = 12;
  -  public int JJTREFERENCE = 13;
  -  public int JJTTRUE = 14;
  -  public int JJTFALSE = 15;
  -  public int JJTTEXT = 16;
  -  public int JJTIFSTATEMENT = 17;
  -  public int JJTELSESTATEMENT = 18;
  -  public int JJTELSEIFSTATEMENT = 19;
  -  public int JJTSETDIRECTIVE = 20;
  -  public int JJTEXPRESSION = 21;
  -  public int JJTASSIGNMENT = 22;
  -  public int JJTORNODE = 23;
  -  public int JJTANDNODE = 24;
  -  public int JJTEQNODE = 25;
  -  public int JJTNENODE = 26;
  -  public int JJTLTNODE = 27;
  -  public int JJTGTNODE = 28;
  -  public int JJTLENODE = 29;
  -  public int JJTGENODE = 30;
  -  public int JJTADDNODE = 31;
  -  public int JJTSUBTRACTNODE = 32;
  -  public int JJTMULNODE = 33;
  -  public int JJTDIVNODE = 34;
  -  public int JJTMODNODE = 35;
  -  public int JJTNOTNODE = 36;
  +  public int JJTINTEGERRANGE = 12;
  +  public int JJTMETHOD = 13;
  +  public int JJTREFERENCE = 14;
  +  public int JJTTRUE = 15;
  +  public int JJTFALSE = 16;
  +  public int JJTTEXT = 17;
  +  public int JJTIFSTATEMENT = 18;
  +  public int JJTELSESTATEMENT = 19;
  +  public int JJTELSEIFSTATEMENT = 20;
  +  public int JJTSETDIRECTIVE = 21;
  +  public int JJTEXPRESSION = 22;
  +  public int JJTASSIGNMENT = 23;
  +  public int JJTORNODE = 24;
  +  public int JJTANDNODE = 25;
  +  public int JJTEQNODE = 26;
  +  public int JJTNENODE = 27;
  +  public int JJTLTNODE = 28;
  +  public int JJTGTNODE = 29;
  +  public int JJTLENODE = 30;
  +  public int JJTGENODE = 31;
  +  public int JJTADDNODE = 32;
  +  public int JJTSUBTRACTNODE = 33;
  +  public int JJTMULNODE = 34;
  +  public int JJTDIVNODE = 35;
  +  public int JJTMODNODE = 36;
  +  public int JJTNOTNODE = 37;
   
   
     public String[] jjtNodeName = {
  @@ -56,6 +57,7 @@
       "Directive",
       "Block",
       "ObjectArray",
  +    "IntegerRange",
       "Method",
       "Reference",
       "True",
  
  
  

Reply via email to