You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ASTree.java 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. package javassist.compiler.ast;
  16. import java.io.Serializable;
  17. import javassist.compiler.CompileError;
  18. /**
  19. * Abstract Syntax Tree. An ASTree object represents a node of
  20. * a binary tree. If the node is a leaf node, both <code>getLeft()</code>
  21. * and <code>getRight()</code> returns null.
  22. */
  23. public abstract class ASTree implements Serializable {
  24. public ASTree getLeft() { return null; }
  25. public ASTree getRight() { return null; }
  26. public void setLeft(ASTree _left) {}
  27. public void setRight(ASTree _right) {}
  28. /**
  29. * Is a method for the visitor pattern. It calls
  30. * <code>atXXX()</code> on the given visitor, where
  31. * <code>XXX</code> is the class name of the node object.
  32. */
  33. public abstract void accept(Visitor v) throws CompileError;
  34. public String toString() {
  35. StringBuffer sbuf = new StringBuffer();
  36. sbuf.append('<');
  37. sbuf.append(getTag());
  38. sbuf.append('>');
  39. return sbuf.toString();
  40. }
  41. /**
  42. * Returns the type of this node. This method is used by
  43. * <code>toString()</code>.
  44. */
  45. protected String getTag() {
  46. String name = getClass().getName();
  47. return name.substring(name.lastIndexOf('.') + 1);
  48. }
  49. }