Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstFunction.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstFunction.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstFunction.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstFunction.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,118 @@ +/* Generated By:JJTree: Do not edit this line. AstFunction.java */ + +package org.apache.el.parser; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import javax.el.ELException; +import javax.el.FunctionMapper; + +import org.apache.el.lang.EvaluationContext; +import org.apache.el.util.MessageFactory; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstFunction extends SimpleNode { + + protected String localName = ""; + + protected String prefix = ""; + + public AstFunction(int id) { + super(id); + } + + public String getLocalName() { + return localName; + } + + public String getOutputName() { + if (this.prefix == null) { + return this.localName; + } else { + return this.prefix + ":" + this.localName; + } + } + + public String getPrefix() { + return prefix; + } + + public Class getType(EvaluationContext ctx) + throws ELException { + + FunctionMapper fnMapper = ctx.getFunctionMapper(); + + // quickly validate again for this request + if (fnMapper == null) { + throw new ELException(MessageFactory.get("error.fnMapper.null")); + } + Method m = fnMapper.resolveFunction(this.prefix, this.localName); + if (m == null) { + throw new ELException(MessageFactory.get("error.fnMapper.method", + this.getOutputName())); + } + return m.getReturnType(); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + + FunctionMapper fnMapper = ctx.getFunctionMapper(); + + // quickly validate again for this request + if (fnMapper == null) { + throw new ELException(MessageFactory.get("error.fnMapper.null")); + } + Method m = fnMapper.resolveFunction(this.prefix, this.localName); + if (m == null) { + throw new ELException(MessageFactory.get("error.fnMapper.method", + this.getOutputName())); + } + + Class[] paramTypes = m.getParameterTypes(); + Object[] params = null; + Object result = null; + int numParams = this.jjtGetNumChildren(); + if (numParams > 0) { + params = new Object[numParams]; + try { + for (int i = 0; i < numParams; i++) { + params[i] = this.children[i].getValue(ctx); + params[i] = coerceToType(params[i], paramTypes[i]); + } + } catch (ELException ele) { + throw new ELException(MessageFactory.get("error.function", this + .getOutputName()), ele); + } + } + try { + result = m.invoke(null, params); + } catch (IllegalAccessException iae) { + throw new ELException(MessageFactory.get("error.function", this + .getOutputName()), iae); + } catch (InvocationTargetException ite) { + throw new ELException(MessageFactory.get("error.function", this + .getOutputName()), ite.getCause()); + } + return result; + } + + public void setLocalName(String localName) { + this.localName = localName; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + + public String toString() + { + return ELParserTreeConstants.jjtNodeName[id] + "[" + this.getOutputName() + "]"; + } +}
Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstGreaterThan.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstGreaterThan.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstGreaterThan.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstGreaterThan.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,31 @@ +/* Generated By:JJTree: Do not edit this line. AstGreaterThan.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstGreaterThan extends BooleanNode { + public AstGreaterThan(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj0 = this.children[0].getValue(ctx); + if (obj0 == null) { + return Boolean.FALSE; + } + Object obj1 = this.children[1].getValue(ctx); + if (obj1 == null) { + return Boolean.FALSE; + } + return (compare(obj0, obj1) > 0) ? Boolean.TRUE : Boolean.FALSE; + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstGreaterThanEqual.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstGreaterThanEqual.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstGreaterThanEqual.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstGreaterThanEqual.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,31 @@ +/* Generated By:JJTree: Do not edit this line. AstGreaterThanEqual.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: kchung $ + */ +public final class AstGreaterThanEqual extends BooleanNode { + public AstGreaterThanEqual(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj0 = this.children[0].getValue(ctx); + Object obj1 = this.children[1].getValue(ctx); + if (obj0 == obj1) { + return Boolean.TRUE; + } + if (obj0 == null || obj1 == null) { + return Boolean.FALSE; + } + return (compare(obj0, obj1) >= 0) ? Boolean.TRUE : Boolean.FALSE; + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstIdentifier.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstIdentifier.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstIdentifier.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstIdentifier.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,138 @@ +/* Generated By:JJTree: Do not edit this line. AstIdentifier.java */ + +package org.apache.el.parser; + +import javax.el.ELException; +import javax.el.MethodExpression; +import javax.el.MethodInfo; +import javax.el.MethodNotFoundException; +import javax.el.ValueExpression; +import javax.el.VariableMapper; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: jhook $ + */ +public final class AstIdentifier extends SimpleNode { + public AstIdentifier(int id) { + super(id); + } + + public Class getType(EvaluationContext ctx) throws ELException { + VariableMapper varMapper = ctx.getVariableMapper(); + if (varMapper != null) { + ValueExpression expr = varMapper.resolveVariable(this.image); + if (expr != null) { + return expr.getType(ctx.getELContext()); + } + } + ctx.setPropertyResolved(false); + return ctx.getELResolver().getType(ctx, null, this.image); + } + + public Object getValue(EvaluationContext ctx) throws ELException { + VariableMapper varMapper = ctx.getVariableMapper(); + if (varMapper != null) { + ValueExpression expr = varMapper.resolveVariable(this.image); + if (expr != null) { + return expr.getValue(ctx.getELContext()); + } + } + ctx.setPropertyResolved(false); + return ctx.getELResolver().getValue(ctx, null, this.image); + } + + public boolean isReadOnly(EvaluationContext ctx) throws ELException { + VariableMapper varMapper = ctx.getVariableMapper(); + if (varMapper != null) { + ValueExpression expr = varMapper.resolveVariable(this.image); + if (expr != null) { + return expr.isReadOnly(ctx.getELContext()); + } + } + ctx.setPropertyResolved(false); + return ctx.getELResolver().isReadOnly(ctx, null, this.image); + } + + public void setValue(EvaluationContext ctx, Object value) + throws ELException { + VariableMapper varMapper = ctx.getVariableMapper(); + if (varMapper != null) { + ValueExpression expr = varMapper.resolveVariable(this.image); + if (expr != null) { + expr.setValue(ctx.getELContext(), value); + return; + } + } + ctx.setPropertyResolved(false); + ctx.getELResolver().setValue(ctx, null, this.image, value); + } + + private final Object invokeTarget(EvaluationContext ctx, Object target, + Object[] paramValues) throws ELException { + if (target instanceof MethodExpression) { + MethodExpression me = (MethodExpression) target; + return me.invoke(ctx.getELContext(), paramValues); + } else if (target == null) { + throw new MethodNotFoundException("Identity '" + this.image + + "' was null and was unable to invoke"); + } else { + throw new ELException( + "Identity '" + + this.image + + "' does not reference a MethodExpression instance, returned type: " + + target.getClass().getName()); + } + } + + public Object invoke(EvaluationContext ctx, Class[] paramTypes, + Object[] paramValues) throws ELException { + return this.getMethodExpression(ctx).invoke(ctx.getELContext(), paramValues); + } + + + public MethodInfo getMethodInfo(EvaluationContext ctx, Class[] paramTypes) + throws ELException { + return this.getMethodExpression(ctx).getMethodInfo(ctx.getELContext()); + } + + private final MethodExpression getMethodExpression(EvaluationContext ctx) + throws ELException { + Object obj = null; + + // case A: ValueExpression exists, getValue which must + // be a MethodExpression + VariableMapper varMapper = ctx.getVariableMapper(); + ValueExpression ve = null; + if (varMapper != null) { + ve = varMapper.resolveVariable(this.image); + if (ve != null) { + obj = ve.getValue(ctx); + } + } + + // case B: evaluate the identity against the ELResolver, again, must be + // a MethodExpression to be able to invoke + if (ve == null) { + ctx.setPropertyResolved(false); + obj = ctx.getELResolver().getValue(ctx, null, this.image); + } + + // finally provide helpful hints + if (obj instanceof MethodExpression) { + return (MethodExpression) obj; + } else if (obj == null) { + throw new MethodNotFoundException("Identity '" + this.image + + "' was null and was unable to invoke"); + } else { + throw new ELException( + "Identity '" + + this.image + + "' does not reference a MethodExpression instance, returned type: " + + obj.getClass().getName()); + } + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstInteger.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstInteger.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstInteger.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstInteger.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,43 @@ +/* Generated By:JJTree: Do not edit this line. AstInteger.java */ + +package org.apache.el.parser; + +import java.math.BigInteger; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstInteger extends SimpleNode { + public AstInteger(int id) { + super(id); + } + + private Number number; + + protected Number getInteger() { + if (this.number == null) { + try { + this.number = new Long(this.image); + } catch (ArithmeticException e1) { + this.number = new BigInteger(this.image); + } + } + return number; + } + + public Class getType(EvaluationContext ctx) + throws ELException { + return this.getInteger().getClass(); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + return this.getInteger(); + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLessThan.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLessThan.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLessThan.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLessThan.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,31 @@ +/* Generated By:JJTree: Do not edit this line. AstLessThan.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstLessThan extends BooleanNode { + public AstLessThan(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj0 = this.children[0].getValue(ctx); + if (obj0 == null) { + return Boolean.FALSE; + } + Object obj1 = this.children[1].getValue(ctx); + if (obj1 == null) { + return Boolean.FALSE; + } + return (compare(obj0, obj1) < 0) ? Boolean.TRUE : Boolean.FALSE; + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLessThanEqual.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLessThanEqual.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLessThanEqual.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLessThanEqual.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,31 @@ +/* Generated By:JJTree: Do not edit this line. AstLessThanEqual.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: kchung $ + */ +public final class AstLessThanEqual extends BooleanNode { + public AstLessThanEqual(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj0 = this.children[0].getValue(ctx); + Object obj1 = this.children[1].getValue(ctx); + if (obj0 == obj1) { + return Boolean.TRUE; + } + if (obj0 == null || obj1 == null) { + return Boolean.FALSE; + } + return (compare(obj0, obj1) <= 0) ? Boolean.TRUE : Boolean.FALSE; + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLiteralExpression.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLiteralExpression.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLiteralExpression.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstLiteralExpression.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,48 @@ +/* Generated By:JJTree: Do not edit this line. AstLiteralExpression.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: kchung $ + */ +public final class AstLiteralExpression extends SimpleNode { + public AstLiteralExpression(int id) { + super(id); + } + + public Class getType(EvaluationContext ctx) throws ELException { + return String.class; + } + + public Object getValue(EvaluationContext ctx) throws ELException { + return this.image; + } + + public void setImage(String image) { + if (image.indexOf('\\') == -1) { + this.image = image; + return; + } + int size = image.length(); + StringBuffer buf = new StringBuffer(size); + for (int i = 0; i < size; i++) { + char c = image.charAt(i); + if (c == '\\' && i + 1 < size) { + char c1 = image.charAt(i + 1); + if (c1 == '\\' || c1 == '"' || c1 == '\'' || c1 == '#' + || c1 == '$') { + c = c1; + i++; + } + } + buf.append(c); + } + this.image = buf.toString(); + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMinus.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMinus.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMinus.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMinus.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,26 @@ +/* Generated By:JJTree: Do not edit this line. AstMinus.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.ELArithmetic; +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstMinus extends ArithmeticNode { + public AstMinus(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj0 = this.children[0].getValue(ctx); + Object obj1 = this.children[1].getValue(ctx); + return ELArithmetic.subtract(obj0, obj1); + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMod.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMod.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMod.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMod.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,26 @@ +/* Generated By:JJTree: Do not edit this line. AstMod.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.ELArithmetic; +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstMod extends ArithmeticNode { + public AstMod(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj0 = this.children[0].getValue(ctx); + Object obj1 = this.children[1].getValue(ctx); + return ELArithmetic.mod(obj0, obj1); + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMult.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMult.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMult.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstMult.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,26 @@ +/* Generated By:JJTree: Do not edit this line. AstMult.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.ELArithmetic; +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstMult extends ArithmeticNode { + public AstMult(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj0 = this.children[0].getValue(ctx); + Object obj1 = this.children[1].getValue(ctx); + return ELArithmetic.multiply(obj0, obj1); + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNegative.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNegative.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNegative.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNegative.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,68 @@ +/* Generated By:JJTree: Do not edit this line. AstNegative.java */ + +package org.apache.el.parser; + +import java.math.BigDecimal; +import java.math.BigInteger; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstNegative extends SimpleNode { + public AstNegative(int id) { + super(id); + } + + public Class getType(EvaluationContext ctx) + throws ELException { + return Number.class; + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj = this.children[0].getValue(ctx); + + if (obj == null) { + return new Long(0); + } + if (obj instanceof BigDecimal) { + return ((BigDecimal) obj).negate(); + } + if (obj instanceof BigInteger) { + return ((BigInteger) obj).negate(); + } + if (obj instanceof String) { + if (isStringFloat((String) obj)) { + return new Double(-Double.parseDouble((String) obj)); + } + return new Long(-Long.parseLong((String) obj)); + } + Class type = obj.getClass(); + if (obj instanceof Long || Long.TYPE == type) { + return new Long(-((Long) obj).longValue()); + } + if (obj instanceof Double || Double.TYPE == type) { + return new Double(-((Double) obj).doubleValue()); + } + if (obj instanceof Integer || Integer.TYPE == type) { + return new Integer(-((Integer) obj).intValue()); + } + if (obj instanceof Float || Float.TYPE == type) { + return new Float(-((Float) obj).floatValue()); + } + if (obj instanceof Short || Short.TYPE == type) { + return new Short((short) -((Short) obj).shortValue()); + } + if (obj instanceof Byte || Byte.TYPE == type) { + return new Byte((byte) -((Byte) obj).byteValue()); + } + Long num = (Long) coerceToNumber(obj, Long.class); + return new Long(-num.longValue()); + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNot.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNot.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNot.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNot.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,30 @@ +/* Generated By:JJTree: Do not edit this line. AstNot.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstNot extends SimpleNode { + public AstNot(int id) { + super(id); + } + + public Class getType(EvaluationContext ctx) + throws ELException { + return Boolean.class; + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj = this.children[0].getValue(ctx); + Boolean b = coerceToBoolean(obj); + return Boolean.valueOf(!b.booleanValue()); + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNotEqual.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNotEqual.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNotEqual.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNotEqual.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,25 @@ +/* Generated By:JJTree: Do not edit this line. AstNotEqual.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstNotEqual extends BooleanNode { + public AstNotEqual(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj0 = this.children[0].getValue(ctx); + Object obj1 = this.children[1].getValue(ctx); + return Boolean.valueOf(!equals(obj0, obj1)); + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNull.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNull.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNull.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstNull.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,28 @@ +/* Generated By:JJTree: Do not edit this line. AstNull.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstNull extends SimpleNode { + public AstNull(int id) { + super(id); + } + + public Class getType(EvaluationContext ctx) + throws ELException { + return null; + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + return null; + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstOr.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstOr.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstOr.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstOr.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,30 @@ +/* Generated By:JJTree: Do not edit this line. AstOr.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstOr extends BooleanNode { + public AstOr(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj = this.children[0].getValue(ctx); + Boolean b = coerceToBoolean(obj); + if (b.booleanValue()) { + return b; + } + obj = this.children[1].getValue(ctx); + b = coerceToBoolean(obj); + return b; + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstPlus.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstPlus.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstPlus.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstPlus.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,26 @@ +/* Generated By:JJTree: Do not edit this line. AstPlus.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.ELArithmetic; +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstPlus extends ArithmeticNode { + public AstPlus(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + Object obj0 = this.children[0].getValue(ctx); + Object obj1 = this.children[1].getValue(ctx); + return ELArithmetic.add(obj0, obj1); + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstString.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstString.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstString.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstString.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,59 @@ +/* Generated By:JJTree: Do not edit this line. AstString.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: kchung $ + */ +public final class AstString extends SimpleNode { + public AstString(int id) { + super(id); + } + + private String string; + + public String getString() { + if (this.string == null) { + this.string = this.image.substring(1, this.image.length() - 1); + } + return this.string; + } + + public Class getType(EvaluationContext ctx) + throws ELException { + return String.class; + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + return this.getString(); + } + + public void setImage(String image) { + if (image.indexOf('\\') == -1) { + this.image = image; + return; + } + int size = image.length(); + StringBuffer buf = new StringBuffer(size); + for (int i = 0; i < size; i++) { + char c = image.charAt(i); + if (c == '\\' && i + 1 < size) { + char c1 = image.charAt(i + 1); + if (c1 == '\\' || c1 == '"' || c1 == '\'' || c1 == '#' + || c1 == '$') { + c = c1; + i++; + } + } + buf.append(c); + } + this.image = buf.toString(); + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstTrue.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstTrue.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstTrue.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstTrue.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,23 @@ +/* Generated By:JJTree: Do not edit this line. AstTrue.java */ + +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstTrue extends BooleanNode { + public AstTrue(int id) { + super(id); + } + + public Object getValue(EvaluationContext ctx) + throws ELException { + return Boolean.TRUE; + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstValue.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstValue.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstValue.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/AstValue.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,139 @@ +/* Generated By:JJTree: Do not edit this line. AstValue.java */ + +package org.apache.el.parser; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import javax.el.ELException; +import javax.el.ELResolver; +import javax.el.MethodInfo; +import javax.el.PropertyNotFoundException; + +import org.apache.el.lang.EvaluationContext; +import org.apache.el.util.MessageFactory; +import org.apache.el.util.ReflectionUtil; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public final class AstValue extends SimpleNode { + + protected static class Target { + protected Object base; + + protected Object property; + } + + public AstValue(int id) { + super(id); + } + + public Class getType(EvaluationContext ctx) throws ELException { + Target t = getTarget(ctx); + ctx.setPropertyResolved(false); + return ctx.getELResolver().getType(ctx, t.base, t.property); + } + + private final Target getTarget(EvaluationContext ctx) throws ELException { + // evaluate expr-a to value-a + Object base = this.children[0].getValue(ctx); + + // if our base is null (we know there are more properites to evaluate) + if (base == null) { + throw new PropertyNotFoundException(MessageFactory.get( + "error.unreachable.base", this.children[0].getImage())); + } + + // set up our start/end + Object property = null; + int propCount = this.jjtGetNumChildren() - 1; + int i = 1; + + // evaluate any properties before our target + ELResolver resolver = ctx.getELResolver(); + if (propCount > 1) { + while (base != null && i < propCount) { + property = this.children[i].getValue(ctx); + ctx.setPropertyResolved(false); + base = resolver.getValue(ctx, base, property); + i++; + } + // if we are in this block, we have more properties to resolve, + // but our base was null + if (base == null || property == null) { + throw new PropertyNotFoundException(MessageFactory.get( + "error.unreachable.property", property)); + } + } + + property = this.children[i].getValue(ctx); + + if (property == null) { + throw new PropertyNotFoundException(MessageFactory.get( + "error.unreachable.property", this.children[i])); + } + + Target t = new Target(); + t.base = base; + t.property = property; + return t; + } + + public Object getValue(EvaluationContext ctx) throws ELException { + Object base = this.children[0].getValue(ctx); + int propCount = this.jjtGetNumChildren(); + int i = 1; + Object property = null; + ELResolver resolver = ctx.getELResolver(); + while (base != null && i < propCount) { + property = this.children[i].getValue(ctx); + if (property == null) { + return null; + } else { + ctx.setPropertyResolved(false); + base = resolver.getValue(ctx, base, property); + } + i++; + } + return base; + } + + public boolean isReadOnly(EvaluationContext ctx) throws ELException { + Target t = getTarget(ctx); + ctx.setPropertyResolved(false); + return ctx.getELResolver().isReadOnly(ctx, t.base, t.property); + } + + public void setValue(EvaluationContext ctx, Object value) + throws ELException { + Target t = getTarget(ctx); + ctx.setPropertyResolved(false); + ctx.getELResolver().setValue(ctx, t.base, t.property, value); + } + + public MethodInfo getMethodInfo(EvaluationContext ctx, Class[] paramTypes) + throws ELException { + Target t = getTarget(ctx); + Method m = ReflectionUtil.getMethod(t.base, t.property, paramTypes); + return new MethodInfo(m.getName(), m.getReturnType(), m + .getParameterTypes()); + } + + public Object invoke(EvaluationContext ctx, Class[] paramTypes, + Object[] paramValues) throws ELException { + Target t = getTarget(ctx); + Method m = ReflectionUtil.getMethod(t.base, t.property, paramTypes); + Object result = null; + try { + result = m.invoke(t.base, (Object[]) paramValues); + } catch (IllegalAccessException iae) { + throw new ELException(iae); + } catch (InvocationTargetException ite) { + throw new ELException(ite.getCause()); + } + return result; + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/BooleanNode.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/BooleanNode.java?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/BooleanNode.java (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/BooleanNode.java Wed Jan 25 06:37:16 2006 @@ -0,0 +1,38 @@ +/* + * Copyright 1999,2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.el.parser; + +import javax.el.ELException; + +import org.apache.el.lang.EvaluationContext; + + +/** + * @author Jacob Hookom [EMAIL PROTECTED] + * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ + */ +public class BooleanNode extends SimpleNode { + /** + * @param i + */ + public BooleanNode(int i) { + super(i); + } + public Class getType(EvaluationContext ctx) + throws ELException { + return Boolean.class; + } +} Added: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/ELParser.html URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/ELParser.html?rev=372228&view=auto ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/ELParser.html (added) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/ELParser.html Wed Jan 25 06:37:16 2006 @@ -0,0 +1,207 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> +<HTML> +<HEAD> +<TITLE>BNF for ELParser.jj</TITLE> +</HEAD> +<BODY> +<H1 ALIGN=CENTER>BNF for ELParser.jj</H1> +<H2 ALIGN=CENTER>NON-TERMINALS</H2> +<TABLE> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod1">CompositeExpression</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod2">DeferredExpression</A> | <A HREF="#prod3">DynamicExpression</A> | <A HREF="#prod4">LiteralExpression</A> )* <EOF></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod4">LiteralExpression</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LITERAL_EXPRESSION></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod2">DeferredExpression</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><START_DEFERRED_EXPRESSION> <A HREF="#prod5">Expression</A> <END_EXPRESSION></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod3">DynamicExpression</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><START_DYNAMIC_EXPRESSION> <A HREF="#prod5">Expression</A> <END_EXPRESSION></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod5">Expression</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod6">Choice</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod6">Choice</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod7">Or</A> ( <QUESTIONMARK> <A HREF="#prod7">Or</A> <COLON> <A HREF="#prod6">Choice</A> )*</TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod7">Or</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod8">And</A> ( ( <OR0> | <OR1> ) <A HREF="#prod8">And</A> )*</TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod8">And</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod9">Equality</A> ( ( <AND0> | <AND1> ) <A HREF="#prod9">Equality</A> )*</TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod9">Equality</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod10">Compare</A> ( ( ( <EQ0> | <EQ1> ) <A HREF="#prod10">Compare</A> ) | ( ( <NE0> | <NE1> ) <A HREF="#prod10">Compare</A> ) )*</TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod10">Compare</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod11">Math</A> ( ( ( <LT0> | <LT1> ) <A HREF="#prod11">Math</A> ) | ( ( <GT0> | <GT1> ) <A HREF="#prod11">Math</A> ) | ( ( <LE0> | <LE1> ) <A HREF="#prod11">Math</A> ) | ( ( <GE0> | <GE1> ) <A HREF="#prod11">Math</A> ) )*</TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod11">Math</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod12">Multiplication</A> ( ( <PLUS> <A HREF="#prod12">Multiplication</A> ) | ( <MINUS> <A HREF="#prod12">Multiplication</A> ) )*</TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod12">Multiplication</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod13">Unary</A> ( ( <MULT> <A HREF="#prod13">Unary</A> ) | ( <DIV> <A HREF="#prod13">Unary</A> ) | ( ( <MOD0> | <MOD1> ) <A HREF="#prod13">Unary</A> ) )*</TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod13">Unary</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><MINUS> <A HREF="#prod13">Unary</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <NOT0> | <NOT1> ) <A HREF="#prod13">Unary</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><EMPTY> <A HREF="#prod13">Unary</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod14">Value</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod14">Value</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod15">ValuePrefix</A> ( <A HREF="#prod16">ValueSuffix</A> )* )</TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod15">ValuePrefix</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod17">Literal</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">NonLiteral</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod16">ValueSuffix</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod19">DotSuffix</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod20">BracketSuffix</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod19">DotSuffix</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><DOT> <IDENTIFIER></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod20">BracketSuffix</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LBRACK> <A HREF="#prod5">Expression</A> <RBRACK></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod18">NonLiteral</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LPAREN> <A HREF="#prod5">Expression</A> <RPAREN></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod21">Function</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod22">Identifier</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod22">Identifier</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><IDENTIFIER></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod21">Function</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><IDENTIFIER> ( <FUNCTIONSUFFIX> )? <LPAREN> ( <A HREF="#prod5">Expression</A> ( <COMMA> <A HREF="#prod5">Expression</A> )* )? <RPAREN></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod17">Literal</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod23">Boolean</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod24">FloatingPoint</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod25">Integer</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod26">String</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod27">Null</A></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod23">Boolean</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><TRUE></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>|</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><FALSE></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod24">FloatingPoint</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><FLOATING_POINT_LITERAL></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod25">Integer</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><INTEGER_LITERAL></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod26">String</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><STRING_LITERAL></TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod27">Null</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><NULL></TD> +</TR> +</TABLE> +</BODY> +</HTML> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]