01: /*
02: * Javassist, a Java-bytecode translator toolkit.
03: * Copyright (C) 1999-2006 Shigeru Chiba. All Rights Reserved.
04: *
05: * The contents of this file are subject to the Mozilla Public License Version
06: * 1.1 (the "License"); you may not use this file except in compliance with
07: * the License. Alternatively, the contents of this file may be used under
08: * the terms of the GNU Lesser General Public License Version 2.1 or later.
09: *
10: * Software distributed under the License is distributed on an "AS IS" basis,
11: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12: * for the specific language governing rights and limitations under the
13: * License.
14: */
15:
16: package javassist.compiler.ast;
17:
18: import java.io.Serializable;
19: import javassist.compiler.CompileError;
20:
21: /**
22: * Abstract Syntax Tree. An ASTree object represents a node of
23: * a binary tree. If the node is a leaf node, both <code>getLeft()</code>
24: * and <code>getRight()</code> returns null.
25: */
26: public abstract class ASTree implements Serializable {
27: public ASTree getLeft() {
28: return null;
29: }
30:
31: public ASTree getRight() {
32: return null;
33: }
34:
35: public void setLeft(ASTree _left) {
36: }
37:
38: public void setRight(ASTree _right) {
39: }
40:
41: /**
42: * Is a method for the visitor pattern. It calls
43: * <code>atXXX()</code> on the given visitor, where
44: * <code>XXX</code> is the class name of the node object.
45: */
46: public abstract void accept(Visitor v) throws CompileError;
47:
48: public String toString() {
49: StringBuffer sbuf = new StringBuffer();
50: sbuf.append('<');
51: sbuf.append(getTag());
52: sbuf.append('>');
53: return sbuf.toString();
54: }
55:
56: /**
57: * Returns the type of this node. This method is used by
58: * <code>toString()</code>.
59: */
60: protected String getTag() {
61: String name = getClass().getName();
62: return name.substring(name.lastIndexOf('.') + 1);
63: }
64: }
|