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;
}
}