Author: wglass
Date: Wed Oct  5 21:25:59 2005
New Revision: 306522

URL: http://svn.apache.org/viewcvs?rev=306522&view=rev
Log:
fixed bug with parse error when comment was last line of file.  VELOCITY-272

Added:
    jakarta/velocity/core/trunk/test/templates/comment-eof.vm
    jakarta/velocity/core/trunk/test/templates/compare/comment-eof.cmp
Modified:
    
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java
    
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jj
    
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jjt
    
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/ParserConstants.java
    
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
    jakarta/velocity/core/trunk/test/templates/templates.properties

Modified: 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java?rev=306522&r1=306521&r2=306522&view=diff
==============================================================================
--- 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java
 (original)
+++ 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.java
 Wed Oct  5 21:25:59 2005
@@ -109,12 +109,12 @@
              *  thrown by the Macro class when something is amiss in the
              *  Macro specification
              */
-            rsvc.getLog().error("Parser Error: #macro() : " + templateName, 
mee);
+            rsvc.error ("Parser Error:  #macro() : " + templateName + " : " + 
StringUtils.stackTrace(mee));
             throw new ParseException(mee.getMessage());
         }
         catch (ParseException pe)
         {
-            rsvc.getLog().error("Parser Exception: " + templateName, pe);
+            rsvc.error ("Parser Exception: " + templateName + " : " + 
StringUtils.stackTrace(pe));
             throw new ParseException (pe.currentToken,
                 pe.expectedTokenSequences, pe.tokenImage);
         }
@@ -124,7 +124,7 @@
         }
         catch (Exception e)
         {
-            rsvc.getLog().error("Parser Error: " + templateName, e);
+            rsvc.error ("Parser Error: " + templateName + " : " + 
StringUtils.stackTrace(e));
         }
 
         currentTemplateName = "";
@@ -231,10 +231,10 @@
         case RPAREN:
         case ESCAPE_DIRECTIVE:
         case SET_DIRECTIVE:
+        case SINGLE_LINE_COMMENT_START:
         case DOUBLE_ESCAPE:
         case ESCAPE:
         case TEXT:
-        case SINGLE_LINE_COMMENT:
         case FORMAL_COMMENT:
         case MULTI_LINE_COMMENT:
         case STRING_LITERAL:
@@ -300,7 +300,7 @@
         Reference();
       } else {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-        case SINGLE_LINE_COMMENT:
+        case SINGLE_LINE_COMMENT_START:
         case FORMAL_COMMENT:
         case MULTI_LINE_COMMENT:
           Comment();
@@ -435,8 +435,16 @@
   jjtree.openNodeScope(jjtn000);
     try {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case SINGLE_LINE_COMMENT:
-        jj_consume_token(SINGLE_LINE_COMMENT);
+      case SINGLE_LINE_COMMENT_START:
+        jj_consume_token(SINGLE_LINE_COMMENT_START);
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case SINGLE_LINE_COMMENT:
+          jj_consume_token(SINGLE_LINE_COMMENT);
+          break;
+        default:
+          jj_la1[3] = jj_gen;
+          ;
+        }
         break;
       case MULTI_LINE_COMMENT:
         jj_consume_token(MULTI_LINE_COMMENT);
@@ -445,14 +453,14 @@
         jj_consume_token(FORMAL_COMMENT);
         break;
       default:
-        jj_la1[3] = jj_gen;
+        jj_la1[4] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
     } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-      }
+          if (jjtc000) {
+            jjtree.closeNodeScope(jjtn000, true);
+          }
     }
   }
 
@@ -563,7 +571,7 @@
         {if (true) return ParserTreeConstants.JJTINTEGERLITERAL;}
       break;
     default:
-      jj_la1[4] = jj_gen;
+      jj_la1[5] = jj_gen;
       if (jj_2_3(2147483647)) {
         IntegerRange();
         {if (true) return ParserTreeConstants.JJTINTEGERRANGE;}
@@ -590,7 +598,7 @@
         {if (true) return ParserTreeConstants.JJTFALSE;}
           break;
         default:
-          jj_la1[5] = jj_gen;
+          jj_la1[6] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -623,7 +631,7 @@
         t = jj_consume_token(BRACKETED_WORD);
         break;
       default:
-        jj_la1[6] = jj_gen;
+        jj_la1[7] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -697,7 +705,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[7] = jj_gen;
+        jj_la1[8] = jj_gen;
         ;
       }
       jj_consume_token(LPAREN);
@@ -713,7 +721,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
-          jj_la1[8] = jj_gen;
+          jj_la1[9] = jj_gen;
           ;
         }
         argType = DirectiveArg();
@@ -762,7 +770,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[9] = jj_gen;
+        jj_la1[10] = jj_gen;
         ;
       }
       jj_consume_token(RPAREN);
@@ -782,10 +790,10 @@
           case RPAREN:
           case ESCAPE_DIRECTIVE:
           case SET_DIRECTIVE:
+          case SINGLE_LINE_COMMENT_START:
           case DOUBLE_ESCAPE:
           case ESCAPE:
           case TEXT:
-          case SINGLE_LINE_COMMENT:
           case FORMAL_COMMENT:
           case MULTI_LINE_COMMENT:
           case STRING_LITERAL:
@@ -802,7 +810,7 @@
             ;
             break;
           default:
-            jj_la1[10] = jj_gen;
+            jj_la1[11] = jj_gen;
             break label_4;
           }
         }
@@ -891,7 +899,7 @@
             ;
             break;
           default:
-            jj_la1[11] = jj_gen;
+            jj_la1[12] = jj_gen;
             break label_5;
           }
           jj_consume_token(COMMA);
@@ -905,7 +913,7 @@
           jj_consume_token(WHITESPACE);
           break;
         default:
-          jj_la1[12] = jj_gen;
+          jj_la1[13] = jj_gen;
           ;
         }
       }
@@ -957,7 +965,7 @@
             ;
             break;
           default:
-            jj_la1[13] = jj_gen;
+            jj_la1[14] = jj_gen;
             break label_6;
           }
           jj_consume_token(COMMA);
@@ -965,7 +973,7 @@
         }
         break;
       default:
-        jj_la1[14] = jj_gen;
+        jj_la1[15] = jj_gen;
         ;
       }
       jj_consume_token(RBRACKET);
@@ -1007,7 +1015,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[15] = jj_gen;
+        jj_la1[16] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1019,7 +1027,7 @@
         IntegerLiteral();
         break;
       default:
-        jj_la1[16] = jj_gen;
+        jj_la1[17] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -1028,7 +1036,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[17] = jj_gen;
+        jj_la1[18] = jj_gen;
         ;
       }
       jj_consume_token(DOUBLEDOT);
@@ -1037,7 +1045,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[18] = jj_gen;
+        jj_la1[19] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1049,7 +1057,7 @@
         IntegerLiteral();
         break;
       default:
-        jj_la1[19] = jj_gen;
+        jj_la1[20] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -1058,7 +1066,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[20] = jj_gen;
+        jj_la1[21] = jj_gen;
         ;
       }
       jj_consume_token(RBRACKET);
@@ -1094,7 +1102,7 @@
       jj_consume_token(WHITESPACE);
       break;
     default:
-      jj_la1[21] = jj_gen;
+      jj_la1[22] = jj_gen;
       ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1105,7 +1113,7 @@
       IntegerLiteral();
       break;
     default:
-      jj_la1[22] = jj_gen;
+      jj_la1[23] = jj_gen;
       if (jj_2_6(2147483647)) {
         IntegerRange();
       } else {
@@ -1130,7 +1138,7 @@
           FloatingPointLiteral();
           break;
         default:
-          jj_la1[23] = jj_gen;
+          jj_la1[24] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -1141,7 +1149,7 @@
       jj_consume_token(WHITESPACE);
       break;
     default:
-      jj_la1[24] = jj_gen;
+      jj_la1[25] = jj_gen;
       ;
     }
   }
@@ -1178,7 +1186,7 @@
             ;
             break;
           default:
-            jj_la1[25] = jj_gen;
+            jj_la1[26] = jj_gen;
             break label_7;
           }
           jj_consume_token(COMMA);
@@ -1186,7 +1194,7 @@
         }
         break;
       default:
-        jj_la1[26] = jj_gen;
+        jj_la1[27] = jj_gen;
         ;
       }
       jj_consume_token(REFMOD2_RPAREN);
@@ -1236,7 +1244,7 @@
               Identifier();
               break;
             default:
-              jj_la1[27] = jj_gen;
+              jj_la1[28] = jj_gen;
               jj_consume_token(-1);
               throw new ParseException();
             }
@@ -1262,7 +1270,7 @@
               Identifier();
               break;
             default:
-              jj_la1[28] = jj_gen;
+              jj_la1[29] = jj_gen;
               jj_consume_token(-1);
               throw new ParseException();
             }
@@ -1271,7 +1279,7 @@
         jj_consume_token(RCURLY);
         break;
       default:
-        jj_la1[29] = jj_gen;
+        jj_la1[30] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -1367,7 +1375,7 @@
         jj_consume_token(RCURLY);
         break;
       default:
-        jj_la1[30] = jj_gen;
+        jj_la1[31] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -1395,7 +1403,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[31] = jj_gen;
+        jj_la1[32] = jj_gen;
         ;
       }
       jj_consume_token(LPAREN);
@@ -1412,10 +1420,10 @@
           case RPAREN:
           case ESCAPE_DIRECTIVE:
           case SET_DIRECTIVE:
+          case SINGLE_LINE_COMMENT_START:
           case DOUBLE_ESCAPE:
           case ESCAPE:
           case TEXT:
-          case SINGLE_LINE_COMMENT:
           case FORMAL_COMMENT:
           case MULTI_LINE_COMMENT:
           case STRING_LITERAL:
@@ -1432,7 +1440,7 @@
             ;
             break;
           default:
-            jj_la1[32] = jj_gen;
+            jj_la1[33] = jj_gen;
             break label_10;
           }
           Statement();
@@ -1466,13 +1474,13 @@
             ;
             break;
           default:
-            jj_la1[33] = jj_gen;
+            jj_la1[34] = jj_gen;
             break label_11;
           }
         }
         break;
       default:
-        jj_la1[34] = jj_gen;
+        jj_la1[35] = jj_gen;
         ;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1480,7 +1488,7 @@
         ElseStatement();
         break;
       default:
-        jj_la1[35] = jj_gen;
+        jj_la1[36] = jj_gen;
         ;
       }
       jj_consume_token(END);
@@ -1523,10 +1531,10 @@
           case RPAREN:
           case ESCAPE_DIRECTIVE:
           case SET_DIRECTIVE:
+          case SINGLE_LINE_COMMENT_START:
           case DOUBLE_ESCAPE:
           case ESCAPE:
           case TEXT:
-          case SINGLE_LINE_COMMENT:
           case FORMAL_COMMENT:
           case MULTI_LINE_COMMENT:
           case STRING_LITERAL:
@@ -1543,7 +1551,7 @@
             ;
             break;
           default:
-            jj_la1[36] = jj_gen;
+            jj_la1[37] = jj_gen;
             break label_12;
           }
           Statement();
@@ -1600,7 +1608,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[37] = jj_gen;
+        jj_la1[38] = jj_gen;
         ;
       }
       jj_consume_token(LPAREN);
@@ -1617,10 +1625,10 @@
           case RPAREN:
           case ESCAPE_DIRECTIVE:
           case SET_DIRECTIVE:
+          case SINGLE_LINE_COMMENT_START:
           case DOUBLE_ESCAPE:
           case ESCAPE:
           case TEXT:
-          case SINGLE_LINE_COMMENT:
           case FORMAL_COMMENT:
           case MULTI_LINE_COMMENT:
           case STRING_LITERAL:
@@ -1637,7 +1645,7 @@
             ;
             break;
           default:
-            jj_la1[38] = jj_gen;
+            jj_la1[39] = jj_gen;
             break label_13;
           }
           Statement();
@@ -1699,7 +1707,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[39] = jj_gen;
+        jj_la1[40] = jj_gen;
         ;
       }
       Reference();
@@ -1708,7 +1716,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[40] = jj_gen;
+        jj_la1[41] = jj_gen;
         ;
       }
       jj_consume_token(EQUALS);
@@ -1724,7 +1732,7 @@
         jj_consume_token(NEWLINE);
         break;
       default:
-        jj_la1[41] = jj_gen;
+        jj_la1[42] = jj_gen;
         ;
       }
     } catch (Throwable jjte000) {
@@ -1841,7 +1849,7 @@
         ;
         break;
       default:
-        jj_la1[42] = jj_gen;
+        jj_la1[43] = jj_gen;
         break label_14;
       }
       jj_consume_token(LOGICAL_OR);
@@ -1881,7 +1889,7 @@
         ;
         break;
       default:
-        jj_la1[43] = jj_gen;
+        jj_la1[44] = jj_gen;
         break label_15;
       }
       jj_consume_token(LOGICAL_AND);
@@ -1922,7 +1930,7 @@
         ;
         break;
       default:
-        jj_la1[44] = jj_gen;
+        jj_la1[45] = jj_gen;
         break label_16;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1981,7 +1989,7 @@
         }
         break;
       default:
-        jj_la1[45] = jj_gen;
+        jj_la1[46] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2000,7 +2008,7 @@
         ;
         break;
       default:
-        jj_la1[46] = jj_gen;
+        jj_la1[47] = jj_gen;
         break label_17;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2113,7 +2121,7 @@
         }
         break;
       default:
-        jj_la1[47] = jj_gen;
+        jj_la1[48] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2130,7 +2138,7 @@
         ;
         break;
       default:
-        jj_la1[48] = jj_gen;
+        jj_la1[49] = jj_gen;
         break label_18;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2189,7 +2197,7 @@
         }
         break;
       default:
-        jj_la1[49] = jj_gen;
+        jj_la1[50] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2207,7 +2215,7 @@
         ;
         break;
       default:
-        jj_la1[50] = jj_gen;
+        jj_la1[51] = jj_gen;
         break label_19;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2293,7 +2301,7 @@
         }
         break;
       default:
-        jj_la1[51] = jj_gen;
+        jj_la1[52] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2307,7 +2315,7 @@
         jj_consume_token(WHITESPACE);
         break;
       default:
-        jj_la1[52] = jj_gen;
+        jj_la1[53] = jj_gen;
         ;
       }
       jj_consume_token(LOGICAL_NOT);
@@ -2351,7 +2359,7 @@
         PrimaryExpression();
         break;
       default:
-        jj_la1[53] = jj_gen;
+        jj_la1[54] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -2364,7 +2372,7 @@
       jj_consume_token(WHITESPACE);
       break;
     default:
-      jj_la1[54] = jj_gen;
+      jj_la1[55] = jj_gen;
       ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2379,7 +2387,7 @@
       IntegerLiteral();
       break;
     default:
-      jj_la1[55] = jj_gen;
+      jj_la1[56] = jj_gen;
       if (jj_2_12(2147483647)) {
         IntegerRange();
       } else {
@@ -2405,7 +2413,7 @@
           jj_consume_token(RPAREN);
           break;
         default:
-          jj_la1[56] = jj_gen;
+          jj_la1[57] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
@@ -2416,7 +2424,7 @@
       jj_consume_token(WHITESPACE);
       break;
     default:
-      jj_la1[57] = jj_gen;
+      jj_la1[58] = jj_gen;
       ;
     }
   }
@@ -2505,17 +2513,6 @@
     finally { jj_save(11, xla); }
   }
 
-  final private boolean jj_3R_81() {
-    if (jj_scan_token(COMMA)) return true;
-    if (jj_3R_24()) return true;
-    return false;
-  }
-
-  final private boolean jj_3_8() {
-    if (jj_3R_28()) return true;
-    return false;
-  }
-
   final private boolean jj_3R_25() {
     if (jj_3R_20()) return true;
     return false;
@@ -3120,6 +3117,17 @@
     return false;
   }
 
+  final private boolean jj_3R_81() {
+    if (jj_scan_token(COMMA)) return true;
+    if (jj_3R_24()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_8() {
+    if (jj_3R_28()) return true;
+    return false;
+  }
+
   public ParserTokenManager token_source;
   public Token token, jj_nt;
   private int jj_ntk;
@@ -3128,7 +3136,7 @@
   public boolean lookingAhead = false;
   private boolean jj_semLA;
   private int jj_gen;
-  final private int[] jj_la1 = new int[58];
+  final private int[] jj_la1 = new int[59];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static private int[] jj_la1_2;
@@ -3138,13 +3146,13 @@
       jj_la1_2();
    }
    private static void jj_la1_0() {
-      jj_la1_0 = new int[] 
{0x9f81b00,0x0,0x9f81b00,0x1c00000,0x8000000,0x30000042,0x0,0x4000000,0x4000000,0x4000000,0x9f81b00,0x8,0x4000000,0x8,0x3c000042,0x4000000,0x0,0x4000000,0x4000000,0x0,0x4000000,0x4000000,0x8000000,0x30000042,0x4000000,0x8,0x3c000042,0x0,0x0,0x0,0x8300300,0x4000000,0x9f81b00,0x0,0x0,0x0,0x9f81b00,0x4000000,0x9f81b00,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,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,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,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,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,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;
@@ -3155,7 +3163,7 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 58; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 59; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -3165,7 +3173,7 @@
     jj_ntk = -1;
     jjtree.reset();
     jj_gen = 0;
-    for (int i = 0; i < 58; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 59; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -3174,7 +3182,7 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 58; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 59; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -3184,7 +3192,7 @@
     jj_ntk = -1;
     jjtree.reset();
     jj_gen = 0;
-    for (int i = 0; i < 58; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 59; i++) jj_la1[i] = -1;
     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
@@ -3303,7 +3311,7 @@
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 58; i++) {
+    for (int i = 0; i < 59; 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/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jj
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jj?rev=306522&r1=306521&r2=306522&view=diff
==============================================================================
--- 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jj
 (original)
+++ 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jj
 Wed Oct  5 21:25:59 2005
@@ -630,22 +630,6 @@
         }
     }
 
-|   "##"
-   {
-        if (!inComment)
-        {
-            if (curLexState == REFERENCE)
-            {
-                inReference = false;
-                stateStackPop();
-            }
-
-            inComment = true;
-            stateStackPush();
-            SwitchTo(IN_SINGLE_LINE_COMMENT);
-        }
-     }
-
 |   <"#**" ~["#"]>
     {
         input_stream.backup(1);
@@ -689,6 +673,29 @@
     }
 }
 
+
+// treat the single line comment case separately 
+// to avoid ##<EOF> errors
+<*>
+TOKEN : 
+{
+   <SINGLE_LINE_COMMENT_START: "##">
+   {
+        if (!inComment)
+        {
+            if (curLexState == REFERENCE)
+            {
+                inReference = false;
+                stateStackPop();
+            }
+
+            inComment = true;
+            stateStackPush();
+            SwitchTo(IN_SINGLE_LINE_COMMENT);
+        }
+     }
+}
+
 TOKEN :
 {
     <DOUBLE_ESCAPE : "\\\\">
@@ -704,7 +711,7 @@
 <IN_SINGLE_LINE_COMMENT>
 TOKEN :
 {
-  <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n" >
+  <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n">
   {
      inComment = false;
      stateStackPop();
@@ -1212,16 +1219,16 @@
   jjtree.openNodeScope(jjtn000);
 /[EMAIL PROTECTED]/}
 {/[EMAIL PROTECTED](jjtree) Comment */
-    try {
+        try {
 /[EMAIL PROTECTED]/
-    <SINGLE_LINE_COMMENT>
+       <SINGLE_LINE_COMMENT_START> ( <SINGLE_LINE_COMMENT> ) ?
 |   <MULTI_LINE_COMMENT>
 |   <FORMAL_COMMENT>/[EMAIL PROTECTED](jjtree)*/
-    } finally {
-      if (jjtc000) {
-        jjtree.closeNodeScope(jjtn000, true);
-      }
-    }
+        } finally {
+          if (jjtc000) {
+            jjtree.closeNodeScope(jjtn000, true);
+          }
+        }
 /[EMAIL PROTECTED]/
 }
 

Modified: 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jjt
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jjt?rev=306522&r1=306521&r2=306522&view=diff
==============================================================================
--- 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jjt
 (original)
+++ 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/Parser.jjt
 Wed Oct  5 21:25:59 2005
@@ -651,22 +651,6 @@
         }
     }
 
-|   "##"
-   {
-        if (!inComment)
-        {
-            if (curLexState == REFERENCE)
-            {
-                inReference = false;
-                stateStackPop();
-            }
-
-            inComment = true;
-            stateStackPush();
-            SwitchTo(IN_SINGLE_LINE_COMMENT);
-        }
-     }
-
 |   <"#**" ~["#"]>
     {
         input_stream.backup(1);
@@ -710,6 +694,29 @@
     }
 }
 
+
+// treat the single line comment case separately 
+// to avoid ##<EOF> errors
+<*>
+TOKEN : 
+{
+   <SINGLE_LINE_COMMENT_START: "##">
+   {
+        if (!inComment)
+        {
+            if (curLexState == REFERENCE)
+            {
+                inReference = false;
+                stateStackPop();
+            }
+
+            inComment = true;
+            stateStackPush();
+            SwitchTo(IN_SINGLE_LINE_COMMENT);
+        }
+     }
+}
+
 TOKEN :
 {
     <DOUBLE_ESCAPE : "\\\\">
@@ -725,7 +732,7 @@
 <IN_SINGLE_LINE_COMMENT>
 TOKEN :
 {
-  <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n" >
+  <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n">
   {
      inComment = false;
      stateStackPop();
@@ -1164,7 +1171,7 @@
 
 void Comment() : {}
 {
-    <SINGLE_LINE_COMMENT>
+       <SINGLE_LINE_COMMENT_START> ( <SINGLE_LINE_COMMENT> ) ?
 |   <MULTI_LINE_COMMENT>
 |   <FORMAL_COMMENT>
 }

Modified: 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/ParserConstants.java
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/ParserConstants.java?rev=306522&r1=306521&r2=306522&view=diff
==============================================================================
--- 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/ParserConstants.java
 (original)
+++ 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/ParserConstants.java
 Wed Oct  5 21:25:59 2005
@@ -18,7 +18,8 @@
   int SET_DIRECTIVE = 12;
   int DOLLAR = 13;
   int DOLLARBANG = 14;
-  int HASH = 18;
+  int HASH = 17;
+  int SINGLE_LINE_COMMENT_START = 18;
   int DOUBLE_ESCAPE = 19;
   int ESCAPE = 20;
   int TEXT = 21;
@@ -94,10 +95,10 @@
     "<SET_DIRECTIVE>",
     "<DOLLAR>",
     "<DOLLARBANG>",
-    "\"##\"",
-    "<token of kind 16>",
+    "<token of kind 15>",
     "\"#*\"",
     "\"#\"",
+    "\"##\"",
     "\"\\\\\\\\\"",
     "\"\\\\\"",
     "<TEXT>",

Modified: 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java?rev=306522&r1=306521&r2=306522&view=diff
==============================================================================
--- 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
 (original)
+++ 
jakarta/velocity/core/trunk/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
 Wed Oct  5 21:25:59 2005
@@ -178,7 +178,7 @@
             return 60;
          if ((active0 & 0x80000000L) != 0L)
             return 96;
-         if ((active0 & 0x68000L) != 0L)
+         if ((active0 & 0x70000L) != 0L)
             return 7;
          return -1;
       case 1:
@@ -188,7 +188,7 @@
             jjmatchedPos = 1;
             return 58;
          }
-         if ((active0 & 0x20000L) != 0L)
+         if ((active0 & 0x10000L) != 0L)
             return 5;
          return -1;
       case 2:
@@ -236,8 +236,8 @@
    switch(curChar)
    {
       case 35:
-         jjmatchedKind = 18;
-         return jjMoveStringLiteralDfa1_0(0x28000L);
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_0(0x50000L);
       case 37:
          return jjStopAtPos(0, 35);
       case 40:
@@ -284,12 +284,12 @@
    switch(curChar)
    {
       case 35:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 15);
+         if ((active0 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 18);
          break;
       case 42:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_0(1, 17, 5);
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_0(1, 16, 5);
          break;
       case 46:
          if ((active0 & 0x10L) != 0L)
@@ -524,8 +524,8 @@
                      jjstateSet[jjnewStateCnt++] = 6;
                   break;
                case 6:
-                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
-                     kind = 16;
+                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 15)
+                     kind = 15;
                   break;
                case 7:
                   if (curChar == 42)
@@ -826,8 +826,8 @@
                      jjstateSet[jjnewStateCnt++] = 33;
                   break;
                case 6:
-                  if (kind > 16)
-                     kind = 16;
+                  if (kind > 15)
+                     kind = 15;
                   break;
                case 11:
                   if ((0xffffffffefffffffL & l) != 0L)
@@ -989,8 +989,8 @@
             switch(jjstateSet[--i])
             {
                case 6:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 16)
-                     kind = 16;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15)
+                     kind = 15;
                   break;
                case 11:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
@@ -1022,7 +1022,7 @@
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x68000L) != 0L)
+         if ((active0 & 0x70000L) != 0L)
             return 2;
          return -1;
       default :
@@ -1046,8 +1046,8 @@
    switch(curChar)
    {
       case 35:
-         jjmatchedKind = 18;
-         return jjMoveStringLiteralDfa1_6(0x28000L);
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_6(0x50000L);
       case 42:
          return jjMoveStringLiteralDfa1_6(0x1000000L);
       default :
@@ -1064,14 +1064,14 @@
    switch(curChar)
    {
       case 35:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 15);
+         if ((active0 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 18);
          else if ((active0 & 0x1000000L) != 0L)
             return jjStopAtPos(1, 24);
          break;
       case 42:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_6(1, 17, 0);
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_6(1, 16, 0);
          break;
       default :
          break;
@@ -1112,8 +1112,8 @@
                      jjstateSet[jjnewStateCnt++] = 1;
                   break;
                case 1:
-                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
-                     kind = 16;
+                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 15)
+                     kind = 15;
                   break;
                case 2:
                   if (curChar == 42)
@@ -1154,8 +1154,8 @@
                      jjCheckNAddStates(52, 55);
                   break;
                case 1:
-                  if (kind > 16)
-                     kind = 16;
+                  if (kind > 15)
+                     kind = 15;
                   break;
                case 5:
                   if (curChar == 92)
@@ -1185,8 +1185,8 @@
             switch(jjstateSet[--i])
             {
                case 1:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 16)
-                     kind = 16;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15)
+                     kind = 15;
                   break;
                default : break;
             }
@@ -1210,7 +1210,7 @@
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x68000L) != 0L)
+         if ((active0 & 0x70000L) != 0L)
             return 2;
          return -1;
       default :
@@ -1234,8 +1234,8 @@
    switch(curChar)
    {
       case 35:
-         jjmatchedKind = 18;
-         return jjMoveStringLiteralDfa1_4(0x28000L);
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_4(0x50000L);
       default :
          return jjMoveNfa_4(3, 0);
    }
@@ -1250,12 +1250,12 @@
    switch(curChar)
    {
       case 35:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 15);
+         if ((active0 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 18);
          break;
       case 42:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_4(1, 17, 0);
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_4(1, 16, 0);
          break;
       default :
          break;
@@ -1306,8 +1306,8 @@
                      jjstateSet[jjnewStateCnt++] = 1;
                   break;
                case 1:
-                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
-                     kind = 16;
+                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 15)
+                     kind = 15;
                   break;
                case 2:
                   if (curChar == 42)
@@ -1509,8 +1509,8 @@
                      jjstateSet[jjnewStateCnt++] = 4;
                   break;
                case 1:
-                  if (kind > 16)
-                     kind = 16;
+                  if (kind > 15)
+                     kind = 15;
                   break;
                case 4:
                   if (curChar == 102 && kind > 47)
@@ -1757,8 +1757,8 @@
             switch(jjstateSet[--i])
             {
                case 1:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 16)
-                     kind = 16;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15)
+                     kind = 15;
                   break;
                default : break;
             }
@@ -1784,7 +1784,7 @@
       case 0:
          if ((active0 & 0x180000L) != 0L)
             return 14;
-         if ((active0 & 0x68000L) != 0L)
+         if ((active0 & 0x70000L) != 0L)
             return 29;
          return -1;
       default :
@@ -1808,8 +1808,8 @@
    switch(curChar)
    {
       case 35:
-         jjmatchedKind = 18;
-         return jjMoveStringLiteralDfa1_3(0x28000L);
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_3(0x50000L);
       case 92:
          jjmatchedKind = 20;
          return jjMoveStringLiteralDfa1_3(0x80000L);
@@ -1827,12 +1827,12 @@
    switch(curChar)
    {
       case 35:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 15);
+         if ((active0 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 18);
          break;
       case 42:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_3(1, 17, 27);
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_3(1, 16, 27);
          break;
       case 92:
          if ((active0 & 0x80000L) != 0L)
@@ -1966,8 +1966,8 @@
                      jjstateSet[jjnewStateCnt++] = 28;
                   break;
                case 28:
-                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
-                     kind = 16;
+                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 15)
+                     kind = 15;
                   break;
                default : break;
             }
@@ -2078,8 +2078,8 @@
                      jjAddStates(109, 110);
                   break;
                case 28:
-                  if (kind > 16)
-                     kind = 16;
+                  if (kind > 15)
+                     kind = 15;
                   break;
                default : break;
             }
@@ -2105,8 +2105,8 @@
                   jjCheckNAdd(12);
                   break;
                case 28:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 16)
-                     kind = 16;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15)
+                     kind = 15;
                   break;
                default : break;
             }
@@ -2130,7 +2130,7 @@
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x68000L) != 0L)
+         if ((active0 & 0x70000L) != 0L)
             return 2;
          return -1;
       default :
@@ -2154,8 +2154,8 @@
    switch(curChar)
    {
       case 35:
-         jjmatchedKind = 18;
-         return jjMoveStringLiteralDfa1_7(0x28000L);
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_7(0x50000L);
       case 42:
          return jjMoveStringLiteralDfa1_7(0x800000L);
       default :
@@ -2172,14 +2172,14 @@
    switch(curChar)
    {
       case 35:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 15);
+         if ((active0 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 18);
          else if ((active0 & 0x800000L) != 0L)
             return jjStopAtPos(1, 23);
          break;
       case 42:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_7(1, 17, 0);
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_7(1, 16, 0);
          break;
       default :
          break;
@@ -2220,8 +2220,8 @@
                      jjstateSet[jjnewStateCnt++] = 1;
                   break;
                case 1:
-                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
-                     kind = 16;
+                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 15)
+                     kind = 15;
                   break;
                case 2:
                   if (curChar == 42)
@@ -2262,8 +2262,8 @@
                      jjCheckNAddStates(52, 55);
                   break;
                case 1:
-                  if (kind > 16)
-                     kind = 16;
+                  if (kind > 15)
+                     kind = 15;
                   break;
                case 5:
                   if (curChar == 92)
@@ -2293,8 +2293,8 @@
             switch(jjstateSet[--i])
             {
                case 1:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 16)
-                     kind = 16;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15)
+                     kind = 15;
                   break;
                default : break;
             }
@@ -2318,7 +2318,7 @@
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x68000L) != 0L)
+         if ((active0 & 0x70000L) != 0L)
             return 2;
          return -1;
       default :
@@ -2342,8 +2342,8 @@
    switch(curChar)
    {
       case 35:
-         jjmatchedKind = 18;
-         return jjMoveStringLiteralDfa1_8(0x28000L);
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_8(0x50000L);
       default :
          return jjMoveNfa_8(3, 0);
    }
@@ -2358,12 +2358,12 @@
    switch(curChar)
    {
       case 35:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 15);
+         if ((active0 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 18);
          break;
       case 42:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_8(1, 17, 0);
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_8(1, 16, 0);
          break;
       default :
          break;
@@ -2411,8 +2411,8 @@
                      jjstateSet[jjnewStateCnt++] = 1;
                   break;
                case 1:
-                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
-                     kind = 16;
+                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 15)
+                     kind = 15;
                   break;
                case 2:
                   if (curChar == 42)
@@ -2465,8 +2465,8 @@
                      jjCheckNAddStates(111, 114);
                   break;
                case 1:
-                  if (kind > 16)
-                     kind = 16;
+                  if (kind > 15)
+                     kind = 15;
                   break;
                case 8:
                   if (curChar == 92)
@@ -2496,8 +2496,8 @@
             switch(jjstateSet[--i])
             {
                case 1:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 16)
-                     kind = 16;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15)
+                     kind = 15;
                   break;
                default : break;
             }
@@ -2521,7 +2521,7 @@
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x68000L) != 0L)
+         if ((active0 & 0x70000L) != 0L)
             return 2;
          if ((active0 & 0x30000000L) != 0L)
          {
@@ -2530,7 +2530,7 @@
          }
          return -1;
       case 1:
-         if ((active0 & 0x20000L) != 0L)
+         if ((active0 & 0x10000L) != 0L)
             return 0;
          if ((active0 & 0x30000000L) != 0L)
          {
@@ -2578,8 +2578,8 @@
    switch(curChar)
    {
       case 35:
-         jjmatchedKind = 18;
-         return jjMoveStringLiteralDfa1_5(0x28000L);
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_5(0x50000L);
       case 102:
          return jjMoveStringLiteralDfa1_5(0x20000000L);
       case 116:
@@ -2602,12 +2602,12 @@
    switch(curChar)
    {
       case 35:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 15);
+         if ((active0 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 18);
          break;
       case 42:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_5(1, 17, 0);
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_5(1, 16, 0);
          break;
       case 97:
          return jjMoveStringLiteralDfa2_5(active0, 0x20000000L);
@@ -2716,8 +2716,8 @@
                      jjstateSet[jjnewStateCnt++] = 1;
                   break;
                case 1:
-                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
-                     kind = 16;
+                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 15)
+                     kind = 15;
                   break;
                case 2:
                   if (curChar == 42)
@@ -2775,8 +2775,8 @@
                      jjCheckNAddStates(117, 120);
                   break;
                case 1:
-                  if (kind > 16)
-                     kind = 16;
+                  if (kind > 15)
+                     kind = 15;
                   break;
                case 4:
                case 5:
@@ -2822,8 +2822,8 @@
             switch(jjstateSet[--i])
             {
                case 1:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 16)
-                     kind = 16;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15)
+                     kind = 15;
                   break;
                default : break;
             }
@@ -2847,7 +2847,7 @@
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x68000L) != 0L)
+         if ((active0 & 0x70000L) != 0L)
             return 2;
          if ((active0 & 0x10L) != 0L)
             return 53;
@@ -2858,7 +2858,7 @@
          }
          return -1;
       case 1:
-         if ((active0 & 0x20000L) != 0L)
+         if ((active0 & 0x10000L) != 0L)
             return 0;
          if ((active0 & 0x30000000L) != 0L)
          {
@@ -2906,8 +2906,8 @@
    switch(curChar)
    {
       case 35:
-         jjmatchedKind = 18;
-         return jjMoveStringLiteralDfa1_1(0x28000L);
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_1(0x50000L);
       case 41:
          return jjStopAtPos(0, 10);
       case 44:
@@ -2942,12 +2942,12 @@
    switch(curChar)
    {
       case 35:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 15);
+         if ((active0 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 18);
          break;
       case 42:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_1(1, 17, 0);
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_1(1, 16, 0);
          break;
       case 46:
          if ((active0 & 0x10L) != 0L)
@@ -3086,8 +3086,8 @@
                      jjstateSet[jjnewStateCnt++] = 1;
                   break;
                case 1:
-                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
-                     kind = 16;
+                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 15)
+                     kind = 15;
                   break;
                case 2:
                   if (curChar == 42)
@@ -3301,8 +3301,8 @@
                      kind = 63;
                   break;
                case 1:
-                  if (kind > 16)
-                     kind = 16;
+                  if (kind > 15)
+                     kind = 15;
                   break;
                case 6:
                   if ((0xffffffffefffffffL & l) != 0L)
@@ -3375,8 +3375,8 @@
             switch(jjstateSet[--i])
             {
                case 1:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 16)
-                     kind = 16;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15)
+                     kind = 15;
                   break;
                case 6:
                   if (jjCanMove_0(hiByte, i1, i2, l1, l2))
@@ -3408,7 +3408,7 @@
    switch (pos)
    {
       case 0:
-         if ((active0 & 0x68000L) != 0L)
+         if ((active0 & 0x70000L) != 0L)
             return 2;
          if ((active0 & 0x30000000L) != 0L)
          {
@@ -3417,7 +3417,7 @@
          }
          return -1;
       case 1:
-         if ((active0 & 0x20000L) != 0L)
+         if ((active0 & 0x10000L) != 0L)
             return 0;
          if ((active0 & 0x30000000L) != 0L)
          {
@@ -3465,8 +3465,8 @@
    switch(curChar)
    {
       case 35:
-         jjmatchedKind = 18;
-         return jjMoveStringLiteralDfa1_2(0x28000L);
+         jjmatchedKind = 17;
+         return jjMoveStringLiteralDfa1_2(0x50000L);
       case 40:
          return jjStopAtPos(0, 8);
       case 102:
@@ -3491,12 +3491,12 @@
    switch(curChar)
    {
       case 35:
-         if ((active0 & 0x8000L) != 0L)
-            return jjStopAtPos(1, 15);
+         if ((active0 & 0x40000L) != 0L)
+            return jjStopAtPos(1, 18);
          break;
       case 42:
-         if ((active0 & 0x20000L) != 0L)
-            return jjStartNfaWithStates_2(1, 17, 0);
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_2(1, 16, 0);
          break;
       case 97:
          return jjMoveStringLiteralDfa2_2(active0, 0x20000000L);
@@ -3605,8 +3605,8 @@
                      jjstateSet[jjnewStateCnt++] = 1;
                   break;
                case 1:
-                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
-                     kind = 16;
+                  if ((0xfffffff7ffffffffL & l) != 0L && kind > 15)
+                     kind = 15;
                   break;
                case 2:
                   if (curChar == 42)
@@ -3664,8 +3664,8 @@
                      jjCheckNAddStates(117, 120);
                   break;
                case 1:
-                  if (kind > 16)
-                     kind = 16;
+                  if (kind > 15)
+                     kind = 15;
                   break;
                case 4:
                case 5:
@@ -3711,8 +3711,8 @@
             switch(jjstateSet[--i])
             {
                case 1:
-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 16)
-                     kind = 16;
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 15)
+                     kind = 15;
                   break;
                default : break;
             }
@@ -3778,7 +3778,7 @@
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 };
 static final long[] jjtoToken = {
-   0xc637fffffdf81fffL, 0x3L,
+   0xc637fffffdfc1fffL, 0x3L,
 };
 static final long[] jjtoSkip = {
    0x2000000L, 0xcL,
@@ -3787,7 +3787,7 @@
    0x0L, 0xcL,
 };
 static final long[] jjtoMore = {
-   0x7e000L, 0x0L,
+   0x3e000L, 0x0L,
 };
 protected CharStream input_stream;
 private final int[] jjrounds = new int[96];
@@ -4127,31 +4127,12 @@
          else
             image.append(input_stream.GetSuffix(jjimageLen));
          jjimageLen = 0;
-        if (!inComment)
-        {
-            if (curLexState == REFERENCE)
-            {
-                inReference = false;
-                stateStackPop();
-            }
-
-            inComment = true;
-            stateStackPush();
-            SwitchTo(IN_SINGLE_LINE_COMMENT);
-        }
-         break;
-      case 16 :
-         if (image == null)
-              image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
-         else
-            image.append(input_stream.GetSuffix(jjimageLen));
-         jjimageLen = 0;
         input_stream.backup(1);
         inComment = true;
         stateStackPush();
         SwitchTo( IN_FORMAL_COMMENT);
          break;
-      case 17 :
+      case 16 :
          if (image == null)
               image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
          else
@@ -4161,7 +4142,7 @@
         stateStackPush();
         SwitchTo( IN_MULTI_LINE_COMMENT );
          break;
-      case 18 :
+      case 17 :
          if (image == null)
               image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen)));
          else
@@ -4267,6 +4248,24 @@
 
             if (curLexState == REFMODIFIER )
                 SwitchTo( REFMOD2 );
+        }
+         break;
+      case 18 :
+        if (image == null)
+            image = new StringBuffer(new 
String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 
1))));
+         else
+            image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = 
jjmatchedPos + 1)));
+        if (!inComment)
+        {
+            if (curLexState == REFERENCE)
+            {
+                inReference = false;
+                stateStackPop();
+            }
+
+            inComment = true;
+            stateStackPush();
+            SwitchTo(IN_SINGLE_LINE_COMMENT);
         }
          break;
       case 22 :

Added: jakarta/velocity/core/trunk/test/templates/comment-eof.vm
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/test/templates/comment-eof.vm?rev=306522&view=auto
==============================================================================
--- jakarta/velocity/core/trunk/test/templates/comment-eof.vm (added)
+++ jakarta/velocity/core/trunk/test/templates/comment-eof.vm Wed Oct  5 
21:25:59 2005
@@ -0,0 +1,3 @@
+## Test to see if ##EOF gives an error

+test

+##
\ No newline at end of file

Added: jakarta/velocity/core/trunk/test/templates/compare/comment-eof.cmp
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/test/templates/compare/comment-eof.cmp?rev=306522&view=auto
==============================================================================
--- jakarta/velocity/core/trunk/test/templates/compare/comment-eof.cmp (added)
+++ jakarta/velocity/core/trunk/test/templates/compare/comment-eof.cmp Wed Oct  
5 21:25:59 2005
@@ -0,0 +1 @@
+test


Modified: jakarta/velocity/core/trunk/test/templates/templates.properties
URL: 
http://svn.apache.org/viewcvs/jakarta/velocity/core/trunk/test/templates/templates.properties?rev=306522&r1=306521&r2=306522&view=diff
==============================================================================
--- jakarta/velocity/core/trunk/test/templates/templates.properties (original)
+++ jakarta/velocity/core/trunk/test/templates/templates.properties Wed Oct  5 
21:25:59 2005
@@ -1,4 +1,4 @@
-# Base names of templates to add to the VelocityTestSuite
+# Base names of templates to add to the VelocitytestSuite
 
 test.template.1  = arithmetic
 test.template.2  = array
@@ -45,4 +45,5 @@
 test.template.43 = stop1
 test.template.44 = stop2
 test.template.45 = foreach-null-list
-test.template.46 = curly-directive
\ No newline at end of file
+test.template.46 = curly-directive
+test.template.47 = comment-eof
\ No newline at end of file



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

Reply via email to