• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Javassist, a Java-bytecode translator toolkit.
3  * Copyright (C) 1999-2007 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 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 {
getLeft()27     public ASTree getLeft() { return null; }
28 
getRight()29     public ASTree getRight() { return null; }
30 
setLeft(ASTree _left)31     public void setLeft(ASTree _left) {}
32 
setRight(ASTree _right)33     public void setRight(ASTree _right) {}
34 
35     /**
36      * Is a method for the visitor pattern.  It calls
37      * <code>atXXX()</code> on the given visitor, where
38      * <code>XXX</code> is the class name of the node object.
39      */
accept(Visitor v)40     public abstract void accept(Visitor v) throws CompileError;
41 
toString()42     public String toString() {
43         StringBuffer sbuf = new StringBuffer();
44         sbuf.append('<');
45         sbuf.append(getTag());
46         sbuf.append('>');
47         return sbuf.toString();
48     }
49 
50     /**
51      * Returns the type of this node.  This method is used by
52      * <code>toString()</code>.
53      */
getTag()54     protected String getTag() {
55         String name = getClass().getName();
56         return name.substring(name.lastIndexOf('.') + 1);
57     }
58 }
59