<?php /* * This file is part of Psy Shell. * * (c) 2012-2023 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Psy; use PhpParser\Parser; use PhpParser\ParserFactory as OriginalParserFactory; /** * Parser factory to abstract over PHP parser library versions. */ class ParserFactory { const ONLY_PHP5 = 'ONLY_PHP5'; const ONLY_PHP7 = 'ONLY_PHP7'; const PREFER_PHP5 = 'PREFER_PHP5'; const PREFER_PHP7 = 'PREFER_PHP7'; /** * Possible kinds of parsers for the factory, from PHP parser library. * * @return string[] */ public static function getPossibleKinds(): array { return ['ONLY_PHP5', 'ONLY_PHP7', 'PREFER_PHP5', 'PREFER_PHP7']; } /** * Default kind (if supported, based on current interpreter's version). * * @return string|null */ public function getDefaultKind() { return static::ONLY_PHP7; } /** * New parser instance with given kind. * * @param string|null $kind One of class constants (only for PHP parser 2.0 and above) */ public function createParser($kind = null): Parser { $originalFactory = new OriginalParserFactory(); $kind = $kind ?: $this->getDefaultKind(); if (!\in_array($kind, static::getPossibleKinds())) { throw new \InvalidArgumentException('Unknown parser kind'); } $parser = $originalFactory->create(\constant(OriginalParserFactory::class.'::'.$kind)); return $parser; } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
CodeCleaner | Folder | 0755 |
|
|
Command | Folder | 0755 |
|
|
Exception | Folder | 0755 |
|
|
ExecutionLoop | Folder | 0755 |
|
|
Formatter | Folder | 0755 |
|
|
Input | Folder | 0755 |
|
|
Output | Folder | 0755 |
|
|
Readline | Folder | 0755 |
|
|
Reflection | Folder | 0755 |
|
|
Sudo | Folder | 0755 |
|
|
TabCompletion | Folder | 0755 |
|
|
Util | Folder | 0755 |
|
|
VarDumper | Folder | 0755 |
|
|
VersionUpdater | Folder | 0755 |
|
|
CodeCleaner.php | File | 11.86 KB | 0644 |
|
ConfigPaths.php | File | 11.39 KB | 0644 |
|
Configuration.php | File | 54.35 KB | 0644 |
|
Context.php | File | 7.71 KB | 0644 |
|
ContextAware.php | File | 567 B | 0644 |
|
EnvInterface.php | File | 443 B | 0644 |
|
ExecutionClosure.php | File | 2.25 KB | 0644 |
|
ExecutionLoopClosure.php | File | 2.81 KB | 0644 |
|
ParserFactory.php | File | 1.58 KB | 0644 |
|
Shell.php | File | 47.2 KB | 0644 |
|
Sudo.php | File | 5.28 KB | 0644 |
|
SuperglobalsEnv.php | File | 620 B | 0644 |
|
functions.php | File | 16.51 KB | 0644 |
|