Author: wglass
Date: Sun Jan 29 23:14:12 2006
New Revision: 373465

URL: http://svn.apache.org/viewcvs?rev=373465&view=rev
Log:
Allow either commas or spaces to separate macro arguments.  VELOCITY-430.

Added:
    jakarta/velocity/engine/trunk/test/templates/commas.vm   (with props)
    jakarta/velocity/engine/trunk/test/templates/compare/commas.cmp   (with 
props)
Modified:
    
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java
    
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jj
    
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
    
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java
    jakarta/velocity/engine/trunk/src/parser/Parser.jjt
    jakarta/velocity/engine/trunk/test/templates/templates.properties

Modified: 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java?rev=373465&r1=373464&r2=373465&view=diff
==============================================================================
--- 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java
 (original)
+++ 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java
 Sun Jan 29 23:14:12 2006
@@ -1,54 +1,15 @@
 /* Generated By:JJTree&JavaCC: Do not edit this line. Parser.java */
 package org.apache.velocity.runtime.parser;
 
-import java.io.ByteArrayInputStream;
-import java.io.Reader;
-import java.util.Hashtable;
+import java.io.*;
+import java.util.*;
+
 import org.apache.velocity.runtime.RuntimeServices;
+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.runtime.parser.node.ASTAddNode;
-import org.apache.velocity.runtime.parser.node.ASTAndNode;
-import org.apache.velocity.runtime.parser.node.ASTAssignment;
-import org.apache.velocity.runtime.parser.node.ASTBlock;
-import org.apache.velocity.runtime.parser.node.ASTComment;
-import org.apache.velocity.runtime.parser.node.ASTDirective;
-import org.apache.velocity.runtime.parser.node.ASTDivNode;
-import org.apache.velocity.runtime.parser.node.ASTEQNode;
-import org.apache.velocity.runtime.parser.node.ASTElseIfStatement;
-import org.apache.velocity.runtime.parser.node.ASTElseStatement;
-import org.apache.velocity.runtime.parser.node.ASTEscape;
-import org.apache.velocity.runtime.parser.node.ASTEscapedDirective;
-import org.apache.velocity.runtime.parser.node.ASTExpression;
-import org.apache.velocity.runtime.parser.node.ASTFalse;
-import org.apache.velocity.runtime.parser.node.ASTFloatingPointLiteral;
-import org.apache.velocity.runtime.parser.node.ASTGENode;
-import org.apache.velocity.runtime.parser.node.ASTGTNode;
-import org.apache.velocity.runtime.parser.node.ASTIdentifier;
-import org.apache.velocity.runtime.parser.node.ASTIfStatement;
-import org.apache.velocity.runtime.parser.node.ASTIntegerLiteral;
-import org.apache.velocity.runtime.parser.node.ASTIntegerRange;
-import org.apache.velocity.runtime.parser.node.ASTLENode;
-import org.apache.velocity.runtime.parser.node.ASTLTNode;
-import org.apache.velocity.runtime.parser.node.ASTMap;
-import org.apache.velocity.runtime.parser.node.ASTMethod;
-import org.apache.velocity.runtime.parser.node.ASTModNode;
-import org.apache.velocity.runtime.parser.node.ASTMulNode;
-import org.apache.velocity.runtime.parser.node.ASTNENode;
-import org.apache.velocity.runtime.parser.node.ASTNotNode;
-import org.apache.velocity.runtime.parser.node.ASTObjectArray;
-import org.apache.velocity.runtime.parser.node.ASTOrNode;
-import org.apache.velocity.runtime.parser.node.ASTReference;
-import org.apache.velocity.runtime.parser.node.ASTSetDirective;
-import org.apache.velocity.runtime.parser.node.ASTStop;
-import org.apache.velocity.runtime.parser.node.ASTStringLiteral;
-import org.apache.velocity.runtime.parser.node.ASTSubtractNode;
-import org.apache.velocity.runtime.parser.node.ASTText;
-import org.apache.velocity.runtime.parser.node.ASTTrue;
-import org.apache.velocity.runtime.parser.node.ASTWord;
-import org.apache.velocity.runtime.parser.node.ASTprocess;
-import org.apache.velocity.runtime.parser.node.SimpleNode;
+import org.apache.velocity.util.StringUtils;
 
 /**
  * This class is responsible for parsing a Velocity
@@ -587,9 +548,6 @@
 
 /**
  *   Supports the arguments for the Pluggable Directives
- *   We add whitespace in here as a token so the VMs can
- *   easily reconstruct a macro body from the token stream
- *   See Directive()
  */
   final public int DirectiveArg() throws ParseException {
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -764,6 +722,22 @@
           jj_la1[9] = jj_gen;
           ;
         }
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case COMMA:
+          jj_consume_token(COMMA);
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case WHITESPACE:
+            jj_consume_token(WHITESPACE);
+            break;
+          default:
+            jj_la1[10] = jj_gen;
+            ;
+          }
+          break;
+        default:
+          jj_la1[11] = jj_gen;
+          ;
+        }
         argType = DirectiveArg();
                 if (argType == ParserTreeConstants.JJTWORD)
                 {
@@ -791,7 +765,7 @@
                     {
                         /* if a VM and it's the 0th arg, not ok */
 
-                        {if (true) throw new MacroParseException("Invalid 
first arg "
+                        {if (true) throw new MacroParseException("Invalid 
first arg"
                             + " in #macro() directive - must be a"
                             + " word token (no \' or \" surrounding)", 
currentTemplateName, t);}
                     }
@@ -804,7 +778,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[10] = jj_gen;
+        jj_la1[12] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
@@ -844,7 +818,7 @@
             ;
             break;
           default:
-            jj_la1[11] = jj_gen;
+            jj_la1[13] = jj_gen;
             break label_4;
           }
         }
@@ -933,7 +907,7 @@
             ;
             break;
           default:
-            jj_la1[12] = jj_gen;
+            jj_la1[14] = jj_gen;
             break label_5;
           }
           jj_consume_token(COMMA);
@@ -947,7 +921,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
-          jj_la1[13] = jj_gen;
+          jj_la1[15] = jj_gen;
           ;
         }
       }
@@ -999,7 +973,7 @@
             ;
             break;
           default:
-            jj_la1[14] = jj_gen;
+            jj_la1[16] = jj_gen;
             break label_6;
           }
           jj_consume_token(COMMA);
@@ -1007,7 +981,7 @@
         }
         break;
       default:
-        jj_la1[15] = jj_gen;
+        jj_la1[17] = jj_gen;
         ;
       }
       jj_consume_token(RBRACKET);
@@ -1049,7 +1023,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[16] = jj_gen;
+        jj_la1[18] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1061,7 +1035,7 @@
         IntegerLiteral();
         break;
       default:
-        jj_la1[17] = jj_gen;
+        jj_la1[19] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -1070,7 +1044,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[18] = jj_gen;
+        jj_la1[20] = jj_gen;
         ;
       }
       jj_consume_token(DOUBLEDOT);
@@ -1079,7 +1053,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[19] = jj_gen;
+        jj_la1[21] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1091,7 +1065,7 @@
         IntegerLiteral();
         break;
       default:
-        jj_la1[20] = jj_gen;
+        jj_la1[22] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -1100,7 +1074,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[21] = jj_gen;
+        jj_la1[23] = jj_gen;
         ;
       }
       jj_consume_token(RBRACKET);
@@ -1136,7 +1110,7 @@
       jj_consume_token(WHITESPACE);
       break;
     default:
-      jj_la1[22] = jj_gen;
+      jj_la1[24] = jj_gen;
       ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1147,7 +1121,7 @@
       IntegerLiteral();
       break;
     default:
-      jj_la1[23] = jj_gen;
+      jj_la1[25] = jj_gen;
       if (jj_2_6(2147483647)) {
         IntegerRange();
       } else {
@@ -1172,7 +1146,7 @@
           FloatingPointLiteral();
           break;
         default:
-          jj_la1[24] = jj_gen;
+          jj_la1[26] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -1183,7 +1157,7 @@
       jj_consume_token(WHITESPACE);
       break;
     default:
-      jj_la1[25] = jj_gen;
+      jj_la1[27] = jj_gen;
       ;
     }
   }
@@ -1220,7 +1194,7 @@
             ;
             break;
           default:
-            jj_la1[26] = jj_gen;
+            jj_la1[28] = jj_gen;
             break label_7;
           }
           jj_consume_token(COMMA);
@@ -1228,7 +1202,7 @@
         }
         break;
       default:
-        jj_la1[27] = jj_gen;
+        jj_la1[29] = jj_gen;
         ;
       }
       jj_consume_token(REFMOD2_RPAREN);
@@ -1278,7 +1252,7 @@
               Identifier();
               break;
             default:
-              jj_la1[28] = jj_gen;
+              jj_la1[30] = jj_gen;
               jj_consume_token(-1);
               throw new ParseException();
             }
@@ -1304,7 +1278,7 @@
               Identifier();
               break;
             default:
-              jj_la1[29] = jj_gen;
+              jj_la1[31] = jj_gen;
               jj_consume_token(-1);
               throw new ParseException();
             }
@@ -1313,7 +1287,7 @@
         jj_consume_token(RCURLY);
         break;
       default:
-        jj_la1[30] = jj_gen;
+        jj_la1[32] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -1409,7 +1383,7 @@
         jj_consume_token(RCURLY);
         break;
       default:
-        jj_la1[31] = jj_gen;
+        jj_la1[33] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -1437,7 +1411,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[32] = jj_gen;
+        jj_la1[34] = jj_gen;
         ;
       }
       jj_consume_token(LPAREN);
@@ -1474,7 +1448,7 @@
             ;
             break;
           default:
-            jj_la1[33] = jj_gen;
+            jj_la1[35] = jj_gen;
             break label_10;
           }
           Statement();
@@ -1508,13 +1482,13 @@
             ;
             break;
           default:
-            jj_la1[34] = jj_gen;
+            jj_la1[36] = jj_gen;
             break label_11;
           }
         }
         break;
       default:
-        jj_la1[35] = jj_gen;
+        jj_la1[37] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1522,7 +1496,7 @@
         ElseStatement();
         break;
       default:
-        jj_la1[36] = jj_gen;
+        jj_la1[38] = jj_gen;
         ;
       }
       jj_consume_token(END);
@@ -1585,7 +1559,7 @@
             ;
             break;
           default:
-            jj_la1[37] = jj_gen;
+            jj_la1[39] = jj_gen;
             break label_12;
           }
           Statement();
@@ -1642,7 +1616,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[38] = jj_gen;
+        jj_la1[40] = jj_gen;
         ;
       }
       jj_consume_token(LPAREN);
@@ -1679,7 +1653,7 @@
             ;
             break;
           default:
-            jj_la1[39] = jj_gen;
+            jj_la1[41] = jj_gen;
             break label_13;
           }
           Statement();
@@ -1741,7 +1715,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[40] = jj_gen;
+        jj_la1[42] = jj_gen;
         ;
       }
       Reference();
@@ -1750,7 +1724,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[41] = jj_gen;
+        jj_la1[43] = jj_gen;
         ;
       }
       jj_consume_token(EQUALS);
@@ -1766,7 +1740,7 @@
         jj_consume_token(NEWLINE);
         break;
       default:
-        jj_la1[42] = jj_gen;
+        jj_la1[44] = jj_gen;
         ;
       }
     } catch (Throwable jjte000) {
@@ -1883,7 +1857,7 @@
         ;
         break;
       default:
-        jj_la1[43] = jj_gen;
+        jj_la1[45] = jj_gen;
         break label_14;
       }
       jj_consume_token(LOGICAL_OR);
@@ -1923,7 +1897,7 @@
         ;
         break;
       default:
-        jj_la1[44] = jj_gen;
+        jj_la1[46] = jj_gen;
         break label_15;
       }
       jj_consume_token(LOGICAL_AND);
@@ -1964,7 +1938,7 @@
         ;
         break;
       default:
-        jj_la1[45] = jj_gen;
+        jj_la1[47] = jj_gen;
         break label_16;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2023,7 +1997,7 @@
         }
         break;
       default:
-        jj_la1[46] = jj_gen;
+        jj_la1[48] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2042,7 +2016,7 @@
         ;
         break;
       default:
-        jj_la1[47] = jj_gen;
+        jj_la1[49] = jj_gen;
         break label_17;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2155,7 +2129,7 @@
         }
         break;
       default:
-        jj_la1[48] = jj_gen;
+        jj_la1[50] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2172,7 +2146,7 @@
         ;
         break;
       default:
-        jj_la1[49] = jj_gen;
+        jj_la1[51] = jj_gen;
         break label_18;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2231,7 +2205,7 @@
         }
         break;
       default:
-        jj_la1[50] = jj_gen;
+        jj_la1[52] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2249,7 +2223,7 @@
         ;
         break;
       default:
-        jj_la1[51] = jj_gen;
+        jj_la1[53] = jj_gen;
         break label_19;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2335,7 +2309,7 @@
         }
         break;
       default:
-        jj_la1[52] = jj_gen;
+        jj_la1[54] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2349,7 +2323,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[53] = jj_gen;
+        jj_la1[55] = jj_gen;
         ;
       }
       jj_consume_token(LOGICAL_NOT);
@@ -2393,7 +2367,7 @@
         PrimaryExpression();
         break;
       default:
-        jj_la1[54] = jj_gen;
+        jj_la1[56] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2406,7 +2380,7 @@
       jj_consume_token(WHITESPACE);
       break;
     default:
-      jj_la1[55] = jj_gen;
+      jj_la1[57] = jj_gen;
       ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2421,7 +2395,7 @@
       IntegerLiteral();
       break;
     default:
-      jj_la1[56] = jj_gen;
+      jj_la1[58] = jj_gen;
       if (jj_2_12(2147483647)) {
         IntegerRange();
       } else {
@@ -2447,7 +2421,7 @@
           jj_consume_token(RPAREN);
           break;
         default:
-          jj_la1[57] = jj_gen;
+          jj_la1[59] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -2458,7 +2432,7 @@
       jj_consume_token(WHITESPACE);
       break;
     default:
-      jj_la1[58] = jj_gen;
+      jj_la1[60] = jj_gen;
       ;
     }
   }
@@ -2547,28 +2521,28 @@
     finally { jj_save(11, xla); }
   }
 
-  final private boolean jj_3R_81() {
+  final private boolean jj_3R_82() {
     if (jj_scan_token(COMMA)) return true;
-    if (jj_3R_24()) return true;
+    if (jj_3R_25()) return true;
     return false;
   }
 
   final private boolean jj_3_8() {
-    if (jj_3R_28()) return true;
+    if (jj_3R_29()) return true;
     return false;
   }
 
-  final private boolean jj_3R_25() {
+  final private boolean jj_3R_26() {
     if (jj_3R_20()) return true;
     return false;
   }
 
-  final private boolean jj_3R_65() {
+  final private boolean jj_3R_66() {
     if (jj_scan_token(FALSE)) return true;
     return false;
   }
 
-  final private boolean jj_3R_64() {
+  final private boolean jj_3R_65() {
     if (jj_scan_token(TRUE)) return true;
     return false;
   }
@@ -2579,17 +2553,17 @@
     xsp = jj_scanpos;
     if (jj_3_10()) {
     jj_scanpos = xsp;
-    if (jj_3R_29()) return true;
+    if (jj_3R_30()) return true;
     }
     return false;
   }
 
-  final private boolean jj_3R_56() {
-    if (jj_3R_24()) return true;
+  final private boolean jj_3R_57() {
+    if (jj_3R_25()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_81()) { jj_scanpos = xsp; break; }
+      if (jj_3R_82()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
@@ -2600,12 +2574,12 @@
     xsp = jj_scanpos;
     if (jj_3_8()) {
     jj_scanpos = xsp;
-    if (jj_3R_27()) return true;
+    if (jj_3R_28()) return true;
     }
     return false;
   }
 
-  final private boolean jj_3R_34() {
+  final private boolean jj_3R_35() {
     if (jj_scan_token(LCURLY)) return true;
     if (jj_scan_token(IDENTIFIER)) return true;
     Token xsp;
@@ -2617,15 +2591,20 @@
     return false;
   }
 
+  final private boolean jj_3_2() {
+    if (jj_scan_token(DOUBLE_ESCAPE)) return true;
+    return false;
+  }
+
   final private boolean jj_3_12() {
     if (jj_scan_token(LBRACKET)) return true;
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
     xsp = jj_scanpos;
-    if (jj_3R_31()) {
+    if (jj_3R_32()) {
     jj_scanpos = xsp;
-    if (jj_3R_32()) return true;
+    if (jj_3R_33()) return true;
     }
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
@@ -2633,12 +2612,7 @@
     return false;
   }
 
-  final private boolean jj_3_2() {
-    if (jj_scan_token(DOUBLE_ESCAPE)) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_33() {
+  final private boolean jj_3R_34() {
     if (jj_scan_token(IDENTIFIER)) return true;
     Token xsp;
     while (true) {
@@ -2648,11 +2622,16 @@
     return false;
   }
 
-  final private boolean jj_3R_80() {
+  final private boolean jj_3R_81() {
     if (jj_scan_token(LPAREN)) return true;
     return false;
   }
 
+  final private boolean jj_3R_80() {
+    if (jj_3R_66()) return true;
+    return false;
+  }
+
   final private boolean jj_3R_79() {
     if (jj_3R_65()) return true;
     return false;
@@ -2661,9 +2640,9 @@
   final private boolean jj_3R_20() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_33()) {
+    if (jj_3R_34()) {
     jj_scanpos = xsp;
-    if (jj_3R_34()) return true;
+    if (jj_3R_35()) return true;
     }
     return false;
   }
@@ -2689,16 +2668,11 @@
   }
 
   final private boolean jj_3R_74() {
-    if (jj_3R_60()) return true;
+    if (jj_3R_36()) return true;
     return false;
   }
 
   final private boolean jj_3R_73() {
-    if (jj_3R_35()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_72() {
     if (jj_3R_20()) return true;
     return false;
   }
@@ -2709,9 +2683,9 @@
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
     xsp = jj_scanpos;
-    if (jj_3R_25()) {
+    if (jj_3R_26()) {
     jj_scanpos = xsp;
-    if (jj_3R_26()) return true;
+    if (jj_3R_27()) return true;
     }
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
@@ -2719,28 +2693,26 @@
     return false;
   }
 
-  final private boolean jj_3R_28() {
-    if (jj_3R_55()) return true;
+  final private boolean jj_3R_29() {
+    if (jj_3R_56()) return true;
     if (jj_scan_token(LPAREN)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_56()) jj_scanpos = xsp;
+    if (jj_3R_57()) jj_scanpos = xsp;
     if (jj_scan_token(REFMOD2_RPAREN)) return true;
     return false;
   }
 
-  final private boolean jj_3R_71() {
-    if (jj_3R_59()) return true;
+  final private boolean jj_3R_72() {
+    if (jj_3R_60()) return true;
     return false;
   }
 
-  final private boolean jj_3R_66() {
+  final private boolean jj_3R_67() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
     xsp = jj_scanpos;
-    if (jj_3R_71()) {
-    jj_scanpos = xsp;
     if (jj_3R_72()) {
     jj_scanpos = xsp;
     if (jj_3R_73()) {
@@ -2757,7 +2729,9 @@
     jj_scanpos = xsp;
     if (jj_3R_79()) {
     jj_scanpos = xsp;
-    if (jj_3R_80()) return true;
+    if (jj_3R_80()) {
+    jj_scanpos = xsp;
+    if (jj_3R_81()) return true;
     }
     }
     }
@@ -2770,40 +2744,40 @@
     return false;
   }
 
-  final private boolean jj_3R_54() {
-    if (jj_3R_61()) return true;
+  final private boolean jj_3R_55() {
+    if (jj_3R_62()) return true;
     return false;
   }
 
-  final private boolean jj_3R_53() {
+  final private boolean jj_3R_54() {
     if (jj_3R_20()) return true;
     return false;
   }
 
-  final private boolean jj_3R_52() {
-    if (jj_3R_65()) return true;
+  final private boolean jj_3R_53() {
+    if (jj_3R_66()) return true;
     return false;
   }
 
-  final private boolean jj_3R_84() {
+  final private boolean jj_3R_85() {
     if (jj_scan_token(COMMA)) return true;
-    if (jj_3R_24()) return true;
+    if (jj_3R_25()) return true;
     if (jj_scan_token(COLON)) return true;
-    if (jj_3R_24()) return true;
+    if (jj_3R_25()) return true;
     return false;
   }
 
-  final private boolean jj_3R_51() {
-    if (jj_3R_64()) return true;
+  final private boolean jj_3R_52() {
+    if (jj_3R_65()) return true;
     return false;
   }
 
-  final private boolean jj_3R_30() {
+  final private boolean jj_3R_31() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_3_11()) {
     jj_scanpos = xsp;
-    if (jj_3R_57()) return true;
+    if (jj_3R_58()) return true;
     }
     return false;
   }
@@ -2813,12 +2787,17 @@
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
     if (jj_scan_token(LOGICAL_NOT)) return true;
-    if (jj_3R_30()) return true;
+    if (jj_3R_31()) return true;
     return false;
   }
 
-  final private boolean jj_3R_57() {
-    if (jj_3R_66()) return true;
+  final private boolean jj_3R_58() {
+    if (jj_3R_67()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_51() {
+    if (jj_3R_64()) return true;
     return false;
   }
 
@@ -2828,53 +2807,46 @@
   }
 
   final private boolean jj_3R_49() {
-    if (jj_3R_62()) return true;
+    if (jj_3R_61()) return true;
     return false;
   }
 
   final private boolean jj_3R_48() {
-    if (jj_3R_60()) return true;
+    if (jj_3R_36()) return true;
     return false;
   }
 
   final private boolean jj_3R_47() {
-    if (jj_3R_35()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_46() {
-    if (jj_3R_59()) return true;
+    if (jj_3R_60()) return true;
     return false;
   }
 
-  final private boolean jj_3R_83() {
-    if (jj_3R_35()) return true;
+  final private boolean jj_3R_84() {
+    if (jj_3R_36()) return true;
     return false;
   }
 
   final private boolean jj_3R_22() {
-    if (jj_3R_35()) return true;
+    if (jj_3R_36()) return true;
     return false;
   }
 
-  final private boolean jj_3R_68() {
-    if (jj_3R_35()) return true;
+  final private boolean jj_3R_69() {
+    if (jj_3R_36()) return true;
     return false;
   }
 
-  final private boolean jj_3R_85() {
+  final private boolean jj_3R_86() {
     if (jj_scan_token(COMMA)) return true;
-    if (jj_3R_24()) return true;
+    if (jj_3R_25()) return true;
     return false;
   }
 
-  final private boolean jj_3R_24() {
+  final private boolean jj_3R_25() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
     xsp = jj_scanpos;
-    if (jj_3R_46()) {
-    jj_scanpos = xsp;
     if (jj_3R_47()) {
     jj_scanpos = xsp;
     if (jj_3R_48()) {
@@ -2889,7 +2861,9 @@
     jj_scanpos = xsp;
     if (jj_3R_53()) {
     jj_scanpos = xsp;
-    if (jj_3R_54()) return true;
+    if (jj_3R_54()) {
+    jj_scanpos = xsp;
+    if (jj_3R_55()) return true;
     }
     }
     }
@@ -2903,45 +2877,45 @@
     return false;
   }
 
-  final private boolean jj_3R_82() {
+  final private boolean jj_3_1() {
     if (jj_3R_20()) return true;
     return false;
   }
 
-  final private boolean jj_3R_21() {
+  final private boolean jj_3R_83() {
     if (jj_3R_20()) return true;
     return false;
   }
 
-  final private boolean jj_3R_67() {
+  final private boolean jj_3R_21() {
     if (jj_3R_20()) return true;
     return false;
   }
 
-  final private boolean jj_3_1() {
+  final private boolean jj_3R_68() {
     if (jj_3R_20()) return true;
     return false;
   }
 
-  final private boolean jj_3R_70() {
-    if (jj_3R_24()) return true;
+  final private boolean jj_3R_71() {
+    if (jj_3R_25()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_85()) { jj_scanpos = xsp; break; }
+      if (jj_3R_86()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  final private boolean jj_3R_60() {
+  final private boolean jj_3R_61() {
     if (jj_scan_token(LBRACKET)) return true;
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
     xsp = jj_scanpos;
-    if (jj_3R_67()) {
+    if (jj_3R_68()) {
     jj_scanpos = xsp;
-    if (jj_3R_68()) return true;
+    if (jj_3R_69()) return true;
     }
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
@@ -2949,9 +2923,9 @@
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
     xsp = jj_scanpos;
-    if (jj_3R_82()) {
+    if (jj_3R_83()) {
     jj_scanpos = xsp;
-    if (jj_3R_83()) return true;
+    if (jj_3R_84()) return true;
     }
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
@@ -2959,21 +2933,21 @@
     return false;
   }
 
-  final private boolean jj_3R_63() {
+  final private boolean jj_3R_64() {
     if (jj_scan_token(LBRACKET)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_70()) jj_scanpos = xsp;
+    if (jj_3R_71()) jj_scanpos = xsp;
     if (jj_scan_token(RBRACKET)) return true;
     return false;
   }
 
-  final private boolean jj_3R_45() {
-    if (jj_3R_65()) return true;
+  final private boolean jj_3R_46() {
+    if (jj_3R_66()) return true;
     return false;
   }
 
-  final private boolean jj_3R_69() {
+  final private boolean jj_3R_70() {
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
@@ -2981,29 +2955,29 @@
   }
 
   final private boolean jj_3_5() {
-    if (jj_3R_24()) return true;
+    if (jj_3R_25()) return true;
     if (jj_scan_token(COLON)) return true;
-    if (jj_3R_24()) return true;
+    if (jj_3R_25()) return true;
     Token xsp;
     while (true) {
       xsp = jj_scanpos;
-      if (jj_3R_84()) { jj_scanpos = xsp; break; }
+      if (jj_3R_85()) { jj_scanpos = xsp; break; }
     }
     return false;
   }
 
-  final private boolean jj_3R_44() {
-    if (jj_3R_64()) return true;
+  final private boolean jj_3R_45() {
+    if (jj_3R_65()) return true;
     return false;
   }
 
-  final private boolean jj_3R_62() {
+  final private boolean jj_3R_63() {
     if (jj_scan_token(LEFT_CURLEY)) return true;
     Token xsp;
     xsp = jj_scanpos;
     if (jj_3_5()) {
     jj_scanpos = xsp;
-    if (jj_3R_69()) return true;
+    if (jj_3R_70()) return true;
     }
     if (jj_scan_token(RIGHT_CURLEY)) return true;
     return false;
@@ -3025,6 +2999,11 @@
     return false;
   }
 
+  final private boolean jj_3R_44() {
+    if (jj_3R_64()) return true;
+    return false;
+  }
+
   final private boolean jj_3R_43() {
     if (jj_3R_63()) return true;
     return false;
@@ -3041,35 +3020,36 @@
   }
 
   final private boolean jj_3R_40() {
-    if (jj_3R_60()) return true;
+    if (jj_3R_36()) return true;
     return false;
   }
 
   final private boolean jj_3R_39() {
-    if (jj_3R_35()) return true;
+    if (jj_3R_60()) return true;
     return false;
   }
 
-  final private boolean jj_3R_38() {
-    if (jj_3R_59()) return true;
+  final private boolean jj_3R_23() {
+    if (jj_scan_token(COMMA)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(26)) jj_scanpos = xsp;
     return false;
   }
 
-  final private boolean jj_3R_37() {
-    if (jj_3R_58()) return true;
+  final private boolean jj_3R_38() {
+    if (jj_3R_59()) return true;
     return false;
   }
 
-  final private boolean jj_3R_36() {
+  final private boolean jj_3R_37() {
     if (jj_3R_20()) return true;
     return false;
   }
 
-  final private boolean jj_3R_23() {
+  final private boolean jj_3R_24() {
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_3R_36()) {
-    jj_scanpos = xsp;
     if (jj_3R_37()) {
     jj_scanpos = xsp;
     if (jj_3R_38()) {
@@ -3086,7 +3066,9 @@
     jj_scanpos = xsp;
     if (jj_3R_44()) {
     jj_scanpos = xsp;
-    if (jj_3R_45()) return true;
+    if (jj_3R_45()) {
+    jj_scanpos = xsp;
+    if (jj_3R_46()) return true;
     }
     }
     }
@@ -3099,12 +3081,12 @@
     return false;
   }
 
-  final private boolean jj_3R_58() {
+  final private boolean jj_3R_59() {
     if (jj_scan_token(WORD)) return true;
     return false;
   }
 
-  final private boolean jj_3R_55() {
+  final private boolean jj_3R_56() {
     if (jj_scan_token(IDENTIFIER)) return true;
     return false;
   }
@@ -3113,52 +3095,54 @@
     Token xsp;
     xsp = jj_scanpos;
     if (jj_scan_token(26)) jj_scanpos = xsp;
-    if (jj_3R_23()) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_23()) jj_scanpos = xsp;
+    if (jj_3R_24()) return true;
     return false;
   }
 
-  final private boolean jj_3R_29() {
-    if (jj_3R_55()) return true;
+  final private boolean jj_3R_60() {
+    if (jj_scan_token(STRING_LITERAL)) return true;
     return false;
   }
 
-  final private boolean jj_3R_59() {
-    if (jj_scan_token(STRING_LITERAL)) return true;
+  final private boolean jj_3R_30() {
+    if (jj_3R_56()) return true;
     return false;
   }
 
-  final private boolean jj_3R_35() {
+  final private boolean jj_3R_36() {
     if (jj_scan_token(INTEGER_LITERAL)) return true;
     return false;
   }
 
-  final private boolean jj_3R_27() {
-    if (jj_3R_55()) return true;
+  final private boolean jj_3R_28() {
+    if (jj_3R_56()) return true;
     return false;
   }
 
-  final private boolean jj_3R_32() {
-    if (jj_3R_35()) return true;
+  final private boolean jj_3R_33() {
+    if (jj_3R_36()) return true;
     return false;
   }
 
-  final private boolean jj_3R_61() {
+  final private boolean jj_3R_62() {
     if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
     return false;
   }
 
-  final private boolean jj_3R_31() {
+  final private boolean jj_3R_32() {
     if (jj_3R_20()) return true;
     return false;
   }
 
-  final private boolean jj_3R_26() {
-    if (jj_3R_35()) return true;
+  final private boolean jj_3R_27() {
+    if (jj_3R_36()) return true;
     return false;
   }
 
   final private boolean jj_3_10() {
-    if (jj_3R_28()) return true;
+    if (jj_3R_29()) return true;
     return false;
   }
 
@@ -3170,7 +3154,7 @@
   public boolean lookingAhead = false;
   private boolean jj_semLA;
   private int jj_gen;
-  final private int[] jj_la1 = new int[59];
+  final private int[] jj_la1 = new int[61];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -3180,13 +3164,13 @@
       jj_la1_2();
    }
    private static void jj_la1_0() {
-      jj_la1_0 = new int[] 
{0x9bc1b00,0x0,0x9bc1b00,0x400000,0x1840000,0x8000000,0x30000042,0x0,0x4000000,0x4000000,0x4000000,0x9bc1b00,0x8,0x4000000,0x8,0x3c000042,0x4000000,0x0,0x4000000,0x4000000,0x0,0x4000000,0x4000000,0x8000000,0x30000042,0x4000000,0x8,0x3c000042,0x0,0x0,0x0,0x8300300,0x4000000,0x9bc1b00,0x0,0x0,0x0,0x9bc1b00,0x4000000,0x9bc1b00,0x4000000,0x4000000,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x4000000,0x3c000142,0x4000000,0x8000000,0x30000142,0x4000000,};
+      jj_la1_0 = new int[] 
{0x9bc1b00,0x0,0x9bc1b00,0x400000,0x1840000,0x8000000,0x30000042,0x0,0x4000000,0x4000000,0x4000000,0x8,0x4000000,0x9bc1b00,0x8,0x4000000,0x8,0x3c000042,0x4000000,0x0,0x4000000,0x4000000,0x0,0x4000000,0x4000000,0x8000000,0x30000042,0x4000000,0x8,0x3c000042,0x0,0x0,0x0,0x8300300,0x4000000,0x9bc1b00,0x0,0x0,0x0,0x9bc1b00,0x4000000,0x9bc1b00,0x4000000,0x4000000,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x4000000,0x3c000142,0x4000000,0x8000000,0x30000142,0x4000000,};
    }
    private static void jj_la1_1() {
-      jj_la1_1 = new int[] 
{0xc6348000,0x48000,0x86300000,0x0,0x0,0x42100000,0x200000,0x6000000,0x0,0x0,0x0,0xc6348000,0x0,0x0,0x0,0x40300000,0x0,0x40100000,0x0,0x0,0x40100000,0x0,0x0,0x100000,0x40200000,0x0,0x0,0x40300000,0x40000000,0x40000000,0x40000000,0x80300000,0x0,0xc6348000,0x10000,0x10000,0x20000,0xc6348000,0x0,0xc6348000,0x0,0x0,0x0,0x20,0x10,0xc00,0xc00,0x3c0,0x3c0,0x1,0x1,0xe,0xe,0x0,0x40300000,0x0,0x40100000,0x200000,0x0,};
+      jj_la1_1 = new int[] 
{0xc6348000,0x48000,0x86300000,0x0,0x0,0x42100000,0x200000,0x6000000,0x0,0x0,0x0,0x0,0x0,0xc6348000,0x0,0x0,0x0,0x40300000,0x0,0x40100000,0x0,0x0,0x40100000,0x0,0x0,0x100000,0x40200000,0x0,0x0,0x40300000,0x40000000,0x40000000,0x40000000,0x80300000,0x0,0xc6348000,0x10000,0x10000,0x20000,0xc6348000,0x0,0xc6348000,0x0,0x0,0x0,0x20,0x10,0xc00,0xc00,0x3c0,0x3c0,0x1,0x1,0xe,0xe,0x0,0x40300000,0x0,0x40100000,0x200000,0x0,};
    }
    private static void jj_la1_2() {
-      jj_la1_2 = new int[] 
{0x3,0x0,0x3,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x0,0x0,0x1,0x3,0x0,0x3,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,};
+      jj_la1_2 = new int[] 
{0x3,0x0,0x3,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x0,0x0,0x1,0x3,0x0,0x3,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[12];
   private boolean jj_rescan = false;
@@ -3197,7 +3181,7 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 59; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 61; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -3207,7 +3191,7 @@
     jj_ntk = -1;
     jjtree.reset();
     jj_gen = 0;
-    for (int i = 0; i < 59; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 61; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -3216,7 +3200,7 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 59; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 61; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -3226,7 +3210,7 @@
     jj_ntk = -1;
     jjtree.reset();
     jj_gen = 0;
-    for (int i = 0; i < 59; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 61; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -3345,7 +3329,7 @@
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 59; i++) {
+    for (int i = 0; i < 61; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {

Modified: 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jj
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jj?rev=373465&r1=373464&r2=373465&view=diff
==============================================================================
--- 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jj
 (original)
+++ 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jj
 Sun Jan 29 23:14:12 2006
@@ -1,4 +1,4 @@
-/[EMAIL PROTECTED](jjtree) Generated By:JJTree: Do not edit this line. 
/home/henning/scratch/velocity/engine/src/java/org/apache/velocity/runtime/parser/Parser.jj
 */
+/[EMAIL PROTECTED](jjtree) Generated By:JJTree: Do not edit this line. 
C:/Documents and Settings/wglass/My 
Documents/GAWE/velocity/trunk2/src/java/org/apache/velocity/runtime/parser\Parser.jj
 */
 /[EMAIL PROTECTED]//*
  * Copyright 2000-2004 The Apache Software Foundation.
  *
@@ -21,14 +21,14 @@
  */
 
 options
-{                                                                              
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                     
+{                                                                              
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                     
 
     /**
      * The parser must be non-static in order for the
      * above option to work, otherwise the parser value
      * is passed in as null, which isn't all the useful ;)
      */
-    STATIC=false;                                                              
                                                                                
                                                                                
                                                                                
+    STATIC=false;                                                              
                                                                                
                                                                                
                                                                                
         
 
     /**
      * Declare that we are accepting unicode input and
@@ -1331,9 +1331,6 @@
 
 /**
  *   Supports the arguments for the Pluggable Directives
- *   We add whitespace in here as a token so the VMs can
- *   easily reconstruct a macro body from the token stream
- *   See Directive()
  */
 int DirectiveArg()       : {}
 {
@@ -1485,7 +1482,7 @@
      *  if this is indeed a token, match the #foo ( arg ) pattern
      */
 
-    [<WHITESPACE>] <LPAREN>  ( LOOKAHEAD(2) [<WHITESPACE>]
+    [<WHITESPACE>] <LPAREN>  ( LOOKAHEAD(2) [<WHITESPACE>] [<COMMA> 
[<WHITESPACE>]]
 
             argType = DirectiveArg()
             {
@@ -1515,7 +1512,7 @@
                     {
                         /* if a VM and it's the 0th arg, not ok */
 
-                        throw new MacroParseException("Invalid first arg "
+                        throw new MacroParseException("Invalid first arg"
                             + " in #macro() directive - must be a"
                             + " word token (no \' or \" surrounding)", 
currentTemplateName, t);
                     }

Modified: 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java?rev=373465&r1=373464&r2=373465&view=diff
==============================================================================
--- 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
 (original)
+++ 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
 Sun Jan 29 23:14:12 2006
@@ -1,8 +1,13 @@
 /* Generated By:JJTree&JavaCC: Do not edit this line. ParserTokenManager.java 
*/
 package org.apache.velocity.runtime.parser;
-import java.util.EmptyStackException;
-import java.util.Hashtable;
-import java.util.Stack;
+import java.io.*;
+import java.util.*;
+import org.apache.velocity.runtime.RuntimeServices;
+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
 {
@@ -974,7 +979,7 @@
       }
       else
       {
-         int hiByte = (curChar >> 8);
+         int hiByte = (int)(curChar >> 8);
          int i1 = hiByte >> 6;
          long l1 = 1L << (hiByte & 077);
          int i2 = (curChar & 0xff) >> 6;

Modified: 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java?rev=373465&r1=373464&r2=373465&view=diff
==============================================================================
--- 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java
 (original)
+++ 
jakarta/velocity/engine/trunk/src/java/org/apache/velocity/runtime/parser/ParserTreeConstants.java
 Sun Jan 29 23:14:12 2006
@@ -1,4 +1,4 @@
-/* Generated By:JJTree: Do not edit this line. C:/Documents and 
Settings/wglass/My 
Documents/GAWE/velocity/trunk/src/java/org/apache/velocity/runtime/parser\ParserTreeConstants.java
 */
+/* Generated By:JJTree: Do not edit this line. C:/Documents and 
Settings/wglass/My 
Documents/GAWE/velocity/trunk2/src/java/org/apache/velocity/runtime/parser\ParserTreeConstants.java
 */
 
 package org.apache.velocity.runtime.parser;
 

Modified: jakarta/velocity/engine/trunk/src/parser/Parser.jjt
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/engine/trunk/src/parser/Parser.jjt?rev=373465&r1=373464&r2=373465&view=diff
==============================================================================
--- jakarta/velocity/engine/trunk/src/parser/Parser.jjt (original)
+++ jakarta/velocity/engine/trunk/src/parser/Parser.jjt Sun Jan 29 23:14:12 2006
@@ -1360,7 +1360,7 @@
      *  if this is indeed a token, match the #foo ( arg ) pattern
      */
 
-    [<WHITESPACE>] <LPAREN>  ( LOOKAHEAD(2) [<WHITESPACE>]
+    [<WHITESPACE>] <LPAREN>  ( LOOKAHEAD(2) [<WHITESPACE>] [<COMMA> 
[<WHITESPACE>]]
 
             argType = DirectiveArg()
             {

Added: jakarta/velocity/engine/trunk/test/templates/commas.vm
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/engine/trunk/test/templates/commas.vm?rev=373465&view=auto
==============================================================================
--- jakarta/velocity/engine/trunk/test/templates/commas.vm (added)
+++ jakarta/velocity/engine/trunk/test/templates/commas.vm Sun Jan 29 23:14:12 
2006
@@ -0,0 +1,15 @@
+#macro(test $a $b)
+       a: $a
+       b: $b
+#end
+#macro(test2 $a, $b,$c,$d)
+       a2: $a
+       b2: $b
+       c2: $c
+       d2: $d
+#end
+
+#test("1","2")
+#test("1" , "2")
+#test("1" "2")
+#test2("1","2","3","4")

Propchange: jakarta/velocity/engine/trunk/test/templates/commas.vm
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/velocity/engine/trunk/test/templates/commas.vm
------------------------------------------------------------------------------
    svn:keywords = Id Author Date Revision

Added: jakarta/velocity/engine/trunk/test/templates/compare/commas.cmp
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/engine/trunk/test/templates/compare/commas.cmp?rev=373465&view=auto
==============================================================================
--- jakarta/velocity/engine/trunk/test/templates/compare/commas.cmp (added)
+++ jakarta/velocity/engine/trunk/test/templates/compare/commas.cmp Sun Jan 29 
23:14:12 2006
@@ -0,0 +1,11 @@
+
+       a: 1
+       b: 2
+       a: 1
+       b: 2
+       a: 1
+       b: 2
+       a2: 1
+       b2: 2
+       c2: 3
+       d2: 4

Propchange: jakarta/velocity/engine/trunk/test/templates/compare/commas.cmp
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/velocity/engine/trunk/test/templates/compare/commas.cmp
------------------------------------------------------------------------------
    svn:keywords = Id Author Date Revision

Modified: jakarta/velocity/engine/trunk/test/templates/templates.properties
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/engine/trunk/test/templates/templates.properties?rev=373465&r1=373464&r2=373465&view=diff
==============================================================================
--- jakarta/velocity/engine/trunk/test/templates/templates.properties (original)
+++ jakarta/velocity/engine/trunk/test/templates/templates.properties Sun Jan 
29 23:14:12 2006
@@ -46,4 +46,5 @@
 test.template.44 = stop2
 test.template.45 = foreach-null-list
 test.template.46 = curly-directive
-test.template.47 = comment-eof
\ No newline at end of file
+test.template.47 = comment-eof
+test.template.48 = commas



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to