1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.jexl.parser;
17
18 import org.apache.commons.jexl.util.Coercion;
19 import org.apache.commons.jexl.JexlContext;
20
21 /***
22 * /
23 *
24 * @author <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a>
25 * @version $Id: ASTDivNode.java,v 1.4 2004/02/28 13:45:20 yoavs Exp $
26 */
27 public class ASTDivNode extends SimpleNode
28 {
29 public ASTDivNode(int id)
30 {
31 super(id);
32 }
33
34 public ASTDivNode(Parser p, int id)
35 {
36 super(p, id);
37 }
38
39
40 /*** Accept the visitor. **/
41 public Object jjtAccept(ParserVisitor visitor, Object data)
42 {
43 return visitor.visit(this, data);
44 }
45
46 public Object value(JexlContext jc)
47 throws Exception
48 {
49 Object left = ((SimpleNode) jjtGetChild(0)).value(jc);
50 Object right = ((SimpleNode) jjtGetChild(1)).value(jc);
51
52
53
54
55 if (left == null && right == null)
56 return new Integer(0);
57
58 Double l = Coercion.coerceDouble(left);
59 Double r = Coercion.coerceDouble(right);
60
61
62
63
64 if (r.doubleValue() == 0.0)
65 return new Double(0.0);
66
67 return new Double(l.doubleValue() / r.doubleValue());
68
69 }
70 }