1: | <?php declare(strict_types=1); |
2: | |
3: | namespace PhpParser; |
4: | |
5: | use PhpParser\Parser\Php7; |
6: | use PhpParser\Parser\Php8; |
7: | |
8: | class ParserFactory { |
9: | |
10: | |
11: | |
12: | |
13: | |
14: | public function createForVersion(PhpVersion $version): Parser { |
15: | if ($version->isHostVersion()) { |
16: | $lexer = new Lexer(); |
17: | } else { |
18: | $lexer = new Lexer\Emulative($version); |
19: | } |
20: | if ($version->id >= 80000) { |
21: | return new Php8($lexer, $version); |
22: | } |
23: | return new Php7($lexer, $version); |
24: | } |
25: | |
26: | |
27: | |
28: | |
29: | |
30: | |
31: | public function createForNewestSupportedVersion(): Parser { |
32: | return $this->createForVersion(PhpVersion::getNewestSupported()); |
33: | } |
34: | |
35: | |
36: | |
37: | |
38: | |
39: | public function createForHostVersion(): Parser { |
40: | return $this->createForVersion(PhpVersion::getHostVersion()); |
41: | } |
42: | } |
43: | |