jakarta-taglibs-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ari...@apache.org
Subject cvs commit: jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test EvaluationTest.java evaluationTestsOutput.txt parserTestsOutput.txt
Date Wed, 20 Mar 2002 13:51:59 GMT
arista      02/03/20 05:51:59

  Modified:    standard/src/org/apache/taglibs/standard/lang/jstl
                        ELParser.jj Evaluator.java Resources.properties
               standard/src/org/apache/taglibs/standard/lang/jstl/parser
                        ELParser.java ELParserConstants.java
                        ELParserTokenManager.java
               standard/src/org/apache/taglibs/standard/lang/jstl/test
                        EvaluationTest.java evaluationTestsOutput.txt
                        parserTestsOutput.txt
  Log:
  Fixed Bug 7158 - EL exception message should contain attribute name/value
  
  Made a few general changes to clean up the formatting of EL exception
  messages.
  
  Changed the token definitions that have multiple forms, like "<" and
  "lt" - broke each of those out as separate tokens so that the error
  message would print "<", "lt" as expected tokens, not "<LE>".
  
  Customized the error message of the ParseException so that:
  
    * the attribute name and value are included in the error message
    * the line/column numbers are no longer in the error message
    * the list of expected tokens is put on a single line, not broken
      out onto separate lines
  
  This was done without actually changing the definition of
  ParseException (in case JavaCC is run again and overwrites any
  customizations).
  
  Also added a catch-all token so that any input can be tokenized, hence
  no TokenMgrErrors - all errors now show up as ParseExceptions,
  formatted as described above.
  
  Revision  Changes    Path
  1.5       +26 -13    jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/ELParser.jj
  
  Index: ELParser.jj
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/ELParser.jj,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ELParser.jj	7 Mar 2002 00:41:57 -0000	1.4
  +++ ELParser.jj	20 Mar 2002 13:51:59 -0000	1.5
  @@ -81,6 +81,11 @@
         ("\"" ((~["\"","\\"]) | ("\\" ( ["\\","\""] )))* "\"") |
         ("\'" ((~["\'","\\"]) | ("\\" ( ["\\","\'"] )))* "\'")
     >
  +|
  +  < BADLY_ESCAPED_STRING_LITERAL:
  +      ("\"" (~["\"","\\"])* ("\\" ( ~["\\","\""] ))) |
  +      ("\'" (~["\'","\\"])* ("\\" ( ~["\\","\'"] )))
  +  >
   
   /* Reserved Words and Symbols */
   
  @@ -88,13 +93,16 @@
   | < FALSE: "false" >
   | < NULL: "null" >
   | < END_EXPRESSION: "}" > : DEFAULT
  -| < COLON: ":" >
   | < DOT: "." >
  -| < GT: ">" | "gt" >
  -| < LT: "<" | "lt" >
  +| < GT1: ">" >
  +| < GT2: "gt" >
  +| < LT1: "<" >
  +| < LT2: "lt" >
   | < EQ: "==" >
  -| < LE: "<=" | "le" >
  -| < GE: ">=" | "ge" >
  +| < LE1: "<=" >
  +| < LE2: "le" >
  +| < GE1: ">=" >
  +| < GE2: "ge" >
   | < NE: "!=" >
   | < LPAREN: "(" >
   | < RPAREN: ")" >
  @@ -103,8 +111,10 @@
   | < PLUS: "+" >
   | < MINUS: "-" >
   | < MULTIPLY: "*" >
  -| < DIVIDE: "/" | "div" >
  -| < MODULUS: "%" | "mod" >
  +| < DIVIDE1: "/" >
  +| < DIVIDE2: "div" >
  +| < MODULUS1: "%" >
  +| < MODULUS2: "mod" >
   | < NOT: "not" >
   | < AND: "and" >
   | < OR: "or" >
  @@ -159,6 +169,9 @@
         ]
     >
   
  +/* This is used to catch any non-matching tokens, so as to avoid any
  +   TokenMgrErrors */
  +| < ILLEGAL_CHARACTER: (~[]) >
   }
   
   
  @@ -368,10 +381,10 @@
   
       (
        (
  -      <LT> { operator = LessThanOperator.SINGLETON; }
  -      | <GT> { operator = GreaterThanOperator.SINGLETON; }
  -      | <GE> { operator = GreaterThanOrEqualsOperator.SINGLETON; }
  -      | <LE> { operator = LessThanOrEqualsOperator.SINGLETON; }
  +      (<LT1> | <LT2>) { operator = LessThanOperator.SINGLETON; }
  +      | (<GT1> | <GT2>) { operator = GreaterThanOperator.SINGLETON; }
  +      | (<GE1> | <GE2>) { operator = GreaterThanOrEqualsOperator.SINGLETON; }
  +      | (<LE1> | <LE2>) { operator = LessThanOrEqualsOperator.SINGLETON; }
         )
        expression = AddExpression ()
   
  @@ -453,8 +466,8 @@
       (
        (
         <MULTIPLY> { operator = MultiplyOperator.SINGLETON; }
  -      | <DIVIDE> { operator = DivideOperator.SINGLETON; }
  -      | <MODULUS> { operator = ModulusOperator.SINGLETON; }
  +      | (<DIVIDE1> | <DIVIDE2>) { operator = DivideOperator.SINGLETON; }
  +      | (<MODULUS1> | <MODULUS2>) { operator = ModulusOperator.SINGLETON; }
         )
        expression = UnaryExpression ()
   
  
  
  
  1.2       +129 -15   jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/Evaluator.java
  
  Index: Evaluator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/Evaluator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Evaluator.java	5 Mar 2002 14:10:43 -0000	1.1
  +++ Evaluator.java	20 Mar 2002 13:51:59 -0000	1.2
  @@ -60,14 +60,16 @@
   import java.io.IOException;
   import java.io.Reader;
   import java.io.StringReader;
  +import java.text.MessageFormat;
   import java.util.Collections;
   import java.util.HashMap;
   import java.util.Map;
   import javax.servlet.jsp.JspException;
   import javax.servlet.jsp.PageContext;
   import javax.servlet.jsp.tagext.Tag;
  -import org.apache.taglibs.standard.lang.jstl.parser.ParseException;
   import org.apache.taglibs.standard.lang.jstl.parser.ELParser;
  +import org.apache.taglibs.standard.lang.jstl.parser.ParseException;
  +import org.apache.taglibs.standard.lang.jstl.parser.Token;
   import org.apache.taglibs.standard.lang.jstl.parser.TokenMgrError;
   import org.apache.taglibs.standard.lang.support.ExpressionEvaluator;
   
  @@ -93,7 +95,7 @@
    * time they are used.
    * 
    * @author Nathan Abramson - Art Technology Group
  - * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: shawn $
  + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: arista $
    **/
   
   public class Evaluator
  @@ -130,14 +132,16 @@
      *
      * Evaluates the given attribute value
      **/
  -  public Object evaluate (String pAttributeValue,
  +  public Object evaluate (String pAttributeName,
  +			  String pAttributeValue,
   			  PageContext pPageContext,
   			  Class pExpectedType)
       throws JspException
     {
       Logger logger = new Logger (pPageContext);
   
  -    return evaluate (pAttributeValue,
  +    return evaluate (pAttributeName,
  +		     pAttributeValue,
   		     pPageContext,
   		     pExpectedType,
   		     logger);
  @@ -148,7 +152,8 @@
      *
      * Evaluates the given attribute value
      **/
  -  public Object evaluate (String pAttributeValue,
  +  public Object evaluate (String pAttributeName,
  +			  String pAttributeValue,
   			  PageContext pPageContext,
   			  Class pExpectedType,
   			  Logger pLogger)
  @@ -161,7 +166,8 @@
       }
   
       // Get the parsed version of the attribute value
  -    Object parsedValue = getOrParseAttributeValue (pAttributeValue);
  +    Object parsedValue = getOrParseAttributeValue (pAttributeName,
  +						   pAttributeValue);
   
       // Evaluate differently based on the parsed type
       if (parsedValue instanceof String) {
  @@ -204,7 +210,8 @@
      * the value.  Returns either a String, Expression, or
      * AttributeValue.
      **/
  -  public static Object getOrParseAttributeValue (String pAttributeValue)
  +  public static Object getOrParseAttributeValue (String pAttributeName,
  +						 String pAttributeValue)
       throws JspException
     {
       // See if it's an empty String
  @@ -224,14 +231,17 @@
   	mCachedAttributeValues.put (pAttributeValue, ret);
         }
         catch (ParseException exc) {
  -	throw new ELException
  -	  (Constants.PARSE_EXCEPTION,
  -	   exc);
  +	throw new ELException 
  +	  (formatParseException (pAttributeName,
  +				 pAttributeValue,
  +				 exc));
         }
         catch (TokenMgrError exc) {
  -	throw new ELException
  -	  (Constants.PARSE_EXCEPTION,
  -	   exc);
  +	// Note - this should never be reached, since the parser is
  +	// constructed to tokenize any input (illegal inputs get
  +	// parsed to <BADLY_ESCAPED_STRING_LITERAL> or
  +	// <ILLEGAL_CHARACTER>
  +	throw new ELException (exc.getMessage ());
         }
       }
       return ret;
  @@ -317,7 +327,8 @@
       }
       else {
         try {
  -	getOrParseAttributeValue (pAttributeValue);
  +	getOrParseAttributeValue (pAttributeName,
  +				  pAttributeValue);
   	return null;
         }
         catch (JspException exc) {
  @@ -338,7 +349,110 @@
   			  PageContext pPageContext)
       throws JspException
     {
  -    return evaluate (pAttributeValue, pPageContext, pExpectedType);
  +    return evaluate (pAttributeName,
  +		     pAttributeValue,
  +		     pPageContext,
  +		     pExpectedType);
  +  }
  +
  +  //-------------------------------------
  +  // Formatting ParseException
  +  //-------------------------------------
  +  /**
  +   *
  +   * Formats a ParseException into an error message suitable for
  +   * displaying on a web page
  +   **/
  +  static String formatParseException (String pAttributeName,
  +				      String pAttributeValue,
  +				      ParseException pExc)
  +  {
  +    // Generate the String of expected tokens
  +    StringBuffer expectedBuf = new StringBuffer ();
  +    int maxSize = 0;
  +    boolean printedOne = false;
  +    for (int i = 0; i < pExc.expectedTokenSequences.length; i++) {
  +      if (maxSize < pExc.expectedTokenSequences [i].length) {
  +        maxSize = pExc.expectedTokenSequences [i].length;
  +      }
  +      for (int j = 0; j < pExc.expectedTokenSequences [i].length; j++) {
  +	if (printedOne) {
  +	  expectedBuf.append (", ");
  +	}
  +        expectedBuf.append 
  +	  (pExc.tokenImage [pExc.expectedTokenSequences [i] [j]]);
  +	printedOne = true;
  +      }
  +    }
  +    String expected = expectedBuf.toString ();
  +
  +    // Generate the String of encountered tokens
  +    StringBuffer encounteredBuf = new StringBuffer ();
  +    Token tok = pExc.currentToken.next;
  +    for (int i = 0; i < maxSize; i++) {
  +      if (i != 0) encounteredBuf.append (" ");
  +      if (tok.kind == 0) {
  +        encounteredBuf.append (pExc.tokenImage [0]);
  +        break;
  +      }
  +      encounteredBuf.append (addEscapes (tok.image));
  +      tok = tok.next; 
  +    }
  +    String encountered = encounteredBuf.toString ();
  +
  +    // Format the error message
  +    return MessageFormat.format
  +      (Constants.PARSE_EXCEPTION,
  +       new Object [] {
  +	 expected,
  +	 encountered,
  +	 "" + pAttributeName,
  +	 "" + pAttributeValue,
  +       });
  +  }
  +
  +  //-------------------------------------
  +  /**
  +   *
  +   * Used to convert raw characters to their escaped version when
  +   * these raw version cannot be used as part of an ASCII string
  +   * literal.
  +   **/
  +  static String addEscapes (String str)
  +  {
  +    StringBuffer retval = new StringBuffer ();
  +    char ch;
  +    for (int i = 0; i < str.length (); i++) {
  +      switch (str.charAt (i)) {
  +	case 0 :
  +	  continue;
  +	case '\b':
  +	  retval.append ("\\b");
  +	  continue;
  +	case '\t':
  +	  retval.append ("\\t");
  +	  continue;
  +	case '\n':
  +	  retval.append ("\\n");
  +	  continue;
  +	case '\f':
  +	  retval.append ("\\f");
  +	  continue;
  +	case '\r':
  +	  retval.append ("\\r");
  +	  continue;
  +	default:
  +	  if ((ch = str.charAt (i)) < 0x20 || ch > 0x7e) {
  +	    String s = "0000" + Integer.toString (ch, 16);
  +	    retval.append ("\\u" + s.substring (s.length () - 4, s.length ()));
  +	  }
  +	  else {
  +	    retval.append (ch);
  +	  }
  +	  continue;
  +        }
  +    }
  +    return retval.toString ();
     }
   
     //-------------------------------------
  @@ -352,7 +466,7 @@
     public static String parseAndRender (String pAttributeValue)
       throws JspException
     {
  -    Object val = getOrParseAttributeValue (pAttributeValue);
  +    Object val = getOrParseAttributeValue ("test", pAttributeValue);
       if (val instanceof String) {
         return (String) val;
       }
  
  
  
  1.2       +2 -1      jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/Resources.properties
  
  Index: Resources.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/Resources.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Resources.properties	5 Mar 2002 14:10:43 -0000	1.1
  +++ Resources.properties	20 Mar 2002 13:51:59 -0000	1.2
  @@ -6,7 +6,8 @@
   	expression evaluator
   
   PARSE_EXCEPTION=\
  -	Unable to parse the expression
  +	Unable to parse custom action attribute "{2}" with value "{3}": \
  +	encountered "{1}", expected one of "{0}"
   
   CANT_GET_PROPERTY_OF_NULL=\
   	Attempt to get property "{0}" from a null value
  
  
  
  1.4       +134 -56   jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/parser/ELParser.java
  
  Index: ELParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/parser/ELParser.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ELParser.java	6 Mar 2002 07:46:48 -0000	1.3
  +++ ELParser.java	20 Mar 2002 13:51:59 -0000	1.4
  @@ -236,10 +236,14 @@
       label_5:
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -      case GT:
  -      case LT:
  -      case LE:
  -      case GE:
  +      case GT1:
  +      case GT2:
  +      case LT1:
  +      case LT2:
  +      case LE1:
  +      case LE2:
  +      case GE1:
  +      case GE2:
           ;
           break;
         default:
  @@ -247,24 +251,72 @@
           break label_5;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  -      case LT:
  -        jj_consume_token(LT);
  -             operator = LessThanOperator.SINGLETON;
  -        break;
  -      case GT:
  -        jj_consume_token(GT);
  -               operator = GreaterThanOperator.SINGLETON;
  -        break;
  -      case GE:
  -        jj_consume_token(GE);
  -               operator = GreaterThanOrEqualsOperator.SINGLETON;
  -        break;
  -      case LE:
  -        jj_consume_token(LE);
  -               operator = LessThanOrEqualsOperator.SINGLETON;
  +      case LT1:
  +      case LT2:
  +        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +        case LT1:
  +          jj_consume_token(LT1);
  +          break;
  +        case LT2:
  +          jj_consume_token(LT2);
  +          break;
  +        default:
  +          jj_la1[8] = jj_gen;
  +          jj_consume_token(-1);
  +          throw new ParseException();
  +        }
  +                        operator = LessThanOperator.SINGLETON;
  +        break;
  +      case GT1:
  +      case GT2:
  +        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +        case GT1:
  +          jj_consume_token(GT1);
  +          break;
  +        case GT2:
  +          jj_consume_token(GT2);
  +          break;
  +        default:
  +          jj_la1[9] = jj_gen;
  +          jj_consume_token(-1);
  +          throw new ParseException();
  +        }
  +                          operator = GreaterThanOperator.SINGLETON;
  +        break;
  +      case GE1:
  +      case GE2:
  +        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +        case GE1:
  +          jj_consume_token(GE1);
  +          break;
  +        case GE2:
  +          jj_consume_token(GE2);
  +          break;
  +        default:
  +          jj_la1[10] = jj_gen;
  +          jj_consume_token(-1);
  +          throw new ParseException();
  +        }
  +                          operator = GreaterThanOrEqualsOperator.SINGLETON;
  +        break;
  +      case LE1:
  +      case LE2:
  +        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +        case LE1:
  +          jj_consume_token(LE1);
  +          break;
  +        case LE2:
  +          jj_consume_token(LE2);
  +          break;
  +        default:
  +          jj_la1[11] = jj_gen;
  +          jj_consume_token(-1);
  +          throw new ParseException();
  +        }
  +                          operator = LessThanOrEqualsOperator.SINGLETON;
           break;
         default:
  -        jj_la1[8] = jj_gen;
  +        jj_la1[12] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -302,7 +354,7 @@
           ;
           break;
         default:
  -        jj_la1[9] = jj_gen;
  +        jj_la1[13] = jj_gen;
           break label_6;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -315,7 +367,7 @@
                     operator = MinusOperator.SINGLETON;
           break;
         default:
  -        jj_la1[10] = jj_gen;
  +        jj_la1[14] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -349,12 +401,14 @@
       while (true) {
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case MULTIPLY:
  -      case DIVIDE:
  -      case MODULUS:
  +      case DIVIDE1:
  +      case DIVIDE2:
  +      case MODULUS1:
  +      case MODULUS2:
           ;
           break;
         default:
  -        jj_la1[11] = jj_gen;
  +        jj_la1[15] = jj_gen;
           break label_7;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -362,16 +416,40 @@
           jj_consume_token(MULTIPLY);
                      operator = MultiplyOperator.SINGLETON;
           break;
  -      case DIVIDE:
  -        jj_consume_token(DIVIDE);
  -                   operator = DivideOperator.SINGLETON;
  -        break;
  -      case MODULUS:
  -        jj_consume_token(MODULUS);
  -                    operator = ModulusOperator.SINGLETON;
  +      case DIVIDE1:
  +      case DIVIDE2:
  +        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +        case DIVIDE1:
  +          jj_consume_token(DIVIDE1);
  +          break;
  +        case DIVIDE2:
  +          jj_consume_token(DIVIDE2);
  +          break;
  +        default:
  +          jj_la1[16] = jj_gen;
  +          jj_consume_token(-1);
  +          throw new ParseException();
  +        }
  +                                  operator = DivideOperator.SINGLETON;
  +        break;
  +      case MODULUS1:
  +      case MODULUS2:
  +        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  +        case MODULUS1:
  +          jj_consume_token(MODULUS1);
  +          break;
  +        case MODULUS2:
  +          jj_consume_token(MODULUS2);
  +          break;
  +        default:
  +          jj_la1[17] = jj_gen;
  +          jj_consume_token(-1);
  +          throw new ParseException();
  +        }
  +                                    operator = ModulusOperator.SINGLETON;
           break;
         default:
  -        jj_la1[12] = jj_gen;
  +        jj_la1[18] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -407,7 +485,7 @@
           ;
           break;
         default:
  -        jj_la1[13] = jj_gen;
  +        jj_la1[19] = jj_gen;
           break label_8;
         }
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
  @@ -420,7 +498,7 @@
                   operator = UnaryMinusOperator.SINGLETON;
           break;
         default:
  -        jj_la1[14] = jj_gen;
  +        jj_la1[20] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
  @@ -462,7 +540,7 @@
           ;
           break;
         default:
  -        jj_la1[15] = jj_gen;
  +        jj_la1[21] = jj_gen;
           break label_9;
         }
         suffix = ValueSuffix();
  @@ -513,7 +591,7 @@
         ret = ImplicitObject();
         break;
       default:
  -      jj_la1[16] = jj_gen;
  +      jj_la1[22] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -538,7 +616,7 @@
         suffix = ArraySuffix();
         break;
       default:
  -      jj_la1[17] = jj_gen;
  +      jj_la1[23] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -566,7 +644,7 @@
            property = StringLiteral.getValueFromToken (t.image);
         break;
       default:
  -      jj_la1[18] = jj_gen;
  +      jj_la1[24] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -603,7 +681,7 @@
         ret = NullLiteral();
         break;
       default:
  -      jj_la1[19] = jj_gen;
  +      jj_la1[25] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -622,7 +700,7 @@
                 {if (true) return BooleanLiteral.FALSE;}
         break;
       default:
  -      jj_la1[20] = jj_gen;
  +      jj_la1[26] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -684,7 +762,7 @@
         t = jj_consume_token(PARAMS);
         break;
       default:
  -      jj_la1[21] = jj_gen;
  +      jj_la1[27] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -723,7 +801,7 @@
                  {if (true) return ImplicitObject.PARAMS;}
         break;
       default:
  -      jj_la1[22] = jj_gen;
  +      jj_la1[28] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
  @@ -735,9 +813,9 @@
     public Token token, jj_nt;
     private int jj_ntk;
     private int jj_gen;
  -  final private int[] jj_la1 = new int[23];
  -  final private int[] jj_la1_0 = {0x6,0x6,0x6,0x0,0x0,0x480000,0x480000,0x360000,0x360000,0x18000000,0x18000000,0xe0000000,0xe0000000,0x10000000,0x10000000,0x2010000,0x803d80,0x2010000,0x400,0x3d80,0x1800,0x0,0x0,};
  -  final private int[] jj_la1_1 = {0x0,0x0,0x0,0x4,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x7f8,0x0,0x7f8,0x0,0x0,0x7f8,0x3f8,};
  +  final private int[] jj_la1 = new int[29];
  +  final private int[] jj_la1_0 = {0x6,0x6,0x6,0x0,0x0,0x4200000,0x4200000,0x3de0000,0x180000,0x60000,0x3000000,0xc00000,0x3de0000,0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x20010000,0x8007580,0x20010000,0x400,0x7580,0x3000,0x0,0x0,};
  +  final private int[] jj_la1_1 = {0x0,0x0,0x0,0x100,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x3e,0xc,0x30,0x3e,0x41,0x41,0x0,0x1fe00,0x0,0x1fe00,0x0,0x0,0x1fe00,0xfe00,};
   
     public ELParser(java.io.InputStream stream) {
       jj_input_stream = new JavaCharStream(stream, 1, 1);
  @@ -745,7 +823,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 23; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 29; i++) jj_la1[i] = -1;
     }
   
     public void ReInit(java.io.InputStream stream) {
  @@ -754,7 +832,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 23; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 29; i++) jj_la1[i] = -1;
     }
   
     public ELParser(java.io.Reader stream) {
  @@ -763,7 +841,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 23; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 29; i++) jj_la1[i] = -1;
     }
   
     public void ReInit(java.io.Reader stream) {
  @@ -772,7 +850,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 23; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 29; i++) jj_la1[i] = -1;
     }
   
     public ELParser(ELParserTokenManager tm) {
  @@ -780,7 +858,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 23; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 29; i++) jj_la1[i] = -1;
     }
   
     public void ReInit(ELParserTokenManager tm) {
  @@ -788,7 +866,7 @@
       token = new Token();
       jj_ntk = -1;
       jj_gen = 0;
  -    for (int i = 0; i < 23; i++) jj_la1[i] = -1;
  +    for (int i = 0; i < 29; i++) jj_la1[i] = -1;
     }
   
     final private Token jj_consume_token(int kind) throws ParseException {
  @@ -835,15 +913,15 @@
   
     final public ParseException generateParseException() {
       jj_expentries.removeAllElements();
  -    boolean[] la1tokens = new boolean[46];
  -    for (int i = 0; i < 46; i++) {
  +    boolean[] la1tokens = new boolean[53];
  +    for (int i = 0; i < 53; i++) {
         la1tokens[i] = false;
       }
       if (jj_kind >= 0) {
         la1tokens[jj_kind] = true;
         jj_kind = -1;
       }
  -    for (int i = 0; i < 23; i++) {
  +    for (int i = 0; i < 29; i++) {
         if (jj_la1[i] == jj_gen) {
           for (int j = 0; j < 32; j++) {
             if ((jj_la1_0[i] & (1<<j)) != 0) {
  @@ -855,7 +933,7 @@
           }
         }
       }
  -    for (int i = 0; i < 46; i++) {
  +    for (int i = 0; i < 53; i++) {
         if (la1tokens[i]) {
           jj_expentry = new int[1];
           jj_expentry[0] = i;
  
  
  
  1.4       +55 -41    jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/parser/ELParserConstants.java
  
  Index: ELParserConstants.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/parser/ELParserConstants.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ELParserConstants.java	6 Mar 2002 07:46:48 -0000	1.3
  +++ ELParserConstants.java	20 Mar 2002 13:51:59 -0000	1.4
  @@ -10,41 +10,48 @@
     int FLOATING_POINT_LITERAL = 8;
     int EXPONENT = 9;
     int STRING_LITERAL = 10;
  -  int TRUE = 11;
  -  int FALSE = 12;
  -  int NULL = 13;
  -  int END_EXPRESSION = 14;
  -  int COLON = 15;
  +  int BADLY_ESCAPED_STRING_LITERAL = 11;
  +  int TRUE = 12;
  +  int FALSE = 13;
  +  int NULL = 14;
  +  int END_EXPRESSION = 15;
     int DOT = 16;
  -  int GT = 17;
  -  int LT = 18;
  -  int EQ = 19;
  -  int LE = 20;
  -  int GE = 21;
  -  int NE = 22;
  -  int LPAREN = 23;
  -  int RPAREN = 24;
  -  int LBRACKET = 25;
  -  int RBRACKET = 26;
  -  int PLUS = 27;
  -  int MINUS = 28;
  -  int MULTIPLY = 29;
  -  int DIVIDE = 30;
  -  int MODULUS = 31;
  -  int NOT = 32;
  -  int AND = 33;
  -  int OR = 34;
  -  int PAGE_CONTEXT = 35;
  -  int PAGE = 36;
  -  int REQUEST = 37;
  -  int SESSION = 38;
  -  int APPLICATION = 39;
  -  int PARAM = 40;
  -  int PARAMS = 41;
  -  int IDENTIFIER = 42;
  -  int IMPL_OBJ_START = 43;
  -  int LETTER = 44;
  -  int DIGIT = 45;
  +  int GT1 = 17;
  +  int GT2 = 18;
  +  int LT1 = 19;
  +  int LT2 = 20;
  +  int EQ = 21;
  +  int LE1 = 22;
  +  int LE2 = 23;
  +  int GE1 = 24;
  +  int GE2 = 25;
  +  int NE = 26;
  +  int LPAREN = 27;
  +  int RPAREN = 28;
  +  int LBRACKET = 29;
  +  int RBRACKET = 30;
  +  int PLUS = 31;
  +  int MINUS = 32;
  +  int MULTIPLY = 33;
  +  int DIVIDE1 = 34;
  +  int DIVIDE2 = 35;
  +  int MODULUS1 = 36;
  +  int MODULUS2 = 37;
  +  int NOT = 38;
  +  int AND = 39;
  +  int OR = 40;
  +  int PAGE_CONTEXT = 41;
  +  int PAGE = 42;
  +  int REQUEST = 43;
  +  int SESSION = 44;
  +  int APPLICATION = 45;
  +  int PARAM = 46;
  +  int PARAMS = 47;
  +  int IDENTIFIER = 48;
  +  int IMPL_OBJ_START = 49;
  +  int LETTER = 50;
  +  int DIGIT = 51;
  +  int ILLEGAL_CHARACTER = 52;
   
     int DEFAULT = 0;
     int IN_EXPRESSION = 1;
  @@ -61,17 +68,21 @@
       "<FLOATING_POINT_LITERAL>",
       "<EXPONENT>",
       "<STRING_LITERAL>",
  +    "<BADLY_ESCAPED_STRING_LITERAL>",
       "\"true\"",
       "\"false\"",
       "\"null\"",
       "\"}\"",
  -    "\":\"",
       "\".\"",
  -    "<GT>",
  -    "<LT>",
  +    "\">\"",
  +    "\"gt\"",
  +    "\"<\"",
  +    "\"lt\"",
       "\"==\"",
  -    "<LE>",
  -    "<GE>",
  +    "\"<=\"",
  +    "\"le\"",
  +    "\">=\"",
  +    "\"ge\"",
       "\"!=\"",
       "\"(\"",
       "\")\"",
  @@ -80,8 +91,10 @@
       "\"+\"",
       "\"-\"",
       "\"*\"",
  -    "<DIVIDE>",
  -    "<MODULUS>",
  +    "\"/\"",
  +    "\"div\"",
  +    "\"%\"",
  +    "\"mod\"",
       "\"not\"",
       "\"and\"",
       "\"or\"",
  @@ -96,6 +109,7 @@
       "\"#\"",
       "<LETTER>",
       "<DIGIT>",
  +    "<ILLEGAL_CHARACTER>",
     };
   
   }
  
  
  
  1.4       +323 -343  jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/parser/ELParserTokenManager.java
  
  Index: ELParserTokenManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/parser/ELParserTokenManager.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ELParserTokenManager.java	6 Mar 2002 07:46:48 -0000	1.3
  +++ ELParserTokenManager.java	20 Mar 2002 13:51:59 -0000	1.4
  @@ -219,100 +219,100 @@
         case 0:
            if ((active0 & 0x10000L) != 0L)
               return 1;
  -         if ((active0 & 0x3ff00003800L) != 0L)
  +         if ((active0 & 0xffe802947000L) != 0L)
            {
  -            jjmatchedKind = 42;
  -            return 30;
  +            jjmatchedKind = 48;
  +            return 6;
            }
            return -1;
         case 1:
  -         if ((active0 & 0x3fb00003800L) != 0L)
  +         if ((active0 & 0x10002940000L) != 0L)
  +            return 6;
  +         if ((active0 & 0xfee800007000L) != 0L)
            {
  -            jjmatchedKind = 42;
  +            jjmatchedKind = 48;
               jjmatchedPos = 1;
  -            return 30;
  +            return 6;
            }
  -         if ((active0 & 0x400000000L) != 0L)
  -            return 30;
            return -1;
         case 2:
  -         if ((active0 & 0x3f800003800L) != 0L)
  +         if ((active0 & 0xe800000000L) != 0L)
  +            return 6;
  +         if ((active0 & 0xfe0000007000L) != 0L)
            {
  -            jjmatchedKind = 42;
  +            jjmatchedKind = 48;
               jjmatchedPos = 2;
  -            return 30;
  +            return 6;
            }
  -         if ((active0 & 0x300000000L) != 0L)
  -            return 30;
            return -1;
         case 3:
  -         if ((active0 & 0x3e000001000L) != 0L)
  +         if ((active0 & 0x60000005000L) != 0L)
  +            return 6;
  +         if ((active0 & 0xf80000002000L) != 0L)
            {
               if (jjmatchedPos != 3)
               {
  -               jjmatchedKind = 42;
  +               jjmatchedKind = 48;
                  jjmatchedPos = 3;
               }
  -            return 30;
  +            return 6;
            }
  -         if ((active0 & 0x1800002800L) != 0L)
  -            return 30;
            return -1;
         case 4:
  -         if ((active0 & 0x30000001000L) != 0L)
  -            return 30;
  -         if ((active0 & 0xe800000000L) != 0L)
  +         if ((active0 & 0x3a0000000000L) != 0L)
            {
               if (jjmatchedPos != 4)
               {
  -               jjmatchedKind = 42;
  +               jjmatchedKind = 48;
                  jjmatchedPos = 4;
               }
  -            return 30;
  +            return 6;
            }
  +         if ((active0 & 0xc00000002000L) != 0L)
  +            return 6;
            return -1;
         case 5:
  -         if ((active0 & 0xe800000000L) != 0L)
  +         if ((active0 & 0x3a0000000000L) != 0L)
            {
  -            jjmatchedKind = 42;
  +            jjmatchedKind = 48;
               jjmatchedPos = 5;
  -            return 30;
  +            return 6;
            }
  -         if ((active0 & 0x20000000000L) != 0L)
  -            return 30;
  +         if ((active0 & 0x800000000000L) != 0L)
  +            return 6;
            return -1;
         case 6:
  -         if ((active0 & 0x8800000000L) != 0L)
  +         if ((active0 & 0x220000000000L) != 0L)
            {
  -            jjmatchedKind = 42;
  +            jjmatchedKind = 48;
               jjmatchedPos = 6;
  -            return 30;
  +            return 6;
            }
  -         if ((active0 & 0x6000000000L) != 0L)
  -            return 30;
  +         if ((active0 & 0x180000000000L) != 0L)
  +            return 6;
            return -1;
         case 7:
  -         if ((active0 & 0x8800000000L) != 0L)
  +         if ((active0 & 0x220000000000L) != 0L)
            {
  -            jjmatchedKind = 42;
  +            jjmatchedKind = 48;
               jjmatchedPos = 7;
  -            return 30;
  +            return 6;
            }
            return -1;
         case 8:
  -         if ((active0 & 0x8800000000L) != 0L)
  +         if ((active0 & 0x220000000000L) != 0L)
            {
  -            jjmatchedKind = 42;
  +            jjmatchedKind = 48;
               jjmatchedPos = 8;
  -            return 30;
  +            return 6;
            }
            return -1;
         case 9:
  -         if ((active0 & 0x8800000000L) != 0L)
  +         if ((active0 & 0x220000000000L) != 0L)
            {
  -            jjmatchedKind = 42;
  +            jjmatchedKind = 48;
               jjmatchedPos = 9;
  -            return 30;
  +            return 6;
            }
            return -1;
         default :
  @@ -336,45 +336,61 @@
      switch(curChar)
      {
         case 33:
  -         return jjMoveStringLiteralDfa1_1(0x400000L);
  +         return jjMoveStringLiteralDfa1_1(0x4000000L);
  +      case 37:
  +         return jjStopAtPos(0, 36);
         case 40:
  -         return jjStopAtPos(0, 23);
  +         return jjStopAtPos(0, 27);
         case 41:
  -         return jjStopAtPos(0, 24);
  +         return jjStopAtPos(0, 28);
         case 42:
  -         return jjStopAtPos(0, 29);
  +         return jjStopAtPos(0, 33);
         case 43:
  -         return jjStopAtPos(0, 27);
  +         return jjStopAtPos(0, 31);
         case 45:
  -         return jjStopAtPos(0, 28);
  +         return jjStopAtPos(0, 32);
         case 46:
            return jjStartNfaWithStates_1(0, 16, 1);
  -      case 58:
  -         return jjStopAtPos(0, 15);
  +      case 47:
  +         return jjStopAtPos(0, 34);
  +      case 60:
  +         jjmatchedKind = 19;
  +         return jjMoveStringLiteralDfa1_1(0x400000L);
         case 61:
  -         return jjMoveStringLiteralDfa1_1(0x80000L);
  +         return jjMoveStringLiteralDfa1_1(0x200000L);
  +      case 62:
  +         jjmatchedKind = 17;
  +         return jjMoveStringLiteralDfa1_1(0x1000000L);
         case 91:
  -         return jjStopAtPos(0, 25);
  +         return jjStopAtPos(0, 29);
         case 93:
  -         return jjStopAtPos(0, 26);
  +         return jjStopAtPos(0, 30);
         case 97:
  -         return jjMoveStringLiteralDfa1_1(0x8200000000L);
  +         return jjMoveStringLiteralDfa1_1(0x208000000000L);
  +      case 100:
  +         return jjMoveStringLiteralDfa1_1(0x800000000L);
         case 102:
  -         return jjMoveStringLiteralDfa1_1(0x1000L);
  +         return jjMoveStringLiteralDfa1_1(0x2000L);
  +      case 103:
  +         return jjMoveStringLiteralDfa1_1(0x2040000L);
  +      case 108:
  +         return jjMoveStringLiteralDfa1_1(0x900000L);
  +      case 109:
  +         return jjMoveStringLiteralDfa1_1(0x2000000000L);
         case 110:
  -         return jjMoveStringLiteralDfa1_1(0x100002000L);
  +         return jjMoveStringLiteralDfa1_1(0x4000004000L);
         case 111:
  -         return jjMoveStringLiteralDfa1_1(0x400000000L);
  +         return jjMoveStringLiteralDfa1_1(0x10000000000L);
         case 112:
  -         return jjMoveStringLiteralDfa1_1(0x31800000000L);
  +         return jjMoveStringLiteralDfa1_1(0xc60000000000L);
         case 114:
  -         return jjMoveStringLiteralDfa1_1(0x2000000000L);
  +         return jjMoveStringLiteralDfa1_1(0x80000000000L);
         case 115:
  -         return jjMoveStringLiteralDfa1_1(0x4000000000L);
  +         return jjMoveStringLiteralDfa1_1(0x100000000000L);
         case 116:
  -         return jjMoveStringLiteralDfa1_1(0x800L);
  +         return jjMoveStringLiteralDfa1_1(0x1000L);
         case 125:
  -         return jjStopAtPos(0, 14);
  +         return jjStopAtPos(0, 15);
         default :
            return jjMoveNfa_1(0, 0);
      }
  @@ -389,27 +405,43 @@
      switch(curChar)
      {
         case 61:
  -         if ((active0 & 0x80000L) != 0L)
  -            return jjStopAtPos(1, 19);
  +         if ((active0 & 0x200000L) != 0L)
  +            return jjStopAtPos(1, 21);
            else if ((active0 & 0x400000L) != 0L)
               return jjStopAtPos(1, 22);
  +         else if ((active0 & 0x1000000L) != 0L)
  +            return jjStopAtPos(1, 24);
  +         else if ((active0 & 0x4000000L) != 0L)
  +            return jjStopAtPos(1, 26);
            break;
         case 97:
  -         return jjMoveStringLiteralDfa2_1(active0, 0x31800001000L);
  +         return jjMoveStringLiteralDfa2_1(active0, 0xc60000002000L);
         case 101:
  -         return jjMoveStringLiteralDfa2_1(active0, 0x6000000000L);
  +         if ((active0 & 0x800000L) != 0L)
  +            return jjStartNfaWithStates_1(1, 23, 6);
  +         else if ((active0 & 0x2000000L) != 0L)
  +            return jjStartNfaWithStates_1(1, 25, 6);
  +         return jjMoveStringLiteralDfa2_1(active0, 0x180000000000L);
  +      case 105:
  +         return jjMoveStringLiteralDfa2_1(active0, 0x800000000L);
         case 110:
  -         return jjMoveStringLiteralDfa2_1(active0, 0x200000000L);
  +         return jjMoveStringLiteralDfa2_1(active0, 0x8000000000L);
         case 111:
  -         return jjMoveStringLiteralDfa2_1(active0, 0x100000000L);
  +         return jjMoveStringLiteralDfa2_1(active0, 0x6000000000L);
         case 112:
  -         return jjMoveStringLiteralDfa2_1(active0, 0x8000000000L);
  +         return jjMoveStringLiteralDfa2_1(active0, 0x200000000000L);
         case 114:
  -         if ((active0 & 0x400000000L) != 0L)
  -            return jjStartNfaWithStates_1(1, 34, 30);
  -         return jjMoveStringLiteralDfa2_1(active0, 0x800L);
  +         if ((active0 & 0x10000000000L) != 0L)
  +            return jjStartNfaWithStates_1(1, 40, 6);
  +         return jjMoveStringLiteralDfa2_1(active0, 0x1000L);
  +      case 116:
  +         if ((active0 & 0x40000L) != 0L)
  +            return jjStartNfaWithStates_1(1, 18, 6);
  +         else if ((active0 & 0x100000L) != 0L)
  +            return jjStartNfaWithStates_1(1, 20, 6);
  +         break;
         case 117:
  -         return jjMoveStringLiteralDfa2_1(active0, 0x2000L);
  +         return jjMoveStringLiteralDfa2_1(active0, 0x4000L);
         default :
            break;
      }
  @@ -427,27 +459,33 @@
      switch(curChar)
      {
         case 100:
  -         if ((active0 & 0x200000000L) != 0L)
  -            return jjStartNfaWithStates_1(2, 33, 30);
  +         if ((active0 & 0x2000000000L) != 0L)
  +            return jjStartNfaWithStates_1(2, 37, 6);
  +         else if ((active0 & 0x8000000000L) != 0L)
  +            return jjStartNfaWithStates_1(2, 39, 6);
            break;
         case 103:
  -         return jjMoveStringLiteralDfa3_1(active0, 0x1800000000L);
  +         return jjMoveStringLiteralDfa3_1(active0, 0x60000000000L);
         case 108:
  -         return jjMoveStringLiteralDfa3_1(active0, 0x3000L);
  +         return jjMoveStringLiteralDfa3_1(active0, 0x6000L);
         case 112:
  -         return jjMoveStringLiteralDfa3_1(active0, 0x8000000000L);
  +         return jjMoveStringLiteralDfa3_1(active0, 0x200000000000L);
         case 113:
  -         return jjMoveStringLiteralDfa3_1(active0, 0x2000000000L);
  +         return jjMoveStringLiteralDfa3_1(active0, 0x80000000000L);
         case 114:
  -         return jjMoveStringLiteralDfa3_1(active0, 0x30000000000L);
  +         return jjMoveStringLiteralDfa3_1(active0, 0xc00000000000L);
         case 115:
  -         return jjMoveStringLiteralDfa3_1(active0, 0x4000000000L);
  +         return jjMoveStringLiteralDfa3_1(active0, 0x100000000000L);
         case 116:
  -         if ((active0 & 0x100000000L) != 0L)
  -            return jjStartNfaWithStates_1(2, 32, 30);
  +         if ((active0 & 0x4000000000L) != 0L)
  +            return jjStartNfaWithStates_1(2, 38, 6);
            break;
         case 117:
  -         return jjMoveStringLiteralDfa3_1(active0, 0x800L);
  +         return jjMoveStringLiteralDfa3_1(active0, 0x1000L);
  +      case 118:
  +         if ((active0 & 0x800000000L) != 0L)
  +            return jjStartNfaWithStates_1(2, 35, 6);
  +         break;
         default :
            break;
      }
  @@ -465,24 +503,24 @@
      switch(curChar)
      {
         case 97:
  -         return jjMoveStringLiteralDfa4_1(active0, 0x30000000000L);
  +         return jjMoveStringLiteralDfa4_1(active0, 0xc00000000000L);
         case 101:
  -         if ((active0 & 0x800L) != 0L)
  -            return jjStartNfaWithStates_1(3, 11, 30);
  -         else if ((active0 & 0x1000000000L) != 0L)
  +         if ((active0 & 0x1000L) != 0L)
  +            return jjStartNfaWithStates_1(3, 12, 6);
  +         else if ((active0 & 0x40000000000L) != 0L)
            {
  -            jjmatchedKind = 36;
  +            jjmatchedKind = 42;
               jjmatchedPos = 3;
            }
  -         return jjMoveStringLiteralDfa4_1(active0, 0x800000000L);
  +         return jjMoveStringLiteralDfa4_1(active0, 0x20000000000L);
         case 108:
  -         if ((active0 & 0x2000L) != 0L)
  -            return jjStartNfaWithStates_1(3, 13, 30);
  -         return jjMoveStringLiteralDfa4_1(active0, 0x8000000000L);
  +         if ((active0 & 0x4000L) != 0L)
  +            return jjStartNfaWithStates_1(3, 14, 6);
  +         return jjMoveStringLiteralDfa4_1(active0, 0x200000000000L);
         case 115:
  -         return jjMoveStringLiteralDfa4_1(active0, 0x4000001000L);
  +         return jjMoveStringLiteralDfa4_1(active0, 0x100000002000L);
         case 117:
  -         return jjMoveStringLiteralDfa4_1(active0, 0x2000000000L);
  +         return jjMoveStringLiteralDfa4_1(active0, 0x80000000000L);
         default :
            break;
      }
  @@ -500,20 +538,20 @@
      switch(curChar)
      {
         case 67:
  -         return jjMoveStringLiteralDfa5_1(active0, 0x800000000L);
  +         return jjMoveStringLiteralDfa5_1(active0, 0x20000000000L);
         case 101:
  -         if ((active0 & 0x1000L) != 0L)
  -            return jjStartNfaWithStates_1(4, 12, 30);
  -         return jjMoveStringLiteralDfa5_1(active0, 0x2000000000L);
  +         if ((active0 & 0x2000L) != 0L)
  +            return jjStartNfaWithStates_1(4, 13, 6);
  +         return jjMoveStringLiteralDfa5_1(active0, 0x80000000000L);
         case 105:
  -         return jjMoveStringLiteralDfa5_1(active0, 0xc000000000L);
  +         return jjMoveStringLiteralDfa5_1(active0, 0x300000000000L);
         case 109:
  -         if ((active0 & 0x10000000000L) != 0L)
  +         if ((active0 & 0x400000000000L) != 0L)
            {
  -            jjmatchedKind = 40;
  +            jjmatchedKind = 46;
               jjmatchedPos = 4;
            }
  -         return jjMoveStringLiteralDfa5_1(active0, 0x20000000000L);
  +         return jjMoveStringLiteralDfa5_1(active0, 0x800000000000L);
         default :
            break;
      }
  @@ -531,13 +569,13 @@
      switch(curChar)
      {
         case 99:
  -         return jjMoveStringLiteralDfa6_1(active0, 0x8000000000L);
  +         return jjMoveStringLiteralDfa6_1(active0, 0x200000000000L);
         case 111:
  -         return jjMoveStringLiteralDfa6_1(active0, 0x4800000000L);
  +         return jjMoveStringLiteralDfa6_1(active0, 0x120000000000L);
         case 115:
  -         if ((active0 & 0x20000000000L) != 0L)
  -            return jjStartNfaWithStates_1(5, 41, 30);
  -         return jjMoveStringLiteralDfa6_1(active0, 0x2000000000L);
  +         if ((active0 & 0x800000000000L) != 0L)
  +            return jjStartNfaWithStates_1(5, 47, 6);
  +         return jjMoveStringLiteralDfa6_1(active0, 0x80000000000L);
         default :
            break;
      }
  @@ -555,14 +593,14 @@
      switch(curChar)
      {
         case 97:
  -         return jjMoveStringLiteralDfa7_1(active0, 0x8000000000L);
  +         return jjMoveStringLiteralDfa7_1(active0, 0x200000000000L);
         case 110:
  -         if ((active0 & 0x4000000000L) != 0L)
  -            return jjStartNfaWithStates_1(6, 38, 30);
  -         return jjMoveStringLiteralDfa7_1(active0, 0x800000000L);
  +         if ((active0 & 0x100000000000L) != 0L)
  +            return jjStartNfaWithStates_1(6, 44, 6);
  +         return jjMoveStringLiteralDfa7_1(active0, 0x20000000000L);
         case 116:
  -         if ((active0 & 0x2000000000L) != 0L)
  -            return jjStartNfaWithStates_1(6, 37, 30);
  +         if ((active0 & 0x80000000000L) != 0L)
  +            return jjStartNfaWithStates_1(6, 43, 6);
            break;
         default :
            break;
  @@ -581,7 +619,7 @@
      switch(curChar)
      {
         case 116:
  -         return jjMoveStringLiteralDfa8_1(active0, 0x8800000000L);
  +         return jjMoveStringLiteralDfa8_1(active0, 0x220000000000L);
         default :
            break;
      }
  @@ -599,9 +637,9 @@
      switch(curChar)
      {
         case 101:
  -         return jjMoveStringLiteralDfa9_1(active0, 0x800000000L);
  +         return jjMoveStringLiteralDfa9_1(active0, 0x20000000000L);
         case 105:
  -         return jjMoveStringLiteralDfa9_1(active0, 0x8000000000L);
  +         return jjMoveStringLiteralDfa9_1(active0, 0x200000000000L);
         default :
            break;
      }
  @@ -619,9 +657,9 @@
      switch(curChar)
      {
         case 111:
  -         return jjMoveStringLiteralDfa10_1(active0, 0x8000000000L);
  +         return jjMoveStringLiteralDfa10_1(active0, 0x200000000000L);
         case 120:
  -         return jjMoveStringLiteralDfa10_1(active0, 0x800000000L);
  +         return jjMoveStringLiteralDfa10_1(active0, 0x20000000000L);
         default :
            break;
      }
  @@ -639,12 +677,12 @@
      switch(curChar)
      {
         case 110:
  -         if ((active0 & 0x8000000000L) != 0L)
  -            return jjStartNfaWithStates_1(10, 39, 30);
  +         if ((active0 & 0x200000000000L) != 0L)
  +            return jjStartNfaWithStates_1(10, 45, 6);
            break;
         case 116:
  -         if ((active0 & 0x800000000L) != 0L)
  -            return jjStartNfaWithStates_1(10, 35, 30);
  +         if ((active0 & 0x20000000000L) != 0L)
  +            return jjStartNfaWithStates_1(10, 41, 6);
            break;
         default :
            break;
  @@ -673,7 +711,7 @@
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 49;
  +   jjnewStateCnt = 35;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -697,40 +735,16 @@
                     }
                     else if ((0x1800000000L & l) != 0L)
                     {
  -                     if (kind > 42)
  -                        kind = 42;
  -                     jjCheckNAdd(30);
  +                     if (kind > 48)
  +                        kind = 48;
  +                     jjCheckNAdd(6);
                     }
  -                  else if (curChar == 37)
  -                  {
  -                     if (kind > 31)
  -                        kind = 31;
  -                  }
  -                  else if (curChar == 47)
  -                  {
  -                     if (kind > 30)
  -                        kind = 30;
  -                  }
  -                  else if (curChar == 62)
  -                     jjstateSet[jjnewStateCnt++] = 19;
  -                  else if (curChar == 60)
  -                     jjstateSet[jjnewStateCnt++] = 17;
                     else if (curChar == 39)
  -                     jjCheckNAddStates(5, 7);
  +                     jjCheckNAddStates(5, 9);
                     else if (curChar == 34)
  -                     jjCheckNAddStates(8, 10);
  +                     jjCheckNAddStates(10, 14);
                     else if (curChar == 46)
                        jjCheckNAdd(1);
  -                  if (curChar == 60)
  -                  {
  -                     if (kind > 18)
  -                        kind = 18;
  -                  }
  -                  else if (curChar == 62)
  -                  {
  -                     if (kind > 17)
  -                        kind = 17;
  -                  }
                     break;
                  case 1:
                     if ((0x3ff000000000000L & l) == 0L)
  @@ -751,134 +765,124 @@
                     jjCheckNAdd(4);
                     break;
                  case 5:
  -               case 8:
  -                  if (curChar == 34)
  -                     jjCheckNAddStates(8, 10);
  -                  break;
  -               case 6:
  -                  if ((0xfffffffbffffffffL & l) != 0L)
  -                     jjCheckNAddStates(8, 10);
  -                  break;
  -               case 9:
  -                  if (curChar == 34 && kind > 10)
  -                     kind = 10;
  -                  break;
  -               case 10:
  -               case 13:
  -                  if (curChar == 39)
  -                     jjCheckNAddStates(5, 7);
  -                  break;
  -               case 11:
  -                  if ((0xffffff7fffffffffL & l) != 0L)
  -                     jjCheckNAddStates(5, 7);
  -                  break;
  -               case 14:
  -                  if (curChar == 39 && kind > 10)
  -                     kind = 10;
  -                  break;
  -               case 15:
  -                  if (curChar == 62 && kind > 17)
  -                     kind = 17;
  -                  break;
  -               case 16:
  -                  if (curChar == 60 && kind > 18)
  -                     kind = 18;
  -                  break;
  -               case 17:
  -                  if (curChar == 61 && kind > 20)
  -                     kind = 20;
  -                  break;
  -               case 18:
  -                  if (curChar == 60)
  -                     jjstateSet[jjnewStateCnt++] = 17;
  -                  break;
  -               case 19:
  -                  if (curChar == 61 && kind > 21)
  -                     kind = 21;
  -                  break;
  -               case 20:
  -                  if (curChar == 62)
  -                     jjstateSet[jjnewStateCnt++] = 19;
  -                  break;
  -               case 21:
  -                  if (curChar == 47 && kind > 30)
  -                     kind = 30;
  -                  break;
  -               case 25:
  -                  if (curChar == 37 && kind > 31)
  -                     kind = 31;
  -                  break;
  -               case 29:
                     if ((0x1800000000L & l) == 0L)
                        break;
  -                  if (kind > 42)
  -                     kind = 42;
  -                  jjCheckNAdd(30);
  +                  if (kind > 48)
  +                     kind = 48;
  +                  jjCheckNAdd(6);
                     break;
  -               case 30:
  +               case 6:
                     if ((0x3ff001000000000L & l) == 0L)
                        break;
  -                  if (kind > 42)
  -                     kind = 42;
  -                  jjCheckNAdd(30);
  +                  if (kind > 48)
  +                     kind = 48;
  +                  jjCheckNAdd(6);
                     break;
  -               case 31:
  +               case 7:
                     if ((0x3ff000000000000L & l) == 0L)
                        break;
                     if (kind > 7)
                        kind = 7;
                     jjCheckNAddStates(0, 4);
                     break;
  -               case 32:
  +               case 8:
                     if ((0x3ff000000000000L & l) == 0L)
                        break;
                     if (kind > 7)
                        kind = 7;
  -                  jjCheckNAdd(32);
  +                  jjCheckNAdd(8);
                     break;
  -               case 33:
  +               case 9:
                     if ((0x3ff000000000000L & l) != 0L)
  -                     jjCheckNAddTwoStates(33, 34);
  +                     jjCheckNAddTwoStates(9, 10);
                     break;
  -               case 34:
  +               case 10:
                     if (curChar != 46)
                        break;
                     if (kind > 8)
                        kind = 8;
  -                  jjCheckNAddTwoStates(35, 36);
  +                  jjCheckNAddTwoStates(11, 12);
                     break;
  -               case 35:
  +               case 11:
                     if ((0x3ff000000000000L & l) == 0L)
                        break;
                     if (kind > 8)
                        kind = 8;
  -                  jjCheckNAddTwoStates(35, 36);
  +                  jjCheckNAddTwoStates(11, 12);
                     break;
  -               case 37:
  +               case 13:
                     if ((0x280000000000L & l) != 0L)
  -                     jjCheckNAdd(38);
  +                     jjCheckNAdd(14);
                     break;
  -               case 38:
  +               case 14:
                     if ((0x3ff000000000000L & l) == 0L)
                        break;
                     if (kind > 8)
                        kind = 8;
  -                  jjCheckNAdd(38);
  +                  jjCheckNAdd(14);
                     break;
  -               case 39:
  +               case 15:
                     if ((0x3ff000000000000L & l) != 0L)
  -                     jjCheckNAddTwoStates(39, 40);
  +                     jjCheckNAddTwoStates(15, 16);
                     break;
  -               case 41:
  +               case 17:
                     if ((0x280000000000L & l) != 0L)
  -                     jjCheckNAdd(42);
  +                     jjCheckNAdd(18);
                     break;
  -               case 42:
  +               case 18:
                     if ((0x3ff000000000000L & l) == 0L)
                        break;
                     if (kind > 8)
                        kind = 8;
  -                  jjCheckNAdd(42);
  +                  jjCheckNAdd(18);
  +                  break;
  +               case 19:
  +                  if (curChar == 34)
  +                     jjCheckNAddStates(10, 14);
  +                  break;
  +               case 20:
  +                  if ((0xfffffffbffffffffL & l) != 0L)
  +                     jjCheckNAddStates(15, 17);
  +                  break;
  +               case 22:
  +                  if (curChar == 34)
  +                     jjCheckNAddStates(15, 17);
  +                  break;
  +               case 23:
  +                  if (curChar == 34 && kind > 10)
  +                     kind = 10;
  +                  break;
  +               case 24:
  +                  if ((0xfffffffbffffffffL & l) != 0L)
  +                     jjCheckNAddTwoStates(24, 25);
  +                  break;
  +               case 26:
  +                  if ((0xfffffffbffffffffL & l) != 0L && kind > 11)
  +                     kind = 11;
  +                  break;
  +               case 27:
  +                  if (curChar == 39)
  +                     jjCheckNAddStates(5, 9);
  +                  break;
  +               case 28:
  +                  if ((0xffffff7fffffffffL & l) != 0L)
  +                     jjCheckNAddStates(18, 20);
  +                  break;
  +               case 30:
  +                  if (curChar == 39)
  +                     jjCheckNAddStates(18, 20);
  +                  break;
  +               case 31:
  +                  if (curChar == 39 && kind > 10)
  +                     kind = 10;
  +                  break;
  +               case 32:
  +                  if ((0xffffff7fffffffffL & l) != 0L)
  +                     jjCheckNAddTwoStates(32, 33);
  +                  break;
  +               case 34:
  +                  if ((0xffffff7fffffffffL & l) != 0L && kind > 11)
  +                     kind = 11;
                     break;
                  default : break;
               }
  @@ -892,112 +896,69 @@
               switch(jjstateSet[--i])
               {
                  case 0:
  -                  if ((0x7fffffe87fffffeL & l) != 0L)
  -                  {
  -                     if (kind > 42)
  -                        kind = 42;
  -                     jjCheckNAdd(30);
  -                  }
  -                  if (curChar == 108)
  -                     jjAddStates(11, 12);
  -                  else if (curChar == 103)
  -                     jjAddStates(13, 14);
  -                  else if (curChar == 109)
  -                     jjstateSet[jjnewStateCnt++] = 27;
  -                  else if (curChar == 100)
  -                     jjstateSet[jjnewStateCnt++] = 23;
  +               case 6:
  +                  if ((0x7fffffe87fffffeL & l) == 0L)
  +                     break;
  +                  if (kind > 48)
  +                     kind = 48;
  +                  jjCheckNAdd(6);
                     break;
                  case 2:
                     if ((0x2000000020L & l) != 0L)
  -                     jjAddStates(15, 16);
  +                     jjAddStates(21, 22);
                     break;
  -               case 6:
  -                  if ((0xffffffffefffffffL & l) != 0L)
  -                     jjCheckNAddStates(8, 10);
  -                  break;
  -               case 7:
  -                  if (curChar == 92)
  -                     jjstateSet[jjnewStateCnt++] = 8;
  +               case 12:
  +                  if ((0x2000000020L & l) != 0L)
  +                     jjAddStates(23, 24);
                     break;
  -               case 8:
  -                  if (curChar == 92)
  -                     jjCheckNAddStates(8, 10);
  +               case 16:
  +                  if ((0x2000000020L & l) != 0L)
  +                     jjAddStates(25, 26);
                     break;
  -               case 11:
  +               case 20:
                     if ((0xffffffffefffffffL & l) != 0L)
  -                     jjCheckNAddStates(5, 7);
  -                  break;
  -               case 12:
  -                  if (curChar == 92)
  -                     jjstateSet[jjnewStateCnt++] = 13;
  +                     jjCheckNAddStates(15, 17);
                     break;
  -               case 13:
  +               case 21:
                     if (curChar == 92)
  -                     jjCheckNAddStates(5, 7);
  +                     jjstateSet[jjnewStateCnt++] = 22;
                     break;
                  case 22:
  -                  if (curChar == 118 && kind > 30)
  -                     kind = 30;
  -                  break;
  -               case 23:
  -                  if (curChar == 105)
  -                     jjstateSet[jjnewStateCnt++] = 22;
  +                  if (curChar == 92)
  +                     jjCheckNAddStates(15, 17);
                     break;
                  case 24:
  -                  if (curChar == 100)
  -                     jjstateSet[jjnewStateCnt++] = 23;
  -                  break;
  -               case 26:
  -                  if (curChar == 100 && kind > 31)
  -                     kind = 31;
  +                  if ((0xffffffffefffffffL & l) != 0L)
  +                     jjAddStates(27, 28);
                     break;
  -               case 27:
  -                  if (curChar == 111)
  +               case 25:
  +                  if (curChar == 92)
                        jjstateSet[jjnewStateCnt++] = 26;
                     break;
  +               case 26:
  +               case 34:
  +                  if ((0xffffffffefffffffL & l) != 0L && kind > 11)
  +                     kind = 11;
  +                  break;
                  case 28:
  -                  if (curChar == 109)
  -                     jjstateSet[jjnewStateCnt++] = 27;
  +                  if ((0xffffffffefffffffL & l) != 0L)
  +                     jjCheckNAddStates(18, 20);
                     break;
                  case 29:
  -               case 30:
  -                  if ((0x7fffffe87fffffeL & l) == 0L)
  -                     break;
  -                  if (kind > 42)
  -                     kind = 42;
  -                  jjCheckNAdd(30);
  +                  if (curChar == 92)
  +                     jjstateSet[jjnewStateCnt++] = 30;
                     break;
  -               case 36:
  -                  if ((0x2000000020L & l) != 0L)
  -                     jjAddStates(17, 18);
  +               case 30:
  +                  if (curChar == 92)
  +                     jjCheckNAddStates(18, 20);
                     break;
  -               case 40:
  -                  if ((0x2000000020L & l) != 0L)
  -                     jjAddStates(19, 20);
  +               case 32:
  +                  if ((0xffffffffefffffffL & l) != 0L)
  +                     jjAddStates(29, 30);
                     break;
  -               case 43:
  -                  if (curChar == 103)
  -                     jjAddStates(13, 14);
  -                  break;
  -               case 44:
  -                  if (curChar == 116 && kind > 17)
  -                     kind = 17;
  -                  break;
  -               case 45:
  -                  if (curChar == 101 && kind > 21)
  -                     kind = 21;
  -                  break;
  -               case 46:
  -                  if (curChar == 108)
  -                     jjAddStates(11, 12);
  -                  break;
  -               case 47:
  -                  if (curChar == 116 && kind > 18)
  -                     kind = 18;
  -                  break;
  -               case 48:
  -                  if (curChar == 101 && kind > 20)
  -                     kind = 20;
  +               case 33:
  +                  if (curChar == 92)
  +                     jjstateSet[jjnewStateCnt++] = 34;
                     break;
                  default : break;
               }
  @@ -1015,20 +976,33 @@
               switch(jjstateSet[--i])
               {
                  case 0:
  -               case 30:
  +               case 6:
                     if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
                        break;
  -                  if (kind > 42)
  -                     kind = 42;
  -                  jjCheckNAdd(30);
  +                  if (kind > 48)
  +                     kind = 48;
  +                  jjCheckNAdd(6);
                     break;
  -               case 6:
  +               case 20:
                     if (jjCanMove_0(hiByte, i1, i2, l1, l2))
  -                     jjAddStates(8, 10);
  +                     jjAddStates(15, 17);
                     break;
  -               case 11:
  +               case 24:
                     if (jjCanMove_0(hiByte, i1, i2, l1, l2))
  -                     jjAddStates(5, 7);
  +                     jjAddStates(27, 28);
  +                  break;
  +               case 26:
  +               case 34:
  +                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 11)
  +                     kind = 11;
  +                  break;
  +               case 28:
  +                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
  +                     jjAddStates(18, 20);
  +                  break;
  +               case 32:
  +                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
  +                     jjAddStates(29, 30);
                     break;
                  default : break;
               }
  @@ -1041,15 +1015,15 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 49 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 35 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
      }
   }
   static final int[] jjnextStates = {
  -   32, 33, 34, 39, 40, 11, 12, 14, 6, 7, 9, 47, 48, 44, 45, 3, 
  -   4, 37, 38, 41, 42, 
  +   8, 9, 10, 15, 16, 28, 29, 31, 32, 33, 20, 21, 23, 24, 25, 20, 
  +   21, 23, 28, 29, 31, 3, 4, 13, 14, 17, 18, 24, 25, 32, 33, 
   };
   private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
   {
  @@ -1084,30 +1058,32 @@
      }
   }
   public static final String[] jjstrLiteralImages = {
  -"", null, "\44\173", null, null, null, null, null, null, null, null, 
  -"\164\162\165\145", "\146\141\154\163\145", "\156\165\154\154", "\175", "\72", "\56", null, null, 
  -"\75\75", null, null, "\41\75", "\50", "\51", "\133", "\135", "\53", "\55", "\52", null, 
  -null, "\156\157\164", "\141\156\144", "\157\162", 
  +"", null, "\44\173", null, null, null, null, null, null, null, null, null, 
  +"\164\162\165\145", "\146\141\154\163\145", "\156\165\154\154", "\175", "\56", "\76", "\147\164", 
  +"\74", "\154\164", "\75\75", "\74\75", "\154\145", "\76\75", "\147\145", "\41\75", 
  +"\50", "\51", "\133", "\135", "\53", "\55", "\52", "\57", "\144\151\166", "\45", 
  +"\155\157\144", "\156\157\164", "\141\156\144", "\157\162", 
   "\160\141\147\145\103\157\156\164\145\170\164", "\160\141\147\145", "\162\145\161\165\145\163\164", 
   "\163\145\163\163\151\157\156", "\141\160\160\154\151\143\141\164\151\157\156", "\160\141\162\141\155", 
  -"\160\141\162\141\155\163", null, null, null, null, };
  +"\160\141\162\141\155\163", null, null, null, null, null, };
   public static final String[] lexStateNames = {
      "DEFAULT", 
      "IN_EXPRESSION", 
   };
   public static final int[] jjnewLexState = {
  -   -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
  -   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
  +   -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
  +   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
  +   -1, -1, -1, 
   };
   static final long[] jjtoToken = {
  -   0x7fffffffd87L, 
  +   0x11fffffffffd87L, 
   };
   static final long[] jjtoSkip = {
      0x78L, 
   };
   private JavaCharStream input_stream;
  -private final int[] jjrounds = new int[49];
  -private final int[] jjstateSet = new int[98];
  +private final int[] jjrounds = new int[35];
  +private final int[] jjstateSet = new int[70];
   protected char curChar;
   public ELParserTokenManager(JavaCharStream stream)
   {
  @@ -1131,7 +1107,7 @@
   {
      int i;
      jjround = 0x80000001;
  -   for (i = 49; i-- > 0;)
  +   for (i = 35; i-- > 0;)
         jjrounds[i] = 0x80000000;
   }
   public void ReInit(JavaCharStream stream, int lexState)
  @@ -1204,6 +1180,10 @@
          jjmatchedKind = 0x7fffffff;
          jjmatchedPos = 0;
          curPos = jjMoveStringLiteralDfa0_1();
  +       if (jjmatchedPos == 0 && jjmatchedKind > 52)
  +       {
  +          jjmatchedKind = 52;
  +       }
          break;
      }
        if (jjmatchedKind != 0x7fffffff)
  
  
  
  1.2       +1 -1      jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test/EvaluationTest.java
  
  Index: EvaluationTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test/EvaluationTest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- EvaluationTest.java	5 Mar 2002 14:10:46 -0000	1.1
  +++ EvaluationTest.java	20 Mar 2002 13:51:59 -0000	1.2
  @@ -89,7 +89,7 @@
    * against an existing output file to do regression testing.
    * 
    * @author Nathan Abramson - Art Technology Group
  - * @version $Change: 181181 $$DateTime: 2001/06/26 09:55:09 $$Author: shawn $
  + * @version $Change: 181181 $$DateTime: 2001/06/26 09:55:09 $$Author: arista $
    **/
   
   public class EvaluationTest
  @@ -138,7 +138,7 @@
   	  Class cl = parseClassName (typeStr);
   	  pOut.println ("ExpectedType: " + cl);
   	  Evaluator e = new Evaluator ();
  -	  Object val = e.evaluate (str, context, cl);
  +	  Object val = e.evaluate ("test", str, context, cl);
   	  pOut.println ("Evaluates to: " + val);
   	  if (val != null) {
   	    pOut.println ("With type: " + val.getClass ().getName ());
  
  
  
  1.3       +332 -188  jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test/evaluationTestsOutput.txt
  
  Index: evaluationTestsOutput.txt
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test/evaluationTestsOutput.txt,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- evaluationTestsOutput.txt	13 Mar 2002 22:47:19 -0000	1.2
  +++ evaluationTestsOutput.txt	20 Mar 2002 13:51:59 -0000	1.3
  @@ -160,85 +160,109 @@
   # val1a - defined in page scope
   Expression: ${page:val1a}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 7.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 7.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${request:val1a}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 10.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${session:val1a}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 10.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${app:val1a}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
  @@ -251,85 +275,109 @@
   # val1b - defined in request scope
   Expression: ${page:val1b}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 7.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 7.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${request:val1b}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 10.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${session:val1b}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 10.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${app:val1b}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
  @@ -342,85 +390,109 @@
   # val1c - defined in session scope
   Expression: ${page:val1c}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 7.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 7.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${request:val1c}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 10.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${session:val1c}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 10.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${app:val1c}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
  @@ -433,85 +505,109 @@
   # val1d - defined in application scope
   Expression: ${page:val1d}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 7.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 7.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${request:val1d}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 10.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${session:val1d}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 10.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${app:val1d}
   ExpectedType: class java.lang.String
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered ":" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered ":" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
  @@ -1366,7 +1462,7 @@
   
   Expression: ${and}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "and" at line 1, column 3.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "and" at line 1, column 3.
   Was expecting one of:
       <INTEGER_LITERAL> ...
       <FLOATING_POINT_LITERAL> ...
  @@ -1388,7 +1484,7 @@
       
   Expression: ${or}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "or" at line 1, column 3.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "or" at line 1, column 3.
   Was expecting one of:
       <INTEGER_LITERAL> ...
       <FLOATING_POINT_LITERAL> ...
  @@ -1410,7 +1506,7 @@
       
   Expression: ${not}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "}" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "}" at line 1, column 6.
   Was expecting one of:
       <INTEGER_LITERAL> ...
       <FLOATING_POINT_LITERAL> ...
  @@ -1440,7 +1536,7 @@
   
   Expression: ${lt}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "lt" at line 1, column 3.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "lt" at line 1, column 3.
   Was expecting one of:
       <INTEGER_LITERAL> ...
       <FLOATING_POINT_LITERAL> ...
  @@ -1462,7 +1558,7 @@
       
   Expression: ${gt}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "gt" at line 1, column 3.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "gt" at line 1, column 3.
   Was expecting one of:
       <INTEGER_LITERAL> ...
       <FLOATING_POINT_LITERAL> ...
  @@ -1484,7 +1580,7 @@
       
   Expression: ${le}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "le" at line 1, column 3.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "le" at line 1, column 3.
   Was expecting one of:
       <INTEGER_LITERAL> ...
       <FLOATING_POINT_LITERAL> ...
  @@ -1506,7 +1602,7 @@
       
   Expression: ${ge}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "ge" at line 1, column 3.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "ge" at line 1, column 3.
   Was expecting one of:
       <INTEGER_LITERAL> ...
       <FLOATING_POINT_LITERAL> ...
  @@ -1532,17 +1628,17 @@
   
   Expression: ${page}
   ExpectedType: class java.lang.Object
  -Evaluates to: org.apache.taglibs.standard.lang.jstl.ImplicitObjects$1@506411
  +Evaluates to: org.apache.taglibs.standard.lang.jstl.ImplicitObjects$1@599a4d
   With type: org.apache.taglibs.standard.lang.jstl.ImplicitObjects$1
   
   Expression: ${request}
   ExpectedType: class java.lang.Object
  -Evaluates to: org.apache.taglibs.standard.lang.jstl.ImplicitObjects$2@2152e6
  +Evaluates to: org.apache.taglibs.standard.lang.jstl.ImplicitObjects$2@49ba38
   With type: org.apache.taglibs.standard.lang.jstl.ImplicitObjects$2
   
   Expression: ${session}
   ExpectedType: class java.lang.Object
  -Evaluates to: org.apache.taglibs.standard.lang.jstl.ImplicitObjects$3@60be38
  +Evaluates to: org.apache.taglibs.standard.lang.jstl.ImplicitObjects$3@6859c0
   With type: org.apache.taglibs.standard.lang.jstl.ImplicitObjects$3
   
   Expression: ${app}
  @@ -1570,7 +1666,7 @@
   
   Expression: ${bean1a.and}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "and" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "and" at line 1, column 10.
   Was expecting one of:
       <STRING_LITERAL> ...
       "pageContext" ...
  @@ -1584,7 +1680,7 @@
       
   Expression: ${bean1a.or}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "or" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "or" at line 1, column 10.
   Was expecting one of:
       <STRING_LITERAL> ...
       "pageContext" ...
  @@ -1598,7 +1694,7 @@
       
   Expression: ${bean1a.not}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "not" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "not" at line 1, column 10.
   Was expecting one of:
       <STRING_LITERAL> ...
       "pageContext" ...
  @@ -1618,7 +1714,7 @@
   Causes an error: Unable to find a value for "ne" in object of class "org.apache.taglibs.standard.lang.jstl.test.Bean1" using operator "."
   Expression: ${bean1a.lt}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "lt" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "lt" at line 1, column 10.
   Was expecting one of:
       <STRING_LITERAL> ...
       "pageContext" ...
  @@ -1632,7 +1728,7 @@
       
   Expression: ${bean1a.gt}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "gt" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "gt" at line 1, column 10.
   Was expecting one of:
       <STRING_LITERAL> ...
       "pageContext" ...
  @@ -1646,7 +1742,7 @@
       
   Expression: ${bean1a.le}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "le" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "le" at line 1, column 10.
   Was expecting one of:
       <STRING_LITERAL> ...
       "pageContext" ...
  @@ -1660,7 +1756,7 @@
       
   Expression: ${bean1a.ge}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "ge" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "ge" at line 1, column 10.
   Was expecting one of:
       <STRING_LITERAL> ...
       "pageContext" ...
  @@ -1689,7 +1785,7 @@
   Causes an error: Unable to find a value for "app" in object of class "org.apache.taglibs.standard.lang.jstl.test.Bean1" using operator "."
   Expression: ${bean1a.true}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "true" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "true" at line 1, column 10.
   Was expecting one of:
       <STRING_LITERAL> ...
       "pageContext" ...
  @@ -1703,7 +1799,7 @@
       
   Expression: ${bean1a.false}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "false" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "false" at line 1, column 10.
   Was expecting one of:
       <STRING_LITERAL> ...
       "pageContext" ...
  @@ -1717,7 +1813,7 @@
       
   Expression: ${bean1a.null}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "null" at line 1, column 10.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "null" at line 1, column 10.
   Was expecting one of:
       <STRING_LITERAL> ...
       "pageContext" ...
  @@ -2016,85 +2112,109 @@
   
   Expression: ${ 4 eq 3}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "eq" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "eq" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${ 4 neq 3}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "neq" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "neq" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${ 4 eq 4}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "eq" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "eq" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${ 4 neq 4}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "neq" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "neq" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
  @@ -2110,85 +2230,109 @@
   
   Expression: ${ 4 lte 3}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "lte" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "lte" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${ 4 gte 3}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "gte" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "gte" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${ 4 lte 4}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "lte" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "lte" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
   Expression: ${ 4 gte 4}
   ExpectedType: class java.lang.Object
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "gte" at line 1, column 6.
  +Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.CustomParseException: Encountered "gte" at line 1, column 6.
   Was expecting one of:
       "}" ...
       "." ...
  -    <GT> ...
  -    <LT> ...
  +    ">" ...
  +    "gt" ...
  +    "<" ...
  +    "lt" ...
       "==" ...
  -    <LE> ...
  -    <GE> ...
  +    "<=" ...
  +    "le" ...
  +    ">=" ...
  +    "ge" ...
       "!=" ...
       "[" ...
       "+" ...
       "-" ...
       "*" ...
  -    <DIVIDE> ...
  -    <MODULUS> ...
  +    "/" ...
  +    "div" ...
  +    "%" ...
  +    "mod" ...
       "and" ...
       "or" ...
       
  
  
  
  1.2       +8 -19     jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test/parserTestsOutput.txt
  
  Index: parserTestsOutput.txt
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test/parserTestsOutput.txt,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- parserTestsOutput.txt	5 Mar 2002 14:10:46 -0000	1.1
  +++ parserTestsOutput.txt	20 Mar 2002 13:51:59 -0000	1.2
  @@ -4,19 +4,7 @@
   Attribute value: ${ 3}
   Parses to: ${3}
   Attribute value: a${
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.ParseException: Encountered "<EOF>" at line 1, column 3.
  -Was expecting one of:
  -    <INTEGER_LITERAL> ...
  -    <FLOATING_POINT_LITERAL> ...
  -    <STRING_LITERAL> ...
  -    "true" ...
  -    "false" ...
  -    "null" ...
  -    "(" ...
  -    "-" ...
  -    "not" ...
  -    <IDENTIFIER> ...
  -    
  +Causes an error: Unable to parse custom action attribute "test" with value "a${": encountered "<EOF>", expected one of "<INTEGER_LITERAL>, <FLOATING_POINT_LITERAL>, <STRING_LITERAL>, "true", "false", "null", "(", "-", "not", "pageContext", "page", "request", "session", "application", "param", "params", <IDENTIFIER>"
   Attribute value: a${ 5 }
   Parses to: a${5}
   Attribute value: ${ 3 }b
  @@ -30,7 +18,7 @@
   Attribute value: ${1}
   Parses to: ${1}
   Attribute value: ${-12}
  -Parses to: ${-12}
  +Parses to: ${(- 12)}
   Attribute value: ${true}
   Parses to: ${true}
   Attribute value: ${false}
  @@ -40,7 +28,7 @@
   Attribute value: ${4.2}
   Parses to: ${4.2}
   Attribute value: ${-21.3}
  -Parses to: ${-21.3}
  +Parses to: ${(- 21.3)}
   Attribute value: ${4.}
   Parses to: ${4.0}
   Attribute value: ${.21}
  @@ -68,9 +56,9 @@
   Attribute value: ${" with escaping \"\\\""}
   Parses to: ${" with escaping \"\\\""}
   Attribute value: ${" bad \ escaping"}
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.TokenMgrError: Lexical error at line 1, column 10.  Encountered: " " (32), after : "\" bad \\"
  +Causes an error: Unable to parse custom action attribute "test" with value "${" bad \ escaping"}": encountered "" bad \ ", expected one of "<INTEGER_LITERAL>, <FLOATING_POINT_LITERAL>, <STRING_LITERAL>, "true", "false", "null", "(", "-", "not", "pageContext", "page", "request", "session", "application", "param", "params", <IDENTIFIER>"
   Attribute value: ${" bad \' escaping"}
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.TokenMgrError: Lexical error at line 1, column 10.  Encountered: "\'" (39), after : "\" bad \\"
  +Causes an error: Unable to parse custom action attribute "test" with value "${" bad \' escaping"}": encountered "" bad \'", expected one of "<INTEGER_LITERAL>, <FLOATING_POINT_LITERAL>, <STRING_LITERAL>, "true", "false", "null", "(", "-", "not", "pageContext", "page", "request", "session", "application", "param", "params", <IDENTIFIER>"
   
   # string literals with '
   Attribute value: ${'abc'}
  @@ -90,9 +78,9 @@
   Attribute value: ${' with escaping \'\\\''}
   Parses to: ${" with escaping '\\'"}
   Attribute value: ${' bad \ escaping'}
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.TokenMgrError: Lexical error at line 1, column 10.  Encountered: " " (32), after : "\' bad \\"
  +Causes an error: Unable to parse custom action attribute "test" with value "${' bad \ escaping'}": encountered "' bad \ ", expected one of "<INTEGER_LITERAL>, <FLOATING_POINT_LITERAL>, <STRING_LITERAL>, "true", "false", "null", "(", "-", "not", "pageContext", "page", "request", "session", "application", "param", "params", <IDENTIFIER>"
   Attribute value: ${' bad \" escaping'}
  -Causes an error: Unable to parse the expression: org.apache.taglibs.standard.lang.jstl.parser.TokenMgrError: Lexical error at line 1, column 10.  Encountered: "\"" (34), after : "\' bad \\"
  +Causes an error: Unable to parse custom action attribute "test" with value "${' bad \" escaping'}": encountered "' bad \"", expected one of "<INTEGER_LITERAL>, <FLOATING_POINT_LITERAL>, <STRING_LITERAL>, "true", "false", "null", "(", "-", "not", "pageContext", "page", "request", "session", "application", "param", "params", <IDENTIFIER>"
   
   # identifiers
   Attribute value: ${abc}
  @@ -143,3 +131,4 @@
   # array accessors of non-integer types
   Attribute value: ${  a ["hello"]."12" [17.5] }
   Parses to: ${a["hello"]."12"[17.5]}
  +
  
  
  

--
To unsubscribe, e-mail:   <mailto:taglibs-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:taglibs-dev-help@jakarta.apache.org>


Mime
View raw message