getLine(), $parser->getStream()->getSourceContext()); } $right = $parser->parseExpression(InfixAssociativity::Left === $this->getAssociativity() ? $this->getPrecedence() + 1 : $this->getPrecedence()); $right = match ($this->getName()) { '=' => $right, default => throw new \LogicException(\sprintf('Unknown operator: %s.', $this->getName())), }; if ($left instanceof ArrayExpression) { return new DestructuringSetBinary($left, $right, $token->getLine()); } else { return new SetBinary($left, $right, $token->getLine()); } } public function getDescription(): string { return 'Assignment operator'; } }