niallp 2004/09/03 11:06:58
Modified: src/share/org/apache/struts/validator/validwhen
ValidWhenLexer.java ValidWhenParser.g
ValidWhenParser.java
Log:
Fixed ValidWhen Bugs 31025 and 31026 reported by Gisella Saavedra
Revision Changes Path
1.10 +52 -35
jakarta-struts/src/share/org/apache/struts/validator/validwhen/ValidWhenLexer.java
Index: ValidWhenLexer.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/src/share/org/apache/struts/validator/validwhen/ValidWhenLexer.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ValidWhenLexer.java 19 Aug 2004 17:37:53 -0000 1.9
+++ ValidWhenLexer.java 3 Sep 2004 18:06:58 -0000 1.10
@@ -1,4 +1,4 @@
-// $ANTLR 2.7.2: "validWhenParser.g" -> "ValidWhenLexer.java"$
+// $ANTLR 2.7.2: "ValidWhenParser.g" -> "ValidWhenLexer.java"$
/*
* $Header$
@@ -87,9 +87,9 @@
theRetToken=_returnToken;
break;
}
- case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8':
- case '9':
+ case '-': case '1': case '2': case '3':
+ case '4': case '5': case '6': case '7':
+ case '8': case '9':
{
mDECIMAL_LITERAL(true);
theRetToken=_returnToken;
@@ -160,10 +160,6 @@
mHEX_LITERAL(true);
theRetToken=_returnToken;
}
- else if ((LA(1)=='0') && ((LA(2) >= '0' &&
LA(2) <= '7'))) {
- mOCTAL_LITERAL(true);
- theRetToken=_returnToken;
- }
else if ((LA(1)=='<') && (LA(2)=='=')) {
mLESSEQUALSIGN(true);
theRetToken=_returnToken;
@@ -172,6 +168,10 @@
mGREATEREQUALSIGN(true);
theRetToken=_returnToken;
}
+ else if ((LA(1)=='0') && (true)) {
+ mOCTAL_LITERAL(true);
+ theRetToken=_returnToken;
+ }
else if ((LA(1)=='<') && (true)) {
mLESSTHANSIGN(true);
theRetToken=_returnToken;
@@ -258,16 +258,35 @@
int _saveIndex;
{
+ switch ( LA(1)) {
+ case '-':
+ {
+ match('-');
+ break;
+ }
+ case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8':
+ case '9':
+ {
+ break;
+ }
+ default:
+ {
+ throw new NoViableAltForCharException((char)LA(1),
getFilename(), getLine(), getColumn());
+ }
+ }
+ }
+ {
matchRange('1','9');
}
{
- _loop19:
+ _loop20:
do {
if (((LA(1) >= '0' && LA(1) <= '9'))) {
matchRange('0','9');
}
else {
- break _loop19;
+ break _loop20;
}
} while (true);
@@ -287,8 +306,8 @@
match('0');
match('x');
{
- int _cnt22=0;
- _loop22:
+ int _cnt23=0;
+ _loop23:
do {
switch ( LA(1)) {
case '0': case '1': case '2': case '3':
@@ -306,10 +325,10 @@
}
default:
{
- if ( _cnt22>=1 ) { break _loop22; } else {throw new
NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
+ if ( _cnt23>=1 ) { break _loop23; } else {throw new
NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
}
- _cnt22++;
+ _cnt23++;
} while (true);
}
if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
@@ -326,17 +345,15 @@
match('0');
{
- int _cnt25=0;
- _loop25:
+ _loop26:
do {
if (((LA(1) >= '0' && LA(1) <= '7'))) {
matchRange('0','7');
}
else {
- if ( _cnt25>=1 ) { break _loop25; } else {throw new
NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
+ break _loop26;
}
- _cnt25++;
} while (true);
}
if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
@@ -357,17 +374,17 @@
{
match('\'');
{
- int _cnt29=0;
- _loop29:
+ int _cnt30=0;
+ _loop30:
do {
if ((_tokenSet_0.member(LA(1)))) {
matchNot('\'');
}
else {
- if ( _cnt29>=1 ) { break _loop29; } else
{throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(),
getColumn());}
+ if ( _cnt30>=1 ) { break _loop30; } else
{throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(),
getColumn());}
}
- _cnt29++;
+ _cnt30++;
} while (true);
}
match('\'');
@@ -379,17 +396,17 @@
{
match('\"');
{
- int _cnt32=0;
- _loop32:
+ int _cnt33=0;
+ _loop33:
do {
if ((_tokenSet_1.member(LA(1)))) {
matchNot('\"');
}
else {
- if ( _cnt32>=1 ) { break _loop32; } else
{throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(),
getColumn());}
+ if ( _cnt33>=1 ) { break _loop33; } else
{throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(),
getColumn());}
}
- _cnt32++;
+ _cnt33++;
} while (true);
}
match('\"');
@@ -508,8 +525,8 @@
}
}
{
- int _cnt41=0;
- _loop41:
+ int _cnt42=0;
+ _loop42:
do {
switch ( LA(1)) {
case 'a': case 'b': case 'c': case 'd':
@@ -542,10 +559,10 @@
}
default:
{
- if ( _cnt41>=1 ) { break _loop41; } else {throw new
NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
+ if ( _cnt42>=1 ) { break _loop42; } else {throw new
NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
}
}
- _cnt41++;
+ _cnt42++;
} while (true);
}
if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
@@ -639,12 +656,12 @@
private static final long[] mk_tokenSet_0() {
- long[] data = { 8358477528813282816L, 576460746532061184L, 0L, 0L};
+ long[] data = { 8358512713185371648L, 576460746532061184L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
private static final long[] mk_tokenSet_1() {
- long[] data = { 8358478061389227520L, 576460746532061184L, 0L, 0L};
+ long[] data = { 8358513245761316352L, 576460746532061184L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
1.7 +8 -8
jakarta-struts/src/share/org/apache/struts/validator/validwhen/ValidWhenParser.g
Index: ValidWhenParser.g
===================================================================
RCS file:
/home/cvs/jakarta-struts/src/share/org/apache/struts/validator/validwhen/ValidWhenParser.g,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ValidWhenParser.g 24 Jun 2004 23:51:52 -0000 1.6
+++ ValidWhenParser.g 3 Sep 2004 18:06:58 -0000 1.7
@@ -156,9 +156,9 @@
integer
-: d:DECIMAL_LITERAL { argStack.push(Integer.valueOf(d.getText())); }
-| h:HEX_LITERAL { argStack.push(Integer.valueOf(d.getText())); }
-| o:OCTAL_LITERAL { argStack.push(Integer.valueOf(d.getText())); } ;
+: d:DECIMAL_LITERAL { argStack.push(Integer.decode(d.getText())); }
+| h:HEX_LITERAL { argStack.push(Integer.decode(h.getText())); }
+| o:OCTAL_LITERAL { argStack.push(Integer.decode(o.getText())); } ;
string : str:STRING_LITERAL { argStack.push(str.getText().substring(1,
str.getText().length()-1)); };
@@ -246,11 +246,11 @@
{ $setType(Token.SKIP); }
;
-DECIMAL_LITERAL : ('1'..'9') ('0'..'9')* ;
+DECIMAL_LITERAL : ('-')? ('1'..'9') ('0'..'9')*;
HEX_LITERAL : '0' 'x' ('0'..'9' | 'a'..'f')+ ;
-OCTAL_LITERAL : '0' ('0'..'7')+ ;
+OCTAL_LITERAL : '0' ('0'..'7')* ;
STRING_LITERAL : ('\'' (~'\'')+ '\'') | ('\"' (~'\"')+ '\"') ;
1.10 +26 -22
jakarta-struts/src/share/org/apache/struts/validator/validwhen/ValidWhenParser.java
Index: ValidWhenParser.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/src/share/org/apache/struts/validator/validwhen/ValidWhenParser.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ValidWhenParser.java 14 Mar 2004 06:23:53 -0000 1.9
+++ ValidWhenParser.java 3 Sep 2004 18:06:58 -0000 1.10
@@ -1,11 +1,11 @@
-// $ANTLR 2.7.2: "validWhenParser.g" -> "ValidWhenParser.java"$
+// $ANTLR 2.7.2: "ValidWhenParser.g" -> "ValidWhenParser.java"$
/*
* $Header$
* $Revision$
* $Date$
*
- * Copyright 2003,2004 The Apache Software Foundation.
+ * Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,26 +22,30 @@
package org.apache.struts.validator.validwhen;
-import java.util.Stack;
-
+import java.util.Stack;
import org.apache.commons.validator.util.ValidatorUtils;
-import antlr.NoViableAltException;
-import antlr.ParserSharedInputState;
-import antlr.RecognitionException;
-import antlr.Token;
+
import antlr.TokenBuffer;
-import antlr.TokenStream;
import antlr.TokenStreamException;
+import antlr.TokenStreamIOException;
+import antlr.ANTLRException;
+import antlr.LLkParser;
+import antlr.Token;
+import antlr.TokenStream;
+import antlr.RecognitionException;
+import antlr.NoViableAltException;
+import antlr.MismatchedTokenException;
+import antlr.SemanticException;
+import antlr.ParserSharedInputState;
import antlr.collections.impl.BitSet;
-public class ValidWhenParser extends antlr.LLkParser
- implements ValidWhenParserTokenTypes {
-
- Stack argStack = new Stack();
- Object form;
- int index;
- String value;
+public class ValidWhenParser extends antlr.LLkParser implements
ValidWhenParserTokenTypes
+ {
+Stack argStack = new Stack();
+Object form;
+int index;
+String value;
public void setForm(Object f) { form = f; };
public void setIndex (int i) { index = i; };
@@ -195,21 +199,21 @@
{
d = LT(1);
match(DECIMAL_LITERAL);
- argStack.push(Integer.valueOf(d.getText()));
+ argStack.push(Integer.decode(d.getText()));
break;
}
case HEX_LITERAL:
{
h = LT(1);
match(HEX_LITERAL);
- argStack.push(Integer.valueOf(d.getText()));
+ argStack.push(Integer.decode(h.getText()));
break;
}
case OCTAL_LITERAL:
{
o = LT(1);
match(OCTAL_LITERAL);
- argStack.push(Integer.valueOf(d.getText()));
+ argStack.push(Integer.decode(o.getText()));
break;
}
default:
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]