geirm       00/12/28 08:21:18

  Modified:    src/java/org/apache/velocity/runtime/parser Parser.jjt
  Log:
  Added support for new provisional range operator to parallel the 'Object Array' 
operator.
  
  Syntax in VTL :
    [n..m]
  where
    n = integer | reference
    m = integer | reference
  
  will produce object array containing the integers n .. m
  
  Can be used in two places :
  
    #set($foo = [1..3])
  or
    #foreach($i in [$a..3])
  
  Revision  Changes    Path
  1.50      +19 -6     
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jjt
  
  Index: Parser.jjt
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jjt,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- Parser.jjt        2000/12/27 23:48:41     1.49
  +++ Parser.jjt        2000/12/28 16:21:17     1.50
  @@ -120,7 +120,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
  - * @version $Id: Parser.jjt,v 1.49 2000/12/27 23:48:41 geirm Exp $ 
  + * @version $Id: Parser.jjt,v 1.50 2000/12/28 16:21:17 geirm Exp $ 
   */
   public class Parser
   {
  @@ -443,6 +443,7 @@
   { 
       <LBRACKET: "[">
   |   <RBRACKET: "]">
  +|   <COMMA:",">
   }
   
   <DIRECTIVE>
  @@ -451,11 +452,6 @@
     <DOUBLEDOT : ".." >
   }
   
  -<DIRECTIVE,REFMOD2>
  -TOKEN:
  -{
  -    <COMMA:",">
  -}
   
   <DIRECTIVE,REFMODIFIER>
   TOKEN:
  @@ -1070,6 +1066,7 @@
   |   Word()  
   |   StringLiteral()
   |   NumberLiteral()
  +|   LOOKAHEAD(4) IntegerRange()
   |   ObjectArray()
   |   True()
   |   False()
  @@ -1183,6 +1180,21 @@
   }
   
   /**
  + *  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() : {}
  +{
  +    <LBRACKET> [<WHITESPACE>] 
  +    ( Reference() | NumberLiteral()) 
  +    [<WHITESPACE>] <DOUBLEDOT> [<WHITESPACE>] 
  +    (Reference() | NumberLiteral()) 
  +    [<WHITESPACE>] <RBRACKET>
  +}
  +
  +
  +/**
    * This method has yet to be fully implemented
    * but will allow arbitrarily nested method
    * calls
  @@ -1382,6 +1394,7 @@
       StringLiteral()
     | NumberLiteral()    
     | Reference()
  +  | LOOKAHEAD(4) IntegerRange()
     | ObjectArray()
     | True()
     | False()
  
  
  

Reply via email to