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]