mirror of
https://github.com/phabelio/PHP-Parser.git
synced 2024-12-02 17:38:19 +01:00
39b046007d
Only determine needed emulators based on PHP version once, and add an adaptor that allows treating forward and reverse emulation the same. Previously the isEmulationNeeded() check was too conservative, as it also considered emulators that are not relevant for the version. Though possibly that check should just be dropped altogether.
32 lines
892 B
PHP
32 lines
892 B
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace PhpParser\Lexer\TokenEmulator;
|
|
|
|
/**
|
|
* Reverses emulation direction of the inner emulator.
|
|
*/
|
|
final class ReverseEmulator implements TokenEmulatorInterface
|
|
{
|
|
/** @var TokenEmulatorInterface Inner emulator */
|
|
private $emulator;
|
|
|
|
public function __construct(TokenEmulatorInterface $emulator) {
|
|
$this->emulator = $emulator;
|
|
}
|
|
|
|
public function getPhpVersion(): string {
|
|
return $this->emulator->getPhpVersion();
|
|
}
|
|
|
|
public function isEmulationNeeded(string $code): bool {
|
|
return $this->emulator->isEmulationNeeded($code);
|
|
}
|
|
|
|
public function emulate(string $code, array $tokens): array {
|
|
return $this->emulator->reverseEmulate($code, $tokens);
|
|
}
|
|
|
|
public function reverseEmulate(string $code, array $tokens): array {
|
|
return $this->emulator->emulate($code, $tokens);
|
|
}
|
|
} |