Move interpret() to each statement/expression instead of using a Visitor