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 { 27 public ASTree getLeft() { return null; } 28 29 public ASTree getRight() { return null; } 30 31 public void setLeft(ASTree _left) {} 32 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 */ 40 public abstract void accept(Visitor v) throws CompileError; 41 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 */ 54 protected String getTag() { 55 String name = getClass().getName(); 56 return name.substring(name.lastIndexOf('.') + 1); 57 } 58 } 59