indexed by source hash */ private array $sourceHashToAst = []; public function __construct(private Parser $wrappedParser) { } public function parse(string $code, ErrorHandler|null $errorHandler = null): array|null { // note: this code is mathematically buggy by default, as we are using a hash to identify // cache entries. The string length is added to further reduce likeliness (although // already imperceptible) of key collisions. // In the "real world", this code will work just fine. $hash = sprintf('%s:%d', hash('sha256', $code), strlen($code)); if (array_key_exists($hash, $this->sourceHashToAst)) { /** @var Node\Stmt[]|null $ast */ $ast = unserialize($this->sourceHashToAst[$hash]); return $ast; } $ast = $this->wrappedParser->parse($code, $errorHandler); $this->sourceHashToAst[$hash] = serialize($ast); return $ast; } } __halt_compiler();----SIGNATURE:----nEfTPpDgpqWlB8cA2r4LP+FlJ5ThN78TKX6yxhvSepp7FQZqWIM+zQNWhUWfWiuB7ZzYOWBn1ZPMcfk67cEijCVV2D1r+GpBbw+TGdLfNyrYgVIKf18XE84jO3EF1p56g6AXdCQWSBjhhyf4R3uIqwaFDr/munlIk9lLsWYd45yiQFgc/KlpFwk2CK6xwgcH/F1faQVQo0La6NLTUigYki0cMoZMa2L1xrxIWei9UHQcDMnw3gCy+HEv4VWQpgaM/ThQ4A0yk0pl2nGoBwjU74oy3fcxjVljC8Gne4QBmTbKvI4NrSzl+5EV0lo3FDkKYB6kYo6307kEHJwTEPyorXS8y5Z7X/oEdnJcmEzfxY9rnIq+K7DP6jBkDbDpvk47+kHYfUZmKPcQeM/ziUf87QJlnDhTHNhf4qTesW58tsEd9Hz5nY2m0mBfmtc6CsRF1Q9CyOfjGyIZFBUTCC4JYfV/kjlRIvcbSw0tuEiPUs/CgZEjEMWAupgE871JVPkoyHEiIonVd5Bo5iVnTCcrkz1VmjCQpXslLeyMj8/aH8LihHYKzPkqWmNNw7kZnBsdFWHpToYhmrU8r8MaatfG7yOQRMNoHVai/AS5j53Mh7UjzbPADCT6vav+mM6YD6w6c+7VtHJDDZy3kaCwognyglc27UcYjjEMlcEXlkh0vjY=----ATTACHMENT:----NzU4MzM1OTMxMDc1MTYxMSA1NzU5MTg0NDEwNTcxOTIzIDg4OTUwNjExNTU0ODU5Nw==