tokenizer = $tokenizer; $this->reader = $reader; $this->eval = $eval; $this->printer = $printer; } public function rep(string $input, Env $env): void { $tokens = $this->tokenizer->tokenize($input); $expressions = $this->reader->read($tokens); $results = $this->eval->eval($expressions, $env); $this->printer->print($results); } }