/Users/lyon/j4p/src/javassist/compiler/ast/ASTree.java
|
1 /*
2 * Javassist, a Java-bytecode translator toolkit.
3 * Copyright (C) 1999-2003 Shigeru Chiba. All Rights Reserved.
4 *
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License. Alternatively, the contents of this file may be used under
8 * the terms of the GNU Lesser General Public License Version 2.1 or later.
9 *
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
20 import javassist.compiler.CompileError;
21
22 /**
23 * Abstract Syntax Tree. An ASTree object represents a node of
24 * a binary tree. If the node is a leaf node, both <code>getLeft()</code>
25 * and <code>getRight()</code> returns null.
26 */
27 public abstract class ASTree implements Serializable {
28 public ASTree getLeft() {
29 return null;
30 }
31
32 public ASTree getRight() {
33 return null;
34 }
35
36 public void setLeft(ASTree _left) {
37 }
38
39 public void setRight(ASTree _right) {
40 }
41
42 /**
43 * Is a method for the visitor pattern. It calls
44 * <code>atXXX()</code> on the given visitor, where
45 * <code>XXX</code> is the class name of the node object.
46 */
47 public abstract void accept(Visitor v) throws CompileError;
48
49 public String toString() {
50 StringBuffer sbuf = new StringBuffer();
51 sbuf.append('<');
52 sbuf.append(getTag());
53 sbuf.append('>');
54 return sbuf.toString();
55 }
56
57 /**
58 * Returns the type of this node. This method is used by
59 * <code>toString()</code>.
60 */
61 protected String getTag() {
62 String name = getClass().getName();
63 return name.substring(name.lastIndexOf('.') + 1);
64 }
65 }
66