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