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 PreVisitOperatorExpression(ASTOperatorExpression opexpr) { Print(ASTOperatorExpression.Names[opexpr.operator()]); offset++; opexpr.left().Accept(this); opexpr.right().Accept(this); ofset--; return null; } }