1<?php declare(strict_types=1);
2
3namespace PhpParser\Lexer\TokenEmulator;
4
5/** @internal */
6abstract class TokenEmulator
7{
8    abstract public function getPhpVersion(): string;
9
10    abstract public function isEmulationNeeded(string $code): bool;
11
12    /**
13     * @return array Modified Tokens
14     */
15    abstract public function emulate(string $code, array $tokens): array;
16
17    /**
18     * @return array Modified Tokens
19     */
20    abstract public function reverseEmulate(string $code, array $tokens): array;
21
22    public function preprocessCode(string $code, array &$patches): string {
23        return $code;
24    }
25}
26