1
2
3 package org.codehaus.aspectwerkz.expression.ast;
4
5 public class SimpleNode implements Node {
6 protected Node parent;
7
8 protected Node[] children;
9
10 protected int id;
11
12 protected ExpressionParser parser;
13
14 public SimpleNode(int i) {
15 id = i;
16 }
17
18 public SimpleNode(ExpressionParser p, int i) {
19 this(i);
20 parser = p;
21 }
22
23 public void jjtOpen() {
24 }
25
26 public void jjtClose() {
27 }
28
29 public void jjtSetParent(Node n) {
30 parent = n;
31 }
32
33 public Node jjtGetParent() {
34 return parent;
35 }
36
37 public void jjtAddChild(Node n, int i) {
38 if (children == null) {
39 children = new Node[i + 1];
40 } else if (i >= children.length) {
41 Node c[] = new Node[i + 1];
42 System.arraycopy(children, 0, c, 0, children.length);
43 children = c;
44 }
45 children[i] = n;
46 }
47
48 public Node jjtGetChild(int i) {
49 return children[i];
50 }
51
52 public int jjtGetNumChildren() {
53 return (children == null) ? 0 : children.length;
54 }
55
56 /***
57 * Accept the visitor. *
58 */
59 public Object jjtAccept(ExpressionParserVisitor visitor, Object data) {
60 return visitor.visit(this, data);
61 }
62
63 /***
64 * Accept the visitor. *
65 */
66 public Object childrenAccept(ExpressionParserVisitor visitor, Object data) {
67 if (children != null) {
68 for (int i = 0; i < children.length; ++i) {
69 children[i].jjtAccept(visitor, data);
70 }
71 }
72 return data;
73 }
74
75
76
77
78
79
80
81 public String toString() {
82 return ExpressionParserTreeConstants.jjtNodeName[id];
83 }
84
85 public String toString(String prefix) {
86 return prefix + toString();
87 }
88
89
90
91
92
93 public void dump(String prefix) {
94 System.out.println(toString(prefix));
95 if (children != null) {
96 for (int i = 0; i < children.length; ++i) {
97 SimpleNode n = (SimpleNode) children[i];
98 if (n != null) {
99 n.dump(prefix + " ");
100 }
101 }
102 }
103 }
104 }
105