public class PrintVisitor extends TreeVisitor {
    void visitStatementList(StatementTree first,
			    StatementTreeList rest) {
	first.Accept(this);
	if (rest != null) {
	    System.out.println(" ; ");
	    rest.Accept(this);
	}
    }
    void visitTurnNode(int degrees) {
	System.out.println("turn "+degrees+" degrees");
    }
    void visitForwardNode(int distance) {
	System.out.println("forward "+distance);
    }
    void visitTimesNode(int count, StatementTree body) {
	System.out.println("times "+count+" do "); 
	System.out.println("{");
	body.Accept(this);
	System.out.println("}");
    }
    void visitBeginNode(StatementTreeList body) {
	body.Accept(this);
    }
}
