1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jexl.parser;
18
19 import org.apache.commons.jexl.JexlContext;
20 import org.apache.commons.jexl.util.Coercion;
21
22 /***
23 * A while loop. Syntax: while ( expression ) statement
24 *
25 * @author Dion Gillard
26 * @since 1.1
27 */
28 public class ASTWhileStatement extends SimpleNode {
29 /***
30 * Create the node given an id.
31 *
32 * @param id node id.
33 */
34 public ASTWhileStatement(int id) {
35 super(id);
36 }
37
38 /***
39 * Create a node with the given parser and id.
40 *
41 * @param p a parser.
42 * @param id node id.
43 */
44 public ASTWhileStatement(Parser p, int id) {
45 super(p, id);
46 }
47
48 /*** {@inheritDoc} */
49 public Object jjtAccept(ParserVisitor visitor, Object data) {
50 return visitor.visit(this, data);
51 }
52
53 /*** {@inheritDoc} */
54 public Object value(JexlContext jc) throws Exception {
55 Object result = null;
56
57 SimpleNode expressionNode = (SimpleNode) jjtGetChild(0);
58 while (Coercion.coerceBoolean(expressionNode.value(jc)).booleanValue()) {
59
60 result = ((SimpleNode) jjtGetChild(1)).value(jc);
61 }
62
63 return result;
64 }
65 }