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]