1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jexl3.parser;
18
19 import org.apache.commons.jexl3.internal.Debugger;
20
21
22
23
24 public final class ASTArrayLiteral extends JexlNode {
25
26
27
28 private static final long serialVersionUID = 1L;
29
30 private boolean constant = false;
31
32 ASTArrayLiteral(final int id) {
33 super(id);
34 }
35
36 ASTArrayLiteral(final Parser p, final int id) {
37 super(p, id);
38 }
39
40 @Override
41 public String toString() {
42 final Debugger dbg = new Debugger();
43 return dbg.data(this);
44 }
45
46 @Override
47 protected boolean isConstant(final boolean literal) {
48 return constant;
49 }
50
51 @Override
52 public void jjtClose() {
53 constant = true;
54 for (int c = 0; c < jjtGetNumChildren() && constant; ++c) {
55 final JexlNode child = jjtGetChild(c);
56 if (child instanceof ASTReference) {
57 constant = child.isConstant(true);
58 } else if (!child.isConstant()) {
59 constant = false;
60 }
61 }
62 }
63
64 @Override
65 public Object jjtAccept(final ParserVisitor visitor, final Object data) {
66 return visitor.visit(this, data);
67 }
68 }