public class PrintTree implements ASTVisitor { private int offset; private final static int INDENT_STEP = 3; public PrintTree() { offset = 0; } private void Print(String printval) { int i; for (i=0; i < offset * INDENT_STEP; i++) { System.out.print(" "); } System.out.println(printval); } public Object VisitIntegerLiteral(ASTIntegerLiteral literal) { Print(Integer.toString(literal.value())); return null; } public Object VisitOperatorExpression(ASTOperatorExpression opexpr) { Print(ASTOperatorExpression.Names[opexpr.operator()]); offset++; opexpr.left().accept(this); opexpr.right().accept(this); offset--; return null; } }