• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Javassist, a Java-bytecode translator toolkit.
3  * Copyright (C) 1999- 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  * or the Apache License Version 2.0.
10  *
11  * Software distributed under the License is distributed on an "AS IS" basis,
12  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13  * for the specific language governing rights and limitations under the
14  * License.
15  */
16 
17 package javassist.compiler.ast;
18 
19 import java.io.Serializable;
20 
21 import javassist.compiler.CompileError;
22 
23 /**
24  * Abstract Syntax Tree.  An ASTree object represents a node of
25  * a binary tree.  If the node is a leaf node, both <code>getLeft()</code>
26  * and <code>getRight()</code> returns null.
27  */
28 public abstract class ASTree implements Serializable {
29     /** default serialVersionUID */
30     private static final long serialVersionUID = 1L;
31 
getLeft()32     public ASTree getLeft() { return null; }
33 
getRight()34     public ASTree getRight() { return null; }
35 
setLeft(ASTree _left)36     public void setLeft(ASTree _left) {}
37 
setRight(ASTree _right)38     public void setRight(ASTree _right) {}
39 
40     /**
41      * Is a method for the visitor pattern.  It calls
42      * <code>atXXX()</code> on the given visitor, where
43      * <code>XXX</code> is the class name of the node object.
44      */
accept(Visitor v)45     public abstract void accept(Visitor v) throws CompileError;
46 
47     @Override
toString()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      */
getTag()60     protected String getTag() {
61         String name = getClass().getName();
62         return name.substring(name.lastIndexOf('.') + 1);
63     }
64 }
65