You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by ge...@apache.org on 2002/03/25 01:37:46 UTC

cvs commit: jakarta-velocity/src/java/org/apache/velocity/runtime/parser Parser.jj Parser.java ParserTokenManager.java

geirm       02/03/24 16:37:46

  Modified:    src/java/org/apache/velocity/runtime/parser Parser.jj
                        Parser.java ParserTokenManager.java
  Log:
  Parser.jjt followers
  
  Revision  Changes    Path
  1.70      +124 -40   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.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- Parser.jj	23 Mar 2002 13:38:32 -0000	1.69
  +++ Parser.jj	25 Mar 2002 00:37:45 -0000	1.70
  @@ -2,7 +2,7 @@
   /*@egen*//*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2001 The Apache Software Foundation.  All rights
  + * Copyright (c) 2001-2002 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -24,7 +24,7 @@
    *    Alternately, this acknowlegement may appear in the software itself,
    *    if and wherever such third-party acknowlegements normally appear.
    *
  - * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
  + * 4. The names "The Jakarta Project", "Velocity", and "Apache Software
    *    Foundation" must not be used to endorse or promote products derived
    *    from this software without prior written permission. For written
    *    permission, please contact apache@apache.org.
  @@ -97,6 +97,7 @@
   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.MacroParseException;
   import org.apache.velocity.util.StringUtils;
   
   /**
  @@ -110,7 +111,7 @@
    *
    * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
    * @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
  - * @version $Id: Parser.jj,v 1.69 2002/03/23 13:38:32 geirm Exp $
  + * @version $Id: Parser.jj,v 1.70 2002/03/25 00:37:45 geirm Exp $
   */
   public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants/*@egen*/
   {/*@bgen(jjtree)*/
  @@ -195,6 +196,15 @@
                */
               sn = process();
           }
  +        catch (MacroParseException mee)
  +        {
  +            /*
  +             *  thrown by the Macro class when something is amiss in the
  +             *  Macro specification
  +             */
  +            rsvc.error ("Parser Error:  #macro() : " + templateName + " : " + StringUtils.stackTrace(mee));
  +            throw new ParseException(mee.getMessage());
  +        }
           catch (ParseException pe)
           {
               rsvc.error ("Parser Exception: " + templateName + " : " + StringUtils.stackTrace(pe));
  @@ -394,7 +404,6 @@
           return;
       }
   
  -
       /**
        *  handles the dropdown logic when encountering a RPAREN
        */
  @@ -1262,17 +1271,37 @@
    *   easily reconstruct a macro body from the token stream
    *   See Directive()
    */
  -void DirectiveArg()       : {}
  +int DirectiveArg()       : {}
   {
       Reference()
  +    {
  +        return ParserTreeConstants.JJTREFERENCE;
  +    }
   |   Word()
  +    {
  +        return ParserTreeConstants.JJTWORD;
  +    }
   |   StringLiteral()
  +    {
  +        return ParserTreeConstants.JJTSTRINGLITERAL;
  +    }
   |   NumberLiteral()
  -|   LOOKAHEAD(  <LBRACKET> [<WHITESPACE>]    ( Reference() | NumberLiteral())     [<WHITESPACE>] <DOUBLEDOT> ) IntegerRange()
  +|   LOOKAHEAD(  <LBRACKET> [<WHITESPACE>] ( Reference() | NumberLiteral())     [<WHITESPACE>] <DOUBLEDOT> ) IntegerRange()
  +    {
  +        return ParserTreeConstants.JJTINTEGERRANGE;
  +    }
   |   ObjectArray()
  +    {
  +        return ParserTreeConstants.JJTOBJECTARRAY;
  +    }
   |   True()
  +    {
  +        return ParserTreeConstants.JJTTRUE;
  +    }
   |   False()
  -|   <WHITESPACE>
  +    {
  +        return ParserTreeConstants.JJTFALSE;
  +    }
   }
   
   /**
  @@ -1286,8 +1315,11 @@
       jjtree.openNodeScope(jjtn000);
   /*@egen*/
       Token t = null;
  +    int argType;
  +    int argPos = 0;
       Directive d;
       int directiveType;
  +    boolean isVM = false;
       boolean doItNow = false;
   }
   {/*@bgen(jjtree) Directive */
  @@ -1301,7 +1333,7 @@
       {
           String directiveName = t.image.substring(1);
   
  -        d = (Directive) directives.get( directiveName );
  +        d = (Directive) directives.get(directiveName);
   
           /*
            *  Velocimacro support : if the directive is macro directive
  @@ -1309,7 +1341,7 @@
            *   right then. (So available if used w/in the current template )
            */
   
  -        if ( directiveName.equals("macro"))
  +        if (directiveName.equals("macro"))
           {
                doItNow = true;
           }
  @@ -1319,23 +1351,24 @@
            * about parser tokens
            */
   
  -        jjtn000.setDirectiveName( directiveName );
  +        jjtn000.setDirectiveName(directiveName);
   
           if ( d == null)
           {
               /*
                *  if null, then not a real directive, but maybe a Velocimacro
  -	         */
  +             */
   
  -            //d  =  (Directive) rsvc.getVelocimacro( directiveName, currentTemplateName );
  +            isVM = rsvc.isVelocimacro(directiveName, currentTemplateName);
   
  -            if ( !rsvc.isVelocimacro( directiveName, currentTemplateName ) )
  +            if (!isVM)
               {
                   token_source.stateStackPop();
                   token_source.inDirective = false;
                   return jjtn000;
               }
   
  +
               /*
                *  Currently, all VMs are LINE directives
                */
  @@ -1352,16 +1385,66 @@
            */
   
           token_source.SwitchTo(DIRECTIVE);
  +
  +        argPos = 0;
       }
   
       /*
        *  if this is indeed a token, match the #foo ( arg ) pattern
        */
   
  -    [<WHITESPACE>] <LPAREN> (  DirectiveArg()  )* <RPAREN>
  +    [<WHITESPACE>] <LPAREN>  ( LOOKAHEAD(2) [<WHITESPACE>]
  +
  +            argType = DirectiveArg()
  +            {
  +                if (argType == ParserTreeConstants.JJTWORD)
  +                {
  +                    if (doItNow && argPos == 0)
  +                    {
  +                        /* if a VM and it's the 0th arg... ok */
  +                        ;
  +                    }
  +                    else if( t.image.equals("#foreach") && argPos == 1)
  +                    {
  +                        /* if a foreach and it's the 2nd arg ok */
  +                        ;
  +                    }
  +                    else
  +                    {
  +                        throw new MacroParseException("Invalid arg #"
  +                            + argPos + " in "
  +                            + (isVM ? "VM " : "directive " )
  +                            + t.image
  +                            + " at line " + t.beginLine + ", column "
  +                            + t.beginColumn
  +                            + " in template " + currentTemplateName);
  +                    }
  +                }
  +                else
  +                {
  +                    if (doItNow && argPos == 0)
  +                    {
  +                        /* if a VM and it's the 0th arg, not ok */
  +
  +                        throw new MacroParseException("Invalid first arg "
  +                            + " in #macro() directive - must be a"
  +                            + " word token (no \' or \" surrounding)"
  +                            + " at line " + t.beginLine + ", column "
  +                            + t.beginColumn
  +                            + " in template " + currentTemplateName);
  +                    }
  +                }
  +
  +                argPos++;
  +            }
  +
  +    )* [<WHITESPACE>] <RPAREN>
       {
  -        if ( directiveType  == Directive.LINE)
  +
  +        if (directiveType  == Directive.LINE)
  +        {
               return jjtn000;
  +        }
       }/*@bgen(jjtree) Block */
       {
         ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK);
  @@ -1411,9 +1494,9 @@
            *     we don't have to worry about forward references and such...
            */
   
  -        if ( doItNow )
  +        if (doItNow)
           {
  -            Macro.processAndRegister( rsvc, jjtn000, currentTemplateName );
  +            Macro.processAndRegister(rsvc, jjtn000, currentTemplateName);
           }
   
           /*
  @@ -1884,7 +1967,7 @@
   /*@egen*/
       <SET_DIRECTIVE>
       [ LOOKAHEAD(2) <WHITESPACE> ]
  -    ( <LPAREN> Expression() <RPAREN>
  +    ( <LPAREN>  [<WHITESPACE>] Reference() [<WHITESPACE>] <EQUALS>  Expression() <RPAREN>
       {
           /*
            * ensure that inSet is false.  Leads to some amusing bugs...
  @@ -1939,29 +2022,30 @@
     jjtree.openNodeScope(jjtn000);
   /*@egen*/}
   {/*@bgen(jjtree) Expression */
  -    try {
  +try {
   /*@egen*/
  -    LOOKAHEAD( PrimaryExpression() <EQUALS>  ) Assignment()
  -|   ConditionalOrExpression()/*@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);
  -      }
  -    }
  +//    LOOKAHEAD( PrimaryExpression() <EQUALS>  ) Assignment()
  +//|
  +ConditionalOrExpression()/*@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*/
   }
   
  
  
  
  1.72      +507 -627  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.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- Parser.java	23 Mar 2002 13:38:31 -0000	1.71
  +++ Parser.java	25 Mar 2002 00:37:45 -0000	1.72
  @@ -8,6 +8,7 @@
   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.MacroParseException;
   import org.apache.velocity.util.StringUtils;
   
   /**
  @@ -21,7 +22,7 @@
    *
    * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
    * @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
  - * @version $Id: Parser.java,v 1.71 2002/03/23 13:38:31 geirm Exp $
  + * @version $Id: Parser.java,v 1.72 2002/03/25 00:37:45 geirm Exp $
   */
   public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants {/*@bgen(jjtree)*/
     protected JJTParserState jjtree = new JJTParserState();/**
  @@ -102,6 +103,15 @@
                */
               sn = process();
           }
  +        catch (MacroParseException mee)
  +        {
  +            /*
  +             *  thrown by the Macro class when something is amiss in the
  +             *  Macro specification
  +             */
  +            rsvc.error ("Parser Error:  #macro() : " + templateName + " : " + StringUtils.stackTrace(mee));
  +            throw new ParseException(mee.getMessage());
  +        }
           catch (ParseException pe)
           {
               rsvc.error ("Parser Exception: " + templateName + " : " + StringUtils.stackTrace(pe));
  @@ -518,17 +528,20 @@
    *   easily reconstruct a macro body from the token stream
    *   See Directive()
    */
  -  final public void DirectiveArg() throws ParseException {
  +  final public int DirectiveArg() throws ParseException {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case IDENTIFIER:
       case LCURLY:
         Reference();
  +        {if (true) return ParserTreeConstants.JJTREFERENCE;}
         break;
       case WORD:
         Word();
  +        {if (true) return ParserTreeConstants.JJTWORD;}
         break;
       case STRING_LITERAL:
         StringLiteral();
  +        {if (true) return ParserTreeConstants.JJTSTRINGLITERAL;}
         break;
       case NUMBER_LITERAL:
         NumberLiteral();
  @@ -537,19 +550,20 @@
         jj_la1[4] = jj_gen;
         if (jj_2_3(2147483647)) {
           IntegerRange();
  +        {if (true) return ParserTreeConstants.JJTINTEGERRANGE;}
         } else {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
           case LBRACKET:
             ObjectArray();
  +        {if (true) return ParserTreeConstants.JJTOBJECTARRAY;}
             break;
           case TRUE:
             True();
  +        {if (true) return ParserTreeConstants.JJTTRUE;}
             break;
           case FALSE:
             False();
  -          break;
  -        case WHITESPACE:
  -          jj_consume_token(WHITESPACE);
  +        {if (true) return ParserTreeConstants.JJTFALSE;}
             break;
           default:
             jj_la1[5] = jj_gen;
  @@ -558,6 +572,7 @@
           }
         }
       }
  +    throw new Error("Missing return statement in function");
     }
   
   /**
  @@ -569,8 +584,11 @@
       ASTDirective jjtn000 = new ASTDirective(this, JJTDIRECTIVE);
       boolean jjtc000 = true;
       jjtree.openNodeScope(jjtn000);Token t = null;
  +    int argType;
  +    int argPos = 0;
       Directive d;
       int directiveType;
  +    boolean isVM = false;
       boolean doItNow = false;
       try {
         /*
  @@ -580,7 +598,7 @@
             t = jj_consume_token(WORD);
           String directiveName = t.image.substring(1);
   
  -        d = (Directive) directives.get( directiveName );
  +        d = (Directive) directives.get(directiveName);
   
           /*
            *  Velocimacro support : if the directive is macro directive
  @@ -588,7 +606,7 @@
            *   right then. (So available if used w/in the current template )
            */
   
  -        if ( directiveName.equals("macro"))
  +        if (directiveName.equals("macro"))
           {
                doItNow = true;
           }
  @@ -598,23 +616,24 @@
            * about parser tokens
            */
   
  -        jjtn000.setDirectiveName( directiveName );
  +        jjtn000.setDirectiveName(directiveName);
   
           if ( d == null)
           {
               /*
                *  if null, then not a real directive, but maybe a Velocimacro
  -	         */
  +             */
   
  -            //d  =  (Directive) rsvc.getVelocimacro( directiveName, currentTemplateName );
  +            isVM = rsvc.isVelocimacro(directiveName, currentTemplateName);
   
  -            if ( !rsvc.isVelocimacro( directiveName, currentTemplateName ) )
  +            if (!isVM)
               {
                   token_source.stateStackPop();
                   token_source.inDirective = false;
                   {if (true) return jjtn000;}
               }
   
  +
               /*
                *  Currently, all VMs are LINE directives
                */
  @@ -631,6 +650,8 @@
            */
   
           token_source.SwitchTo(DIRECTIVE);
  +
  +        argPos = 0;
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case WHITESPACE:
           jj_consume_token(WHITESPACE);
  @@ -642,27 +663,73 @@
         jj_consume_token(LPAREN);
         label_3:
         while (true) {
  +        if (jj_2_4(2)) {
  +          ;
  +        } else {
  +          break label_3;
  +        }
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -        case LBRACKET:
           case WHITESPACE:
  -        case STRING_LITERAL:
  -        case TRUE:
  -        case FALSE:
  -        case NUMBER_LITERAL:
  -        case WORD:
  -        case IDENTIFIER:
  -        case LCURLY:
  -          ;
  +          jj_consume_token(WHITESPACE);
             break;
           default:
             jj_la1[7] = jj_gen;
  -          break label_3;
  +          ;
           }
  -        DirectiveArg();
  +        argType = DirectiveArg();
  +                if (argType == ParserTreeConstants.JJTWORD)
  +                {
  +                    if (doItNow && argPos == 0)
  +                    {
  +                        /* if a VM and it's the 0th arg... ok */
  +                        ;
  +                    }
  +                    else if( t.image.equals("#foreach") && argPos == 1)
  +                    {
  +                        /* if a foreach and it's the 2nd arg ok */
  +                        ;
  +                    }
  +                    else
  +                    {
  +                        {if (true) throw new MacroParseException("Invalid arg #"
  +                            + argPos + " in "
  +                            + (isVM ? "VM " : "directive " )
  +                            + t.image
  +                            + " at line " + t.beginLine + ", column "
  +                            + t.beginColumn
  +                            + " in template " + currentTemplateName);}
  +                    }
  +                }
  +                else
  +                {
  +                    if (doItNow && argPos == 0)
  +                    {
  +                        /* if a VM and it's the 0th arg, not ok */
  +
  +                        {if (true) throw new MacroParseException("Invalid first arg "
  +                            + " in #macro() directive - must be a"
  +                            + " word token (no \' or \" surrounding)"
  +                            + " at line " + t.beginLine + ", column "
  +                            + t.beginColumn
  +                            + " in template " + currentTemplateName);}
  +                    }
  +                }
  +
  +                argPos++;
  +      }
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case WHITESPACE:
  +        jj_consume_token(WHITESPACE);
  +        break;
  +      default:
  +        jj_la1[8] = jj_gen;
  +        ;
         }
         jj_consume_token(RPAREN);
  -        if ( directiveType  == Directive.LINE)
  +        if (directiveType  == Directive.LINE)
  +        {
               {if (true) return jjtn000;}
  +        }
         ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK);
         boolean jjtc001 = true;
         jjtree.openNodeScope(jjtn001);
  @@ -693,7 +760,7 @@
               ;
               break;
             default:
  -            jj_la1[8] = jj_gen;
  +            jj_la1[9] = jj_gen;
               break label_4;
             }
           }
  @@ -727,9 +794,9 @@
            *     we don't have to worry about forward references and such...
            */
   
  -        if ( doItNow )
  +        if (doItNow)
           {
  -            Macro.processAndRegister( rsvc, jjtn000, currentTemplateName );
  +            Macro.processAndRegister(rsvc, jjtn000, currentTemplateName);
           }
   
           /*
  @@ -783,7 +850,7 @@
               ;
               break;
             default:
  -            jj_la1[9] = jj_gen;
  +            jj_la1[10] = jj_gen;
               break label_5;
             }
             jj_consume_token(COMMA);
  @@ -791,7 +858,7 @@
           }
           break;
         default:
  -        jj_la1[10] = jj_gen;
  +        jj_la1[11] = jj_gen;
           ;
         }
         jj_consume_token(RBRACKET);
  @@ -833,7 +900,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[11] = jj_gen;
  +        jj_la1[12] = jj_gen;
           ;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -845,7 +912,7 @@
           NumberLiteral();
           break;
         default:
  -        jj_la1[12] = jj_gen;
  +        jj_la1[13] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -854,7 +921,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[13] = jj_gen;
  +        jj_la1[14] = jj_gen;
           ;
         }
         jj_consume_token(DOUBLEDOT);
  @@ -863,7 +930,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[14] = jj_gen;
  +        jj_la1[15] = jj_gen;
           ;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -875,7 +942,7 @@
           NumberLiteral();
           break;
         default:
  -        jj_la1[15] = jj_gen;
  +        jj_la1[16] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -884,7 +951,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[16] = jj_gen;
  +        jj_la1[17] = jj_gen;
           ;
         }
         jj_consume_token(RBRACKET);
  @@ -920,7 +987,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
  -      jj_la1[17] = jj_gen;
  +      jj_la1[18] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -928,8 +995,8 @@
         StringLiteral();
         break;
       default:
  -      jj_la1[18] = jj_gen;
  -      if (jj_2_4(2147483647)) {
  +      jj_la1[19] = jj_gen;
  +      if (jj_2_5(2147483647)) {
           IntegerRange();
         } else {
           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -950,7 +1017,7 @@
             NumberLiteral();
             break;
           default:
  -          jj_la1[19] = jj_gen;
  +          jj_la1[20] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
  @@ -961,7 +1028,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
  -      jj_la1[20] = jj_gen;
  +      jj_la1[21] = jj_gen;
         ;
       }
     }
  @@ -996,7 +1063,7 @@
               ;
               break;
             default:
  -            jj_la1[21] = jj_gen;
  +            jj_la1[22] = jj_gen;
               break label_6;
             }
             jj_consume_token(COMMA);
  @@ -1004,7 +1071,7 @@
           }
           break;
         default:
  -        jj_la1[22] = jj_gen;
  +        jj_la1[23] = jj_gen;
           ;
         }
         jj_consume_token(REFMOD2_RPAREN);
  @@ -1040,13 +1107,13 @@
           jj_consume_token(IDENTIFIER);
           label_7:
           while (true) {
  -          if (jj_2_5(2)) {
  +          if (jj_2_6(2)) {
               ;
             } else {
               break label_7;
             }
             jj_consume_token(DOT);
  -          if (jj_2_6(3)) {
  +          if (jj_2_7(3)) {
               Method();
             } else {
               switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1054,7 +1121,7 @@
                 Identifier();
                 break;
               default:
  -              jj_la1[23] = jj_gen;
  +              jj_la1[24] = jj_gen;
                 jj_consume_token(-1);
                 throw new ParseException();
               }
  @@ -1066,13 +1133,13 @@
           jj_consume_token(IDENTIFIER);
           label_8:
           while (true) {
  -          if (jj_2_7(2)) {
  +          if (jj_2_8(2)) {
               ;
             } else {
               break label_8;
             }
             jj_consume_token(DOT);
  -          if (jj_2_8(3)) {
  +          if (jj_2_9(3)) {
               Method();
             } else {
               switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1080,7 +1147,7 @@
                 Identifier();
                 break;
               default:
  -              jj_la1[24] = jj_gen;
  +              jj_la1[25] = jj_gen;
                 jj_consume_token(-1);
                 throw new ParseException();
               }
  @@ -1089,7 +1156,7 @@
           jj_consume_token(RCURLY);
           break;
         default:
  -        jj_la1[25] = jj_gen;
  +        jj_la1[26] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1182,7 +1249,7 @@
           jj_consume_token(RCURLY);
           break;
         default:
  -        jj_la1[26] = jj_gen;
  +        jj_la1[27] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1210,7 +1277,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[27] = jj_gen;
  +        jj_la1[28] = jj_gen;
           ;
         }
         jj_consume_token(LPAREN);
  @@ -1246,7 +1313,7 @@
               ;
               break;
             default:
  -            jj_la1[28] = jj_gen;
  +            jj_la1[29] = jj_gen;
               break label_9;
             }
           }
  @@ -1279,13 +1346,13 @@
               ;
               break;
             default:
  -            jj_la1[29] = jj_gen;
  +            jj_la1[30] = jj_gen;
               break label_10;
             }
           }
           break;
         default:
  -        jj_la1[30] = jj_gen;
  +        jj_la1[31] = jj_gen;
           ;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1293,7 +1360,7 @@
           ElseStatement();
           break;
         default:
  -        jj_la1[31] = jj_gen;
  +        jj_la1[32] = jj_gen;
           ;
         }
         jj_consume_token(END);
  @@ -1355,7 +1422,7 @@
               ;
               break;
             default:
  -            jj_la1[32] = jj_gen;
  +            jj_la1[33] = jj_gen;
               break label_11;
             }
           }
  @@ -1411,7 +1478,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[33] = jj_gen;
  +        jj_la1[34] = jj_gen;
           ;
         }
         jj_consume_token(LPAREN);
  @@ -1447,7 +1514,7 @@
               ;
               break;
             default:
  -            jj_la1[34] = jj_gen;
  +            jj_la1[35] = jj_gen;
               break label_12;
             }
           }
  @@ -1503,12 +1570,30 @@
     jjtree.openNodeScope(jjtn000);
       try {
         jj_consume_token(SET_DIRECTIVE);
  -      if (jj_2_9(2)) {
  +      if (jj_2_10(2)) {
           jj_consume_token(WHITESPACE);
         } else {
           ;
         }
         jj_consume_token(LPAREN);
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case WHITESPACE:
  +        jj_consume_token(WHITESPACE);
  +        break;
  +      default:
  +        jj_la1[36] = jj_gen;
  +        ;
  +      }
  +      Reference();
  +      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +      case WHITESPACE:
  +        jj_consume_token(WHITESPACE);
  +        break;
  +      default:
  +        jj_la1[37] = jj_gen;
  +        ;
  +      }
  +      jj_consume_token(EQUALS);
         Expression();
         jj_consume_token(RPAREN);
           /*
  @@ -1521,7 +1606,7 @@
           jj_consume_token(NEWLINE);
           break;
         default:
  -        jj_la1[35] = jj_gen;
  +        jj_la1[38] = jj_gen;
           ;
         }
       } catch (Throwable jjte000) {
  @@ -1567,46 +1652,25 @@
     boolean jjtc000 = true;
     jjtree.openNodeScope(jjtn000);
       try {
  -      if (jj_2_10(2147483647)) {
  -        Assignment();
  -      } else {
  -        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -        case LBRACKET:
  -        case LPAREN:
  -        case WHITESPACE:
  -        case STRING_LITERAL:
  -        case TRUE:
  -        case FALSE:
  -        case LOGICAL_NOT:
  -        case NUMBER_LITERAL:
  -        case IDENTIFIER:
  -        case LCURLY:
  -          ConditionalOrExpression();
  -          break;
  -        default:
  -          jj_la1[36] = jj_gen;
  -          jj_consume_token(-1);
  -          throw new ParseException();
  -        }
  -      }
  +      ConditionalOrExpression();
       } 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;}
  +  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);
  -      }
  +  if (jjtc000) {
  +    jjtree.closeNodeScope(jjtn000, true);
  +  }
       }
     }
   
  @@ -1649,7 +1713,7 @@
           ;
           break;
         default:
  -        jj_la1[37] = jj_gen;
  +        jj_la1[39] = jj_gen;
           break label_13;
         }
         jj_consume_token(LOGICAL_OR);
  @@ -1689,7 +1753,7 @@
           ;
           break;
         default:
  -        jj_la1[38] = jj_gen;
  +        jj_la1[40] = jj_gen;
           break label_14;
         }
         jj_consume_token(LOGICAL_AND);
  @@ -1730,7 +1794,7 @@
           ;
           break;
         default:
  -        jj_la1[39] = jj_gen;
  +        jj_la1[41] = jj_gen;
           break label_15;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1789,7 +1853,7 @@
           }
           break;
         default:
  -        jj_la1[40] = jj_gen;
  +        jj_la1[42] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1808,7 +1872,7 @@
           ;
           break;
         default:
  -        jj_la1[41] = jj_gen;
  +        jj_la1[43] = jj_gen;
           break label_16;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1921,7 +1985,7 @@
           }
           break;
         default:
  -        jj_la1[42] = jj_gen;
  +        jj_la1[44] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -1938,7 +2002,7 @@
           ;
           break;
         default:
  -        jj_la1[43] = jj_gen;
  +        jj_la1[45] = jj_gen;
           break label_17;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -1997,7 +2061,7 @@
           }
           break;
         default:
  -        jj_la1[44] = jj_gen;
  +        jj_la1[46] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -2015,7 +2079,7 @@
           ;
           break;
         default:
  -        jj_la1[45] = jj_gen;
  +        jj_la1[47] = jj_gen;
           break label_18;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -2101,7 +2165,7 @@
           }
           break;
         default:
  -        jj_la1[46] = jj_gen;
  +        jj_la1[48] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -2115,7 +2179,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
  -        jj_la1[47] = jj_gen;
  +        jj_la1[49] = jj_gen;
           ;
         }
         jj_consume_token(LOGICAL_NOT);
  @@ -2157,7 +2221,7 @@
           PrimaryExpression();
           break;
         default:
  -        jj_la1[48] = jj_gen;
  +        jj_la1[50] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -2170,7 +2234,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
  -      jj_la1[49] = jj_gen;
  +      jj_la1[51] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -2185,7 +2249,7 @@
         Reference();
         break;
       default:
  -      jj_la1[50] = jj_gen;
  +      jj_la1[52] = jj_gen;
         if (jj_2_12(2147483647)) {
           IntegerRange();
         } else {
  @@ -2205,7 +2269,7 @@
             jj_consume_token(RPAREN);
             break;
           default:
  -          jj_la1[51] = jj_gen;
  +          jj_la1[53] = jj_gen;
             jj_consume_token(-1);
             throw new ParseException();
           }
  @@ -2216,7 +2280,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
  -      jj_la1[52] = jj_gen;
  +      jj_la1[54] = jj_gen;
         ;
       }
     }
  @@ -2305,452 +2369,388 @@
       return retval;
     }
   
  -  final private boolean jj_3R_58() {
  -    if (jj_scan_token(TRUE)) return true;
  +  final private boolean jj_3R_53() {
  +    if (jj_scan_token(WORD)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_7() {
  -    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_8()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_30()) return true;
  +  final private boolean jj_3R_50() {
  +    if (jj_scan_token(IDENTIFIER)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_42() {
  -    if (jj_3R_54()) return true;
  +  final private boolean jj_3R_54() {
  +    if (jj_scan_token(STRING_LITERAL)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_88()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3_5() {
  -    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_6()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_28()) return true;
  +  final private boolean jj_3R_24() {
  +    if (jj_scan_token(WHITESPACE)) 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_39() {
  -    if (jj_scan_token(LCURLY)) return true;
  -    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;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3_7()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
  -    if (jj_scan_token(RCURLY)) return true;
  +  final private boolean jj_3R_41() {
  +    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_12() {
  -    if (jj_scan_token(LBRACKET)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +  final private boolean jj_3_4() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_34()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    xsp = jj_scanpos;
  -    if (jj_3R_35()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_36()) 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_37()) jj_scanpos = xsp;
  +    if (jj_3R_24()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(DOUBLEDOT)) return true;
  +    if (jj_3R_25()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_24() {
  +  final private boolean jj_3_10() {
       if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
     final private boolean jj_3R_38() {
  -    if (jj_scan_token(IDENTIFIER)) return true;
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3_5()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_52() {
  +  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_51() {
  -    if (jj_scan_token(LPAREN)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_60()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(RPAREN)) return true;
  +  final private boolean jj_3R_32() {
  +    if (jj_3R_50()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_19() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_38()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_39()) return true;
  +  final private boolean jj_3R_37() {
  +    if (jj_3R_41()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_32() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  +  final private boolean jj_3R_30() {
  +    if (jj_3R_50()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_50() {
  -    if (jj_3R_59()) return true;
  +  final private boolean jj_3_2() {
  +    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_41() {
  -    if (jj_scan_token(IDENTIFIER)) return true;
  +  final private boolean jj_3R_36() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_49() {
  -    if (jj_3R_58()) return true;
  +  final private boolean jj_3R_28() {
  +    if (jj_3R_41()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_48() {
  -    if (jj_3R_57()) return true;
  +  final private boolean jj_3_9() {
  +    if (jj_3R_31()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_47() {
  -    if (jj_3R_56()) return true;
  +  final private boolean jj_3R_82() {
  +    if (jj_scan_token(COMMA)) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    if (jj_3R_59()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_46() {
  -    if (jj_3R_19()) 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_45() {
  -    if (jj_3R_40()) return true;
  +  final private boolean jj_3_7() {
  +    if (jj_3R_31()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_4() {
  -    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_24()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    xsp = jj_scanpos;
  -    if (jj_3R_25()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_26()) return true;
  +  final private boolean jj_3R_27() {
  +    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_27()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(DOUBLEDOT)) return true;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_35() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_44() {
  -    if (jj_3R_55()) return true;
  +  final private boolean jj_3R_58() {
  +    if (jj_scan_token(FALSE)) 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_57() {
  +    if (jj_scan_token(TRUE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(LPAREN)) return true;
  +    return false;
  +  }
  +
  +  final private boolean jj_3_8() {
  +    if (jj_scan_token(DOT)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_42()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(REFMOD2_RPAREN)) return true;
  +    if (jj_3_9()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_32()) 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_43() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  +  final private boolean jj_3R_51() {
  +    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_82()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
  +    return false;
  +  }
  +
  +  final private boolean jj_3_6() {
  +    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_7()) {
  +    jj_scanpos = xsp;
  +    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;
       return false;
     }
   
  -  final private boolean jj_3R_31() {
  +  final private boolean jj_3_12() {
  +    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_43()) jj_scanpos = xsp;
  +    if (jj_3R_35()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       xsp = jj_scanpos;
  -    if (jj_3R_44()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_45()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_46()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_47()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_48()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_49()) {
  +    if (jj_3R_36()) {
       jj_scanpos = xsp;
  -    if (jj_3R_50()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_51()) return true;
  +    if (jj_3R_37()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       xsp = jj_scanpos;
  -    if (jj_3R_52()) jj_scanpos = xsp;
  +    if (jj_3R_38()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_73() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  +    if (jj_scan_token(DOUBLEDOT)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_68() {
  -    if (jj_3R_40()) return true;
  +  final private boolean jj_3R_40() {
  +    if (jj_scan_token(LCURLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_106() {
  -    if (jj_scan_token(MODULUS)) return true;
  +    if (jj_scan_token(IDENTIFIER)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_33()) return true;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3_8()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
  +    if (jj_scan_token(RCURLY)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_67() {
  -    if (jj_3R_19()) return true;
  +  final private boolean jj_3R_22() {
  +    if (jj_3R_41()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_105() {
  -    if (jj_scan_token(DIVIDE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_33()) return true;
  +  final private boolean jj_3R_26() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_83() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  +  final private boolean jj_3_1() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_66() {
  -    if (jj_3R_59()) return true;
  +  final private boolean jj_3R_39() {
  +    if (jj_scan_token(IDENTIFIER)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    Token xsp;
  +    while (true) {
  +      xsp = jj_scanpos;
  +      if (jj_3_6()) { jj_scanpos = xsp; break; }
  +      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    }
       return false;
     }
   
  -  final private boolean jj_3R_33() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3_11()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_53()) return true;
  +  final private boolean jj_3R_81() {
  +    if (jj_scan_token(LPAREN)) 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_11() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_32()) 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_33()) return true;
  +  final private boolean jj_3R_80() {
  +    if (jj_3R_58()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_53() {
  -    if (jj_3R_31()) return true;
  +  final private boolean jj_3R_33() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_104() {
  -    if (jj_scan_token(MULTIPLY)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_33()) return true;
  +  final private boolean jj_3R_79() {
  +    if (jj_3R_57()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_101() {
  +  final private boolean jj_3R_19() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_104()) {
  +    if (jj_3R_39()) {
       jj_scanpos = xsp;
  -    if (jj_3R_105()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_106()) return true;
  +    if (jj_3R_40()) 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_65() {
  -    if (jj_3R_58()) return true;
  +  final private boolean jj_3R_78() {
  +    if (jj_3R_56()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_55() {
  -    if (jj_scan_token(STRING_LITERAL)) return true;
  +  final private boolean jj_3R_77() {
  +    if (jj_3R_55()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_64() {
  -    if (jj_3R_57()) return true;
  +  final private boolean jj_3R_76() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_63() {
  -    if (jj_3R_56()) return true;
  +  final private boolean jj_3R_75() {
  +    if (jj_3R_41()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_62() {
  -    if (jj_3R_55()) return true;
  +  final private boolean jj_3R_21() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_40() {
  -    if (jj_scan_token(NUMBER_LITERAL)) return true;
  +  final private boolean jj_3_5() {
  +    if (jj_scan_token(LBRACKET)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_75() {
  -    if (jj_3R_40()) return true;
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_26()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_27()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_28()) return true;
  +    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_29()) 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;
       return false;
     }
   
  -  final private boolean jj_3R_80() {
  -    if (jj_scan_token(COMMA)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +  final private boolean jj_3R_74() {
       if (jj_3R_54()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_71() {
  -    if (jj_3R_40()) return true;
  +  final private boolean jj_3R_31() {
  +    if (jj_3R_50()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_95() {
  -    if (jj_3R_33()) return true;
  +    if (jj_scan_token(LPAREN)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_101()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
  +    xsp = jj_scanpos;
  +    if (jj_3R_51()) 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_61() {
  +  final private boolean jj_3R_73() {
       if (jj_scan_token(WHITESPACE)) 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_60() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_61()) jj_scanpos = xsp;
  +    if (jj_3R_73()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       xsp = jj_scanpos;
  -    if (jj_3R_62()) {
  +    if (jj_3R_74()) {
       jj_scanpos = xsp;
  -    if (jj_3R_63()) {
  +    if (jj_3R_75()) {
       jj_scanpos = xsp;
  -    if (jj_3R_64()) {
  +    if (jj_3R_76()) {
       jj_scanpos = xsp;
  -    if (jj_3R_65()) {
  +    if (jj_3R_77()) {
       jj_scanpos = xsp;
  -    if (jj_3R_66()) {
  +    if (jj_3R_78()) {
       jj_scanpos = xsp;
  -    if (jj_3R_67()) {
  +    if (jj_3R_79()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_80()) {
       jj_scanpos = xsp;
  -    if (jj_3R_68()) return true;
  +    if (jj_3R_81()) 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;
  @@ -2758,460 +2758,340 @@
       } 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_83()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_103() {
  -    if (jj_scan_token(MINUS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_95()) return true;
  +  final private boolean jj_3R_85() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_102() {
  -    if (jj_scan_token(PLUS)) return true;
  +  final private boolean jj_3R_72() {
  +    if (jj_3R_41()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_95()) return true;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_71() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_96() {
  +  final private boolean jj_3R_34() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_102()) {
  +    if (jj_3_11()) {
       jj_scanpos = xsp;
  -    if (jj_3R_103()) return true;
  +    if (jj_3R_52()) 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_69() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  +  final private boolean jj_3_11() {
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_33()) 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_34()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_91() {
  -    if (jj_3R_95()) return true;
  +  final private boolean jj_3R_52() {
  +    if (jj_3R_60()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_96()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_100() {
  -    if (jj_scan_token(LOGICAL_GE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_91()) return true;
  +  final private boolean jj_3R_83() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_76() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  +  final private boolean jj_3R_70() {
  +    if (jj_3R_58()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_99() {
  -    if (jj_scan_token(LOGICAL_LE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_91()) return true;
  +  final private boolean jj_3R_69() {
  +    if (jj_3R_57()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_74() {
  -    if (jj_3R_19()) return true;
  +  final private boolean jj_3R_68() {
  +    if (jj_3R_56()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_98() {
  -    if (jj_scan_token(LOGICAL_GT)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_91()) return true;
  +  final private boolean jj_3R_67() {
  +    if (jj_3R_55()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_70() {
  -    if (jj_3R_19()) return true;
  +  final private boolean jj_3R_66() {
  +    if (jj_3R_54()) 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_20() {
       if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_77() {
  -    if (jj_3R_54()) return true;
  +  final private boolean jj_3R_87() {
  +    if (jj_3R_41()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_80()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_97() {
  -    if (jj_scan_token(LOGICAL_LT)) return true;
  +  final private boolean jj_3R_89() {
  +    if (jj_scan_token(COMMA)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_91()) 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_92() {
  -    Token xsp;
  -    xsp = jj_scanpos;
  -    if (jj_3R_97()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_98()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_99()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_100()) return true;
  +  final private boolean jj_3R_63() {
  +    if (jj_3R_41()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_56() {
  -    if (jj_scan_token(LBRACKET)) 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;
  +    return false;
  +  }
  +
  +  final private boolean jj_3R_59() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_69()) jj_scanpos = xsp;
  +    if (jj_3R_65()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       xsp = jj_scanpos;
  +    if (jj_3R_66()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_67()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_68()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_69()) {
  +    jj_scanpos = xsp;
       if (jj_3R_70()) {
       jj_scanpos = xsp;
  -    if (jj_3R_71()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    xsp = jj_scanpos;
  -    if (jj_3R_72()) 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_73()) jj_scanpos = xsp;
  -    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    xsp = jj_scanpos;
  -    if (jj_3R_74()) {
  +    if (jj_3R_71()) {
       jj_scanpos = xsp;
  -    if (jj_3R_75()) return true;
  +    if (jj_3R_72()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       xsp = jj_scanpos;
  -    if (jj_3R_76()) jj_scanpos = xsp;
  +    if (jj_3R_83()) 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_89() {
  -    if (jj_3R_91()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_92()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_94() {
  -    if (jj_scan_token(LOGICAL_NOT_EQUALS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_89()) return true;
  +  final private boolean jj_3R_61() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_93() {
  -    if (jj_scan_token(LOGICAL_EQUALS)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_89()) return true;
  +  final private boolean jj_3_3() {
  +    if (jj_scan_token(LBRACKET)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_90() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_93()) {
  +    if (jj_3R_20()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_21()) {
       jj_scanpos = xsp;
  -    if (jj_3R_94()) return true;
  +    if (jj_3R_22()) 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_57() {
  -    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_77()) 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(RBRACKET)) return true;
  +    if (jj_scan_token(DOUBLEDOT)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_86() {
  -    if (jj_3R_89()) return true;
  +  final private boolean jj_3R_49() {
  +    if (jj_3R_58()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_90()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_87() {
  -    if (jj_scan_token(LOGICAL_AND)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_86()) return true;
  +  final private boolean jj_3R_88() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_84() {
  -    if (jj_3R_86()) return true;
  +  final private boolean jj_3R_86() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    Token xsp;
  -    while (true) {
  -      xsp = jj_scanpos;
  -      if (jj_3R_87()) { jj_scanpos = xsp; break; }
  -      if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    }
       return false;
     }
   
  -  final private boolean jj_3R_85() {
  -    if (jj_scan_token(LOGICAL_OR)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_84()) return true;
  +  final private boolean jj_3R_48() {
  +    if (jj_3R_57()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_2() {
  -    if (jj_scan_token(DOUBLE_ESCAPE)) return true;
  +  final private boolean jj_3R_84() {
  +    if (jj_scan_token(WHITESPACE)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_10() {
  -    if (jj_3R_31()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_scan_token(EQUALS)) return true;
  +  final private boolean jj_3R_62() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_82() {
  -    if (jj_3R_84()) return true;
  +  final private boolean jj_3R_64() {
  +    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_85()) { jj_scanpos = xsp; break; }
  +      if (jj_3R_89()) { jj_scanpos = xsp; break; }
         if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       }
       return false;
     }
   
  -  final private boolean jj_3R_81() {
  -    if (jj_3R_31()) 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_60()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_79() {
  -    if (jj_3R_82()) return true;
  +  final private boolean jj_3R_47() {
  +    if (jj_3R_56()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_78() {
  -    if (jj_3R_81()) return true;
  +  final private boolean jj_3R_55() {
  +    if (jj_scan_token(LBRACKET)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_60() {
       Token xsp;
       xsp = jj_scanpos;
  -    if (jj_3R_78()) {
  +    if (jj_3R_61()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_62()) {
       jj_scanpos = xsp;
  -    if (jj_3R_79()) 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;
  -    return false;
  -  }
  -
  -  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_3_9() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3_1() {
  -    if (jj_3R_19()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_22() {
  -    if (jj_3R_40()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_37() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  +    xsp = jj_scanpos;
  +    if (jj_3R_84()) 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;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_21() {
  -    if (jj_3R_19()) return true;
  +    xsp = jj_scanpos;
  +    if (jj_3R_85()) jj_scanpos = xsp;
  +    else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_86()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_87()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_27() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    xsp = jj_scanpos;
  +    if (jj_3R_88()) 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_30() {
  -    if (jj_3R_41()) return true;
  +  final private boolean jj_3R_46() {
  +    if (jj_3R_55()) 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_45() {
       if (jj_3R_41()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_36() {
  -    if (jj_3R_40()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_20() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_35() {
  -    if (jj_3R_19()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_26() {
  -    if (jj_3R_40()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3_8() {
  -    if (jj_3R_29()) return true;
  +  final private boolean jj_3R_44() {
  +    if (jj_3R_54()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_3() {
  +  final private boolean jj_3R_56() {
       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_20()) jj_scanpos = xsp;
  +    if (jj_3R_64()) jj_scanpos = xsp;
       else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    xsp = jj_scanpos;
  -    if (jj_3R_21()) {
  -    jj_scanpos = xsp;
  -    if (jj_3R_22()) 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_23()) 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;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_88() {
  -    if (jj_scan_token(COMMA)) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    if (jj_3R_54()) return true;
  +    if (jj_scan_token(RBRACKET)) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3_6() {
  -    if (jj_3R_29()) return true;
  +  final private boolean jj_3R_43() {
  +    if (jj_3R_53()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
     final private boolean jj_3R_25() {
  -    if (jj_3R_19()) return true;
  -    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  -    return false;
  -  }
  -
  -  final private boolean jj_3R_59() {
  -    if (jj_scan_token(FALSE)) return true;
  +    Token xsp;
  +    xsp = jj_scanpos;
  +    if (jj_3R_42()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_43()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_44()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_45()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_46()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_47()) {
  +    jj_scanpos = xsp;
  +    if (jj_3R_48()) {
  +    jj_scanpos = xsp;
  +    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;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
  +    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
   
  -  final private boolean jj_3R_34() {
  -    if (jj_scan_token(WHITESPACE)) return true;
  +  final private boolean jj_3R_42() {
  +    if (jj_3R_19()) return true;
       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
       return false;
     }
  @@ -3224,9 +3104,9 @@
     public boolean lookingAhead = false;
     private boolean jj_semLA;
     private int jj_gen;
  -  final private int[] jj_la1 = new int[53];
  -  final private int[] jj_la1_0 = {0x13f0360,0x0,0x13f0360,0x380000,0x1000000,0x6800002,0x800000,0x7800002,0x13f0360,0x8,0x7800002,0x800000,0x0,0x800000,0x800000,0x0,0x800000,0x800000,0x1000000,0x6000002,0x800000,0x8,0x7800002,0x0,0x0,0x0,0x1060060,0x800000,0x13f0360,0x0,0x0,0x0,0x13f0360,0x800000,0x13f0360,0x8000000,0x7800022,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x30000000,0xc0000000,0xc0000000,0x800000,0x7800022,0x800000,0x1000000,0x6000022,0x800000,};
  -  final private int[] jj_la1_1 = {0xf129000,0x9000,0xe120000,0x0,0x5120000,0x0,0x0,0x5120000,0xf129000,0x0,0x5020000,0x0,0x5020000,0x0,0x0,0x5020000,0x0,0x0,0x0,0x5020000,0x0,0x0,0x5020000,0x1000000,0x1000000,0x5000000,0xe020000,0x0,0xf129000,0x2000,0x2000,0x4000,0xf129000,0x0,0xf129000,0x0,0x5020200,0x4,0x2,0x180,0x180,0x78,0x78,0x0,0x0,0x1,0x1,0x0,0x5020000,0x0,0x5020000,0x0,0x0,};
  +  final private int[] jj_la1 = new int[55];
  +  final private int[] jj_la1_0 = {0x13f0360,0x0,0x13f0360,0x380000,0x1000000,0x6000002,0x800000,0x800000,0x800000,0x13f0360,0x8,0x7800002,0x800000,0x0,0x800000,0x800000,0x0,0x800000,0x800000,0x1000000,0x6000002,0x800000,0x8,0x7800002,0x0,0x0,0x0,0x1060060,0x800000,0x13f0360,0x0,0x0,0x0,0x13f0360,0x800000,0x13f0360,0x800000,0x800000,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x30000000,0xc0000000,0xc0000000,0x800000,0x7800022,0x800000,0x1000000,0x6000022,0x800000,};
  +  final private int[] jj_la1_1 = {0xf129000,0x9000,0xe120000,0x0,0x5120000,0x0,0x0,0x0,0x0,0xf129000,0x0,0x5020000,0x0,0x5020000,0x0,0x0,0x5020000,0x0,0x0,0x0,0x5020000,0x0,0x0,0x5020000,0x1000000,0x1000000,0x5000000,0xe020000,0x0,0xf129000,0x2000,0x2000,0x4000,0xf129000,0x0,0xf129000,0x0,0x0,0x0,0x4,0x2,0x180,0x180,0x78,0x78,0x0,0x0,0x1,0x1,0x0,0x5020000,0x0,0x5020000,0x0,0x0,};
     final private JJCalls[] jj_2_rtns = new JJCalls[12];
     private boolean jj_rescan = false;
     private int jj_gc = 0;
  @@ -3236,7 +3116,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 53; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 55; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -3246,7 +3126,7 @@
       jj_ntk = -1;
       jjtree.reset();
       jj_gen = 0;
  -    for (int i = 0; i < 53; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 55; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -3255,7 +3135,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 53; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 55; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -3265,7 +3145,7 @@
       jj_ntk = -1;
       jjtree.reset();
       jj_gen = 0;
  -    for (int i = 0; i < 53; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 55; i++) jj_la1[i] = -1;
       for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
     }
   
  @@ -3380,7 +3260,7 @@
         la1tokens[jj_kind] = true;
         jj_kind = -1;
       }
  -    for (int i = 0; i < 53; i++) {
  +    for (int i = 0; i < 55; i++) {
         if (jj_la1[i] == jj_gen) {
           for (int j = 0; j < 32; j++) {
             if ((jj_la1_0[i] & (1<<j)) != 0) {
  
  
  
  1.51      +1 -1      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.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- ParserTokenManager.java	23 Mar 2002 13:38:32 -0000	1.50
  +++ ParserTokenManager.java	25 Mar 2002 00:37:45 -0000	1.51
  @@ -6,6 +6,7 @@
   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.MacroParseException;
   import org.apache.velocity.util.StringUtils;
   
   public class ParserTokenManager implements ParserConstants
  @@ -103,7 +104,6 @@
   
           return;
       }
  -
   
       /**
        *  handles the dropdown logic when encountering a RPAREN
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>