/** * @param Symbol $symbol * * @return Closure */ public function advance(Symbol $symbol) { $closure = new self([]); foreach ($this->states as $state) { $closure->addStates($state->getReachableStatesBySymbol($symbol)); } $closure->addReachableStatesByEpsilonSymbol(); return $closure; }