tokenizer = $tokenizer; $this->reader = $reader; $this->eval = $eval; $this->printer = $printer; $this->env = $env; } public function rep(string $input, bool $printReadable): void { $tokens = $this->tokenizer->tokenize($input); $expr = $this->reader->read($tokens); $result = $this->eval->eval($expr, $this->env); $this->printer->print($result, $printReadable); } }