/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