geirm 00/10/30 18:45:09
Modified: src/java/org/apache/velocity/runtime/parser Parser.java
Parser.jj Parser.jjt ParserConstants.java
ParserTokenManager.java
Log:
Fix for the $f.<whitespace>$f problem. This fix changes the output to be what I
think is closer to correct.
The fixes to make it correct will soon follow.
Revision Changes Path
1.10 +90 -90
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.java
Index: Parser.java
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Parser.java 2000/10/28 14:19:53 1.9
+++ Parser.java 2000/10/31 02:44:59 1.10
@@ -18,7 +18,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
- * @version $Id: Parser.java,v 1.9 2000/10/28 14:19:53 geirm Exp $
+ * @version $Id: Parser.java,v 1.10 2000/10/31 02:44:59 geirm Exp $
*/
public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants
{/*@bgen(jjtree)*/
protected JJTParserState jjtree = new JJTParserState();
@@ -1713,95 +1713,6 @@
return retval;
}
- final private boolean jj_3R_46() {
- if (jj_3R_50()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_45() {
- if (jj_3R_49()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_36() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_45()) {
- jj_scanpos = xsp;
- if (jj_3R_46()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3_1() {
- if (jj_scan_token(DOT)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_2()) {
- jj_scanpos = xsp;
- if (jj_3R_17()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- xsp = jj_scanpos;
- if (jj_3R_47()) jj_scanpos = xsp;
- else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_43() {
- if (jj_scan_token(RCURLY)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_30() {
- if (jj_scan_token(STRING_LITERAL)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_42() {
- if (jj_scan_token(LCURLY)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_31() {
- if (jj_scan_token(NUMBER_LITERAL)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_32() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_42()) jj_scanpos = xsp;
- else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(IDENTIFIER)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- xsp = jj_scanpos;
- if (jj_3R_43()) jj_scanpos = xsp;
- else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_1()) { jj_scanpos = xsp; break; }
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- }
- return false;
- }
-
- final private boolean jj_3R_48() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_29()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
final private boolean jj_3R_18() {
if (jj_3R_20()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2286,6 +2197,95 @@
final private boolean jj_3R_34() {
if (jj_scan_token(TRUE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_46() {
+ if (jj_3R_50()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_45() {
+ if (jj_3R_49()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_36() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_45()) {
+ jj_scanpos = xsp;
+ if (jj_3R_46()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3_1() {
+ if (jj_scan_token(DOT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_2()) {
+ jj_scanpos = xsp;
+ if (jj_3R_17()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ xsp = jj_scanpos;
+ if (jj_3R_47()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_43() {
+ if (jj_scan_token(RCURLY)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_30() {
+ if (jj_scan_token(STRING_LITERAL)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_42() {
+ if (jj_scan_token(LCURLY)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_31() {
+ if (jj_scan_token(NUMBER_LITERAL)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_32() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_42()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ xsp = jj_scanpos;
+ if (jj_3R_43()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_1()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_48() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_29()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
1.10 +19 -6
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jj
Index: Parser.jj
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jj,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Parser.jj 2000/10/28 14:19:53 1.9
+++ Parser.jj 2000/10/31 02:45:00 1.10
@@ -98,7 +98,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
- * @version $Id: Parser.jj,v 1.9 2000/10/28 14:19:53 geirm Exp $
+ * @version $Id: Parser.jj,v 1.10 2000/10/31 02:45:00 geirm Exp $
*/
public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants/*@egen*/
{/*@bgen(jjtree)*/
@@ -693,11 +693,24 @@
| <#ALPHANUM_CHAR: [ "a"-"z", "A"-"Z", "0"-"9" ] >
| <#IDENTIFIER_CHAR: [ "a"-"z", "A"-"Z", "0"-"9", "-", "_" ] >
| <IDENTIFIER: <ALPHA_CHAR> (<IDENTIFIER_CHAR>)* >
-| <DOT: ".">
- {
- if ( bDebugPrint_ )
- System.out.print("DOT : switching to " + REFMODIFIER);
- SwitchTo(REFMODIFIER);
+| <DOT: "." <ALPHA_CHAR>>
+ {
+ /*
+ * push the alpha char back into the stream so the following identifier is
complete
+ */
+
+ input_stream.backup(1);
+
+ /*
+ * and munge the <DOT> so we just get a . when we have normal text that
looks like a ref.ident
+ */
+
+ matchedToken.image = ".";
+
+ if ( bDebugPrint_ )
+ System.out.print("DOT : switching to " + REFMODIFIER);
+ SwitchTo(REFMODIFIER);
+
}
| <LCURLY: "{">
| <RCURLY: "}">
1.10 +19 -6
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jjt
Index: Parser.jjt
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jjt,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Parser.jjt 2000/10/28 14:19:54 1.9
+++ Parser.jjt 2000/10/31 02:45:00 1.10
@@ -122,7 +122,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
- * @version $Id: Parser.jjt,v 1.9 2000/10/28 14:19:54 geirm Exp $
+ * @version $Id: Parser.jjt,v 1.10 2000/10/31 02:45:00 geirm Exp $
*/
public class Parser
{
@@ -714,11 +714,24 @@
| <#ALPHANUM_CHAR: [ "a"-"z", "A"-"Z", "0"-"9" ] >
| <#IDENTIFIER_CHAR: [ "a"-"z", "A"-"Z", "0"-"9", "-", "_" ] >
| <IDENTIFIER: <ALPHA_CHAR> (<IDENTIFIER_CHAR>)* >
-| <DOT: ".">
- {
- if ( bDebugPrint_ )
- System.out.print("DOT : switching to " + REFMODIFIER);
- SwitchTo(REFMODIFIER);
+| <DOT: "." <ALPHA_CHAR>>
+ {
+ /*
+ * push the alpha char back into the stream so the following identifier is
complete
+ */
+
+ input_stream.backup(1);
+
+ /*
+ * and munge the <DOT> so we just get a . when we have normal text that
looks like a ref.ident
+ */
+
+ matchedToken.image = ".";
+
+ if ( bDebugPrint_ )
+ System.out.print("DOT : switching to " + REFMODIFIER);
+ SwitchTo(REFMODIFIER);
+
}
| <LCURLY: "{">
| <RCURLY: "}">
1.6 +1 -1
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserConstants.java
Index: ParserConstants.java
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserConstants.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ParserConstants.java 2000/10/27 05:18:45 1.5
+++ ParserConstants.java 2000/10/31 02:45:01 1.6
@@ -120,7 +120,7 @@
"<ALPHANUM_CHAR>",
"<IDENTIFIER_CHAR>",
"<IDENTIFIER>",
- "\".\"",
+ "<DOT>",
"\"{\"",
"\"}\"",
"<REFERENCE_TERMINATOR>",
1.9 +51 -15
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
Index: ParserTokenManager.java
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ParserTokenManager.java 2000/10/28 14:19:54 1.8
+++ ParserTokenManager.java 2000/10/31 02:45:01 1.9
@@ -903,8 +903,6 @@
case 36:
jjmatchedKind = 8;
return jjMoveStringLiteralDfa1_4(0x200L);
- case 46:
- return jjStopAtPos(0, 54);
case 102:
return jjMoveStringLiteralDfa1_4(0x400000L);
case 116:
@@ -1013,7 +1011,7 @@
{
int[] nextStates;
int startsAt = 0;
- jjnewStateCnt = 9;
+ jjnewStateCnt = 11;
int i = 1;
jjstateSet[0] = startState;
int j, kind = 0x7fffffff;
@@ -1029,7 +1027,9 @@
switch(jjstateSet[--i])
{
case 3:
- if (curChar == 34)
+ if (curChar == 46)
+ jjstateSet[jjnewStateCnt++] = 10;
+ else if (curChar == 34)
jjCheckNAddTwoStates(5, 6);
else if (curChar == 35)
jjstateSet[jjnewStateCnt++] = 2;
@@ -1065,6 +1065,10 @@
kind = 53;
jjstateSet[jjnewStateCnt++] = 8;
break;
+ case 9:
+ if (curChar == 46)
+ jjstateSet[jjnewStateCnt++] = 10;
+ break;
default : break;
}
} while(i != startsAt);
@@ -1097,6 +1101,10 @@
kind = 53;
jjCheckNAdd(8);
break;
+ case 10:
+ if ((0x7fffffe07fffffeL & l) != 0L && kind > 54)
+ kind = 54;
+ break;
default : break;
}
} while(i != startsAt);
@@ -1128,7 +1136,7 @@
kind = 0x7fffffff;
}
++curPos;
- if ((i = jjnewStateCnt) == (startsAt = 9 - (jjnewStateCnt = startsAt)))
+ if ((i = jjnewStateCnt) == (startsAt = 11 - (jjnewStateCnt = startsAt)))
return curPos;
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) { return curPos; }
@@ -1205,8 +1213,6 @@
return jjStopAtPos(0, 4);
case 41:
return jjStopAtPos(0, 5);
- case 46:
- return jjStopAtPos(0, 54);
case 91:
return jjStopAtPos(0, 1);
case 93:
@@ -1319,7 +1325,7 @@
{
int[] nextStates;
int startsAt = 0;
- jjnewStateCnt = 9;
+ jjnewStateCnt = 11;
int i = 1;
jjstateSet[0] = startState;
int j, kind = 0x7fffffff;
@@ -1335,7 +1341,9 @@
switch(jjstateSet[--i])
{
case 3:
- if (curChar == 34)
+ if (curChar == 46)
+ jjstateSet[jjnewStateCnt++] = 10;
+ else if (curChar == 34)
jjCheckNAddTwoStates(5, 6);
else if (curChar == 35)
jjstateSet[jjnewStateCnt++] = 2;
@@ -1371,6 +1379,10 @@
kind = 53;
jjstateSet[jjnewStateCnt++] = 8;
break;
+ case 9:
+ if (curChar == 46)
+ jjstateSet[jjnewStateCnt++] = 10;
+ break;
default : break;
}
} while(i != startsAt);
@@ -1403,6 +1415,10 @@
kind = 53;
jjCheckNAdd(8);
break;
+ case 10:
+ if ((0x7fffffe07fffffeL & l) != 0L && kind > 54)
+ kind = 54;
+ break;
default : break;
}
} while(i != startsAt);
@@ -1434,7 +1450,7 @@
kind = 0x7fffffff;
}
++curPos;
- if ((i = jjnewStateCnt) == (startsAt = 9 - (jjnewStateCnt = startsAt)))
+ if ((i = jjnewStateCnt) == (startsAt = 11 - (jjnewStateCnt = startsAt)))
return curPos;
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) { return curPos; }
@@ -1663,8 +1679,6 @@
return jjStopAtPos(0, 5);
case 44:
return jjStopAtPos(0, 3);
- case 46:
- return jjStopAtPos(0, 54);
case 91:
return jjStopAtPos(0, 1);
case 93:
@@ -1777,7 +1791,7 @@
{
int[] nextStates;
int startsAt = 0;
- jjnewStateCnt = 9;
+ jjnewStateCnt = 11;
int i = 1;
jjstateSet[0] = startState;
int j, kind = 0x7fffffff;
@@ -1793,7 +1807,9 @@
switch(jjstateSet[--i])
{
case 3:
- if (curChar == 34)
+ if (curChar == 46)
+ jjstateSet[jjnewStateCnt++] = 10;
+ else if (curChar == 34)
jjCheckNAddTwoStates(5, 6);
else if (curChar == 35)
jjstateSet[jjnewStateCnt++] = 2;
@@ -1829,6 +1845,10 @@
kind = 53;
jjstateSet[jjnewStateCnt++] = 8;
break;
+ case 9:
+ if (curChar == 46)
+ jjstateSet[jjnewStateCnt++] = 10;
+ break;
default : break;
}
} while(i != startsAt);
@@ -1861,6 +1881,10 @@
kind = 53;
jjCheckNAdd(8);
break;
+ case 10:
+ if ((0x7fffffe07fffffeL & l) != 0L && kind > 54)
+ kind = 54;
+ break;
default : break;
}
} while(i != startsAt);
@@ -1892,7 +1916,7 @@
kind = 0x7fffffff;
}
++curPos;
- if ((i = jjnewStateCnt) == (startsAt = 9 - (jjnewStateCnt = startsAt)))
+ if ((i = jjnewStateCnt) == (startsAt = 11 - (jjnewStateCnt = startsAt)))
return curPos;
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) { return curPos; }
@@ -2842,6 +2866,18 @@
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
+ /*
+ * push the alpha char back into the stream so the following identifier is
complete
+ */
+
+ input_stream.backup(1);
+
+ /*
+ * and munge the <DOT> so we just get a . when we have normal text that
looks like a ref.ident
+ */
+
+ matchedToken.image = ".";
+
if ( bDebugPrint_ )
System.out.print("DOT : switching to " + REFMODIFIER);
SwitchTo(REFMODIFIER);